Algos
Gradiente Dinâmico
Estratégia de grade de uma perna que se adapta ao movimento do mercado. Todos os parâmetros do Gradiente Linear se aplicam, mais um bloco de feedback ("retroalimentação") que recalibra as entradas para acompanhar o preço atual.
Quando usar
- Você quer execução em escada que acompanhe um mercado em tendência, em vez de lutar contra ele.
- Está fornecendo liquidez e precisa que a escada acompanhe o mid em tempo real.
- Espera que o mercado percorra a sua faixa ao longo da sessão e quer cobertura contínua.
Início rápido
from investflex import AsyncInvestflexClient
from investflex.models.algos import GradDynamic
from investflex.models.common import RetroalimentType, SelectStopByPrice, Side
g = GradDynamic(
name="winq-dyn-grid",
init_time="09:00:00",
end_time="17:00:00",
# grade de entrada (igual ao grdlin)
order_quantity=1,
entrance_price=4000.0,
increment_price_step_entrance=20.0,
number_of_entrances=10,
increment_price_stop_gain=20.0,
number_of_min_price_increments_to_start=5,
use_start_when_cross="N",
select_stop_by_price1=SelectStopByPrice.AUTOMATIC,
stop_by_price1=3000.0,
select_stop_by_price2=SelectStopByPrice.MANUAL,
stop_by_price2=6000.0,
stop_loss_finance=100.0,
use_stop_gain_global_finance="Y",
stop_gain_global_finance=100.0,
send_stop_loss_on_end="Y",
use_preservation="Y",
preservation_start_trigger=80.0,
preservation_step=10.0,
preservation_percentual=20.0,
# bloco dinâmico
use_retroaliment="Y",
retroaliment_time_window=60,
retroaliment_type=RetroalimentType.STDDEV_COUNT,
retroaliment_param1=1.0,
maximum_zero_time_window=60,
zerar_stop_loss="Y",
# perna (sem quantidade aqui)
symbol="WINQ19",
side=Side.BUY,
account="YOUR_ACCOUNT",
)
async with AsyncInvestflexClient.from_env() as client:
handle = await client.algos.create(g)
print(handle.clord_id, handle.status.name)
Parâmetros
Todos os parâmetros do Gradiente Linear se aplicam. Campos adicionais:
Estratégia — bloco dinâmico
| Campo | Tipo | Obrigatório | Editável | Observações |
|---|---|---|---|---|
use_retroaliment |
"Y" / "N" |
não | não | Habilita o controle de feedback que reancora a grade. |
retroaliment_time_window |
int | condicional | sim | Segundos de histórico de preço usados pelo algoritmo de feedback. |
retroaliment_type |
RetroalimentType |
condicional | sim | Algoritmo de feedback: RetroalimentType.STDDEV_COUNT (padrão), PCT_HIST_MINMAX, VALUE_HIST_MINMAX, PCT_LAST_TRADE, VALUE_LAST_TRADE. |
retroaliment_param1 |
número | condicional | sim | Parâmetro de ajuste específico do algoritmo. |
maximum_zero_time_window |
int | não | sim | Segundos de preço estagnado tolerados antes de forçar a grade a zerar a posição. |
zerar_stop_loss |
"Y" / "N" |
não | não | Zera a posição residual quando um stop-loss dispara. |
Editando um Gradiente Dinâmico em execução
await client.algos.edit(
handle.clord_id,
EntrancePrice=4000,
NumberOfEntrances=10,
OrderQuantity=1,
MaximumZeroTimeWindow=60,
RetroalimentParam1=1,
RetroalimentTimeWindow=60,
RetroalimentType=1,
StopLossFinance=100,
StopGainGlobalFinance=100,
)
Além do conjunto editável do grdlin, MaximumZeroTimeWindow,
RetroalimentParam1, RetroalimentTimeWindow e RetroalimentType
também são editáveis.
Comandos de ciclo de vida
await client.algos.commands.cancel(handle.clord_id)
await client.algos.commands.suspend(handle.clord_id)
await client.algos.commands.resume(handle.clord_id)
Notas de comportamento
- Com
use_retroaliment="Y"a engine reancora a grade de entrada conforme o preço de referência se desloca, usando os últimosretroaliment_time_windowsegundos de negócios. maximum_zero_time_windowé uma proteção: se o mercado fica silencioso, o algo zera a posição aberta para evitar exposição estagnada.zerar_stop_loss="Y"garante que qualquer quantidade residual seja fechada quando um stop-loss dispara (senão o residual ficaria passivo no livro).- Os demais comportamentos seguem o Gradiente Linear.