Algos
Market-If-Touched (MIT)
Fica inativa até o mercado tocar um preço-gatilho; uma vez acionada, envia imediatamente uma ordem comum (a mercado ou limitada).
Quando usar
- Você quer entrar ou sair só se um nível de preço for atingido.
- Está esperando um rompimento, recuo ou suporte para agir.
- Não quer que a ordem fique visível no livro antes do gatilho.
Início rápido
from investflex import AsyncInvestflexClient
from investflex.models.algos import MIT
from investflex.models.common import Side
mit = MIT(
name="petr4-mit",
init_time="09:00:00",
end_time="17:00:00",
price_limit=30.05,
resting_price=0.01,
resting_quantity=100,
symbol="PETR4",
side=Side.SELL,
quantity=1000,
account="YOUR_ACCOUNT",
max_clip_size=100,
min_clip_size=100,
)
async with AsyncInvestflexClient.from_env() as client:
handle = await client.algos.create(mit)
print(handle.clord_id, handle.status.name)
import { InvestflexClient, MIT, Side } from "@investflex/sdk";
const mit = new MIT({
name: "petr4-mit",
initTime: "09:00:00",
endTime: "17:00:00",
priceLimit: 30.05,
restingPrice: 0.01,
restingQuantity: 100,
symbol: "PETR4",
side: Side.SELL,
quantity: 1000,
account: "YOUR_ACCOUNT",
maxClipSize: 100,
minClipSize: 100,
});
const client = InvestflexClient.fromEnv();
const handle = await client.algos.create(mit);
console.log(handle.clOrdId, handle.status);
await client.close();
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 | — | Teto da varredura agressiva disparada após o gatilho. |
resting_price |
número | sim | sim | — | Preço-gatilho; nível que o mercado deve tocar. |
resting_quantity |
int | sim | sim | — | Quantidade exposta no preço-gatilho (> 0). |
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. |
max_clip_size |
int | sim | não | Maior pedaço visível da varredura pós-gatilho (> 0; sem padrão). |
min_clip_size |
int | sim | não | Menor pedaço visível da varredura pós-gatilho (> 0; sem padrão). |
security_exchange |
str | não | não | Padrão XBSP. |
Informe os dois clips explicitamente, independentemente de resting_quantity.
O motor exige que cada um seja positivo e múltiplo do lote do instrumento;
o SDK não deduz clips ou lote a partir da quantidade passiva.
Editando um MIT em execução
await client.algos.edit(
handle.clord_id,
PriceLimit=29.00,
RestingPrice=29.50,
RestingQuantity=200,
)
await client.algos.edit(
handle.clOrdId,
{
PriceLimit: 29.0,
RestingPrice: 29.5,
RestingQuantity: 200,
},
{ strategyCode: "mit" },
);
Editáveis: PriceLimit, RestingPrice, RestingQuantity.
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)
await client.commands.cancel(handle.clOrdId);
await client.commands.suspend(handle.clOrdId);
await client.commands.resume(handle.clOrdId);
Notas de comportamento
- A perna do gatilho usa uma ordem passiva minúscula para que o algo detecte um cruzamento sem mostrar tamanho relevante no livro.
- Após disparada, a varredura não é desfeita. Cancele o algo antes do toque se mudar de ideia.
- Se o
end_timechegar antes do gatilho disparar, o algo é cancelado.