Algos
Sniper
Dispara ordens agressivas que varrem toda a liquidez disponível ao seu preço (ou melhor), de uma só vez, e em seguida encerra.
Quando usar
- Você tem um preço-limite e quer varrer o livro até esse nível na hora.
- Velocidade importa mais do que melhora de preço.
- Está reagindo a uma oportunidade pontual, não trabalhando uma ordem ao longo do tempo.
Início rápido
from investflex import AsyncInvestflexClient
from investflex.models.algos import Sniper
from investflex.models.common import SecurityExchange, Side
sniper = Sniper(
name="winj-sweep",
init_time="09:00:00",
end_time="17:00:00",
price_limit=30.05,
symbol="WINJ19",
side=Side.SELL,
quantity=100,
account="YOUR_ACCOUNT",
security_exchange=SecurityExchange.XBSP,
)
async with AsyncInvestflexClient.from_env() as client:
handle = await client.algos.create(sniper)
print(handle.clord_id, handle.status.name)
Parâmetros
Estratégia
| Campo | Tipo | Obrigatório | Editável | Padrão | Observações |
|---|---|---|---|---|---|
name |
str | sim | não | — | Rótulo. |
init_time |
HH:MM:SS |
sim | não | — | Início da janela. |
end_time |
HH:MM:SS |
sim | não | — | Fim da janela. |
expire_date |
YYYYMMDD |
não | não | 20380101 |
Validade da ordem-dia. |
text |
str | não | não | — | Comentário livre. |
basket_id |
str | não | não | — | Chave opcional de agrupamento. |
price_limit |
número | sim | sim | — | Pior preço que você atravessa. |
Perna
Perna única, passada de forma plana 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 | |
quantity |
int | sim | sim | Quantidade total (> 0). |
account |
str | sim | não | Conta da corretora. |
security_exchange |
str | não | não | Padrão XBSP. |
Editando um Sniper em execução
await client.algos.edit(handle.clord_id, PriceLimit=31.00)
Apenas PriceLimit é editável.
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
- Sniper é único disparo: ao executar, não recoloca ordem.
- O algo se cancela se o preço se mover de forma adversa além
do
price_limit. - Para um taker simples sem a lógica de monitoramento de preço,
use a API direta de ordens (
client.orders.create(...)) — veja Orders API.