Ordens

API de Ordens (client.orders)

API direta de ordens para ordens simples a mercado ou limite que seguem diretamente para a bolsa, sem lógica de estratégia algorítmica. Use esta interface quando precisar apenas de uma ordem única; ela é mais simples do que encapsular uma ordem avulsa em uma estratégia.

Enviar uma ordem

import os, asyncio
from investflex import AsyncInvestflexClient
from investflex.models.common import OrdType, SecurityExchange, Side

async def main():
    async with AsyncInvestflexClient.from_env() as client:
        ack = await client.orders.create(
            symbol="PETR4",
            side=Side.BUY,
            qtty=100,
            ord_type=OrdType.LIMIT,
            price=20.00,
            account=os.environ["INVESTFLEX_ACCOUNT"],
            exchange=SecurityExchange.XBSP,  # ou SecurityExchange.XBMF para derivativos
            name="hello",            # opcional
            basket_id="b01",         # opcional
        )
        print("created", ack.order_id)

asyncio.run(main())
import { InvestflexClient, OrdType, SecurityExchange, Side } from "@investflex/sdk";

const client = InvestflexClient.fromEnv();

const ack = await client.orders.create({
  symbol: "PETR4",
  side: Side.BUY,
  qtty: 100,
  ordType: OrdType.LIMIT,
  price: 20.0,
  account: process.env.INVESTFLEX_ACCOUNT!,
  exchange: SecurityExchange.XBSP, // ou SecurityExchange.XBMF para derivativos
  name: "hello", // opcional
  basketId: "b01", // opcional
});
console.log("created", ack.orderId);

Alterar / cancelar

await client.orders.replace(ack.order_id, price=20.50, qtty=200)
await client.orders.cancel(ack.order_id)
await client.orders.replace(orderId, { price: 20.5, qtty: 200 });
await client.orders.cancel(orderId);

replace exige pelo menos um dos campos price ou qtty.

Consultar

o = await client.orders.get(order_id)                 # ordem única
rows = await client.orders.list(limit=100, offset=0)  # coleção
const o = await client.orders.get(orderId); // ordem única
const rows = await client.orders.list({ limit: 100, offset: 0 }); // coleção

Filtrar

from investflex.models.orders import OrderStatus

# O filtro aceita qualquer combinação dos quatro filtros abaixo.
rows = await client.orders.filter(
    order_status=OrderStatus.CANCELED,   # também aceita "4" ou 4
    account=os.environ["INVESTFLEX_ACCOUNT"],
    sponsor="flx",
    strategy_id="ABC123",                # id do algo pai
    limit=200,
    offset=0,
)
import { OrderStatus } from "@investflex/sdk";

// O filtro aceita qualquer combinação dos quatro filtros abaixo.
const rows = await client.orders.filter({
  orderStatus: OrderStatus.CANCELED, // também aceita "4"
  account: process.env.INVESTFLEX_ACCOUNT!,
  sponsor: "flx",
  strategyId: "ABC123", // id do algo pai
  limit: 200,
  offset: 0,
});

OrderStatus espelha os códigos da API:

Valor Significado
"0" NEW
"1" PARTIALLY_FILLED
"2" FILLED
"4" CANCELED
"5" REPLACED
"8" REJECTED
"C" EXPIRED

Quando usar uma estratégia

Use client.algos.create(...) apenas quando precisar de algo que a bolsa não executa nativamente: fatiamento de execução (TWAP, VWAP, Iceberg), entradas por gatilho (MIT, Skew, LongShort), grades (Gradiente) ou execução coordenada de múltiplas pernas (Spread, Troca Contínua, Financiamento). Para uma ordem única, a API direta de ordens desta página é a ferramenta mais adequada.