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_time chegar antes do gatilho disparar, o algo é cancelado.