Algos
Flex Order
Uma ordem flexível de uma perna com lógica rica de entrada / reversão / stop: você escolhe o modo de entrada (mercado, start, stop, limite, leilão), o comportamento de reversão (fim de janela, leilão, somente em ganho/perda, sem reversão) e o tipo de stop (ganho & perda, trailing, parcial).
Quando usar
- Você quer take-profit e stop-loss anexados a uma única ordem, sem gerenciar manualmente.
- Precisa deixar uma posição protegida quando não pode acompanhar o mercado.
- Quer lógica de saída simétrica (incluindo níveis de realização parcial) embutida na própria ordem.
Início rápido
from investflex import AsyncInvestflexClient
from investflex.models.algos import FlexOrder
from investflex.models.common import (
CustomOrdType,
ReversionType,
Side,
StopTypeOCO,
TriggerEntryType,
)
fx = FlexOrder(
name="winq-flex",
init_time="09:00:00",
end_time="17:00:00",
# entrada
order_quantity=1,
custom_ord_type=CustomOrdType.MARKET,
# reversão + stops
reversion_type=ReversionType.END_TIME_OR_CANCEL,
stop_type=StopTypeOCO.GAIN_LOSS,
trigger_entry_type=TriggerEntryType.POINTS,
stop_loss=5,
stop_gain=5,
# perna
symbol="WINQ19",
side=Side.BUY,
account="YOUR_ACCOUNT",
)
async with AsyncInvestflexClient.from_env() as client:
handle = await client.algos.create(fx)
print(handle.clord_id, handle.status.name)
Parâmetros
Estratégia — entrada
| Campo | Tipo | Obrigatório | Editável | Observações |
|---|---|---|---|---|
order_quantity |
int | sim | sim | Quantidade total (> 0). |
custom_ord_type |
CustomOrdType |
sim | não | Modo de entrada: CustomOrdType.MARKET, CustomOrdType.START, CustomOrdType.STOP, CustomOrdType.LIMIT, CustomOrdType.AUCTION. |
start_price_trigger |
número | condicional | sim | Preço-gatilho para custom_ord_type ∈ {2, 4, 5} (quando use_auction_open_price="N"). |
entrance_exec_price |
número | condicional | não | Preço de entrada quando custom_ord_type=CustomOrdType.STOP. |
use_auction_open_price |
"Y" / "N" |
não | não | Para custom_ord_type=CustomOrdType.AUCTION — usa o preço de abertura do leilão. |
Estratégia — reversão + stops
| Campo | Tipo | Obrigatório | Editável | Observações |
|---|---|---|---|---|
reversion_type |
ReversionType |
sim | não | ReversionType.END_TIME_OR_CANCEL, ReversionType.AUCTION_OR_CANCEL, ReversionType.JUST_ON_GAIN_OR_LOSS, ReversionType.DO_NOT_REVERT (sem stops). |
stop_type |
StopTypeOCO |
condicional | não | Quando reversion_type ≠ ReversionType.DO_NOT_REVERT: StopTypeOCO.GAIN_LOSS, StopTypeOCO.TRAILING, StopTypeOCO.PARTIAL. |
trigger_entry_type |
TriggerEntryType |
não | não | TriggerEntryType.POINTS (ticks), TriggerEntryType.PERCENTAGE. |
stop_loss |
número | condicional | sim | Distância de perda (usada quando stop_type ∈ {1,2}). |
stop_gain |
número | condicional | sim | Distância de ganho (usada quando stop_type=StopTypeOCO.GAIN_LOSS). |
Estratégia — níveis de realização parcial
Usados quando stop_type=StopTypeOCO.PARTIAL.
| Campo | Tipo | Obrigatório | Editável | Observações |
|---|---|---|---|---|
use_level3 |
"Y" / "N" |
não | não | Habilita um terceiro nível parcial. |
stop_gain_l1 |
número | sim | sim | Distância de ganho no nível 1. |
order_quantity_l1 |
int | sim | sim | Quantidade a realizar no nível 1. |
stop_gain_l2 |
número | sim | sim | Distância de ganho no nível 2. |
order_quantity_l2 |
int | sim | sim | Quantidade a realizar no nível 2. |
stop_gain_l3 |
número | condicional | sim | Distância de ganho no nível 3 (quando use_level3="Y"). |
order_quantity_l3 |
int | condicional | sim | Quantidade a realizar no nível 3. |
Perna
Perna única, passada de forma plana. quantity não é usado aqui —
o total é order_quantity na estratégia.
| Campo | Tipo | Obrigatório | Editável | Observações |
|---|---|---|---|---|
symbol |
str | sim | não | Código do instrumento. |
side |
Side.BUY / Side.SELL |
sim | não | |
account |
str | sim | não | Conta da corretora. |
security_exchange |
str | não | não | Padrão XBSP. |
Editando um Flex Order em execução
await client.algos.edit(
handle.clord_id,
OrderQuantity=2,
StartPriceTrigger=4100,
StopGain=5,
StopLoss=5,
StopGainL1=2,
OrderQuantityL1=1,
)
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
reversion_type=ReversionType.DO_NOT_REVERTignora todos os stops — a ordem se comporta como uma ordem comum. Os outros modos anexam um bracket OCO.stop_type=StopTypeOCO.TRAILINGtrilhastop_lossticks atrás do melhor preço alcançado.stop_type=StopTypeOCO.PARTIALexecuta até três fatias de take-profit emstop_gain_l1..l3— definause_level3="N"para usar apenas dois níveis.trigger_entry_type=TriggerEntryType.PERCENTAGEinterpretastop_loss/stop_gain/stop_gain_l*como percentuais em vez de ticks.