Referência da API

Referência da API

Esta página lista os enums e modelos compartilhados expostos pelo pacote Python investflex. Campos de estratégia com valores discretos têm enums tipados para que as constantes apareçam no autocomplete da IDE. O SDK serializa cada enum no formato esperado pela API: string para membros (str, Enum) e inteiro para IntEnum.

from investflex.models.common import (
    Side, TimeInForce, OrdType, SecurityExchange,
    AgressionLevel, ExecStrategy, ExecutionType, ExecutionLimit,
    Trigger, CompensateExec, BookDepth, DeltaType, ExecutionMode,
    TriggerType, TriggerEntryType, StopTypeOCO, SniperType,
    RetroalimentType, SelectStopByPrice, ReversionType, CustomOrdType,
    ExitWhen, CandleTimeFrame, CandleUpdate, EntranceMoment,
    PriceUnit, TargetPriceMode, RelativeType, RelativeDirection,
    AlgoStatus,
)
import {
  Side,
  TimeInForce,
  OrdType,
  SecurityExchange,
  AgressionLevel,
  ExecStrategy,
  ExecutionType,
  ExecutionLimit,
  Trigger,
  CompensateExec,
  BookDepth,
  DeltaType,
  ExecutionMode,
  TriggerType,
  TriggerEntryType,
  StopTypeOCO,
  SniperType,
  RetroalimentType,
  SelectStopByPrice,
  ReversionType,
  CustomOrdType,
  ExitWhen,
  CandleTimeFrame,
  CandleUpdate,
  EntranceMoment,
  PriceUnit,
  TargetPriceMode,
  RelativeType,
  RelativeDirection,
  AlgoStatus,
} from "@investflex/sdk";

Enums

Side

Lado da ordem. Tipo do membro: str.

Membro Valor Significado
BUY "1" Compra
SELL "2" Venda

TimeInForce

Validade no nível da estratégia (TimeInForce) e da perna (LegTimeInForce). Tipo do membro: str.

Membro Valor Significado
DAY "0" Ordem do dia
GTC "1" Válida até cancelar
IOC "3" Executa imediatamente ou cancela
FOK "4" Executa tudo ou cancela
GTD "6" Válida até a data
AT_CLOSE "7" No fechamento
GFA "A" Válida para leilão

OrdType

Tipo de ordem. O campo enviado é LegOrdType, mantido como alias compatível deste enum. Tipo do membro: str.

Membro Valor Significado
MARKET "1" Mercado
LIMIT "2" Limitada; exige price_limit
STOP "3" Stop
STOP_LIMIT "4" Stop limitada
MARKET_WITH_LEFTOVER "K" Mercado com saldo remanescente postado como limite

SecurityExchange

Enum de conveniência para LegSecurityExchange. O campo aceita SecurityExchange | str, então também é possível passar uma string direta.

Membro Valor Significado
XBSP "XBSP" Segmento Bovespa (ações, ETFs, opções)
XBMF "XBMF" Segmento BM&F (futuros, câmbio, derivativos)
BVMF "BVMF" Código combinado da B3

Enums de execução e gatilho

Enum Uso principal
AgressionLevel Agressividade de TWAP / POV (COUNTER_PARTY, OWN_SIDE)
ExecStrategy Forma de execução (AGGRESSIVE, RESTING, MIT)
ExecutionType Se o gatilho representa entrada ou gain/loss
ExecutionLimit Tipo de execução quando o gatilho dispara em estratégias da família Skew
Trigger Modo de cálculo de gatilho; cada estratégia aceita um subconjunto
CompensateExec Compensação de execuções parciais entre pernas
BookDepth Profundidade do book usada no cálculo do gatilho (L1 a L5)
DeltaType / ExecutionMode Configuração de delta e modo de execução em estratégias de volatilidade
TriggerType / TriggerEntryType Referência e unidade do gatilho de entrada
StopTypeOCO Tipo de stop para OCO / OCO2 / FlexOrder
SniperType Modo passivo, ativo ou ambos para ArbIntFrac
RetroalimentType Fonte de realimentação do gradiente dinâmico (grddin)
SelectStopByPrice Seleção de stop por preço no gradiente
ReversionType Comportamento de reversão do FlexOrder
CustomOrdType Tipo de entrada do FlexOrder: mercado, start, stop, limite ou leilão
ExitWhen Condição de saída do VWAP-TC
CandleTimeFrame / CandleUpdate Janela e atualização de candles em estratégias de gap
EntranceMoment Momento permitido para entrada em gap
PriceUnit, TargetPriceMode, RelativeType, RelativeDirection Unidades e referências de preço relativo

AlgoStatus

Status da estratégia na API, conforme o executionengine, não o enum FIX de ordens. is_terminal (Python) e isTerminal() (TypeScript) são verdadeiros somente para FINISHED (5) e CANCELED (7), independentemente das execuções.

Membro Valor
NEW 0
WAITING_APPROVAL 1
SCHEDULED 2
RUNNING 3
UNBALANCED 4
FINISHED 5
CANCELING 6
CANCELED 7
SUSPENDING 8
SUSPENDED 9
PENDING_NEW 10
UNKNOWN 99

Correção de compatibilidade: os antigos membros PARTIALLY_FILLED, FILLED, EXPIRED, DONE, REJECTED e REPLACED eram incorretos e foram removidos, sem aliases numéricos. OrderStatus não mudou. PENDING_NEW mantém o nome público; o motor chama os códigos 10 e 99 de PENDINGNEW e UNKNOWN_STATUS. Os helpers de início continuam aguardando durante aprovação, agendamento e status desconhecido.

Flags Y/N

Alguns campos são booleanos representados como strings na API ("Y" / "N"). O SDK mantém esses campos como literais:

  • "Y" — verdadeiro / habilitado
  • "N" — falso / desabilitado

Exemplos: init_suspended, bypass_firewall, using_financial_volume, limit_by_volume, consider_cross_orders, simulate_sniper_on_resting, allow_partial_exit, use_auction_open_price, use_level3, use_preservation, use_retroaliment, use_start_when_cross, send_stop_loss_on_end, zerar_stop_loss, to_market_trigger_value_enabled e use_stop_gain_global_finance.

Modelos

Os tipos abaixo são objetos Python tipados que o SDK retorna nos serviços REST e de streaming. Todos são modelos Pydantic v2: os campos podem ser acessados como atributos e .model_dump() produz um dicionário seguro para JSON.

AlgoHandle

Retornado por client.algos.create(...). É uma referência leve para uma estratégia enviada.

Campo Tipo Significado
clord_id str ID cliente da ordem/estratégia; use para editar, consultar ou cancelar
strategy_code str Código da estratégia, por exemplo "twap"
status AlgoStatus Status inicial, normalmente PENDING_NEW
raw dict | None Resposta bruta do servidor

StrategySnapshot

Retornado por client.algos.get(...) e emitido por client.algos.stream(). Representa o estado atual de uma estratégia.

Campo Tipo Significado
clord_id str ID cliente
strategy_code str Código da estratégia
status AlgoStatus Estado atual do ciclo de vida
output OutputParameters Quantidade executada, preço médio, P/L etc.
params dict Eco dos CustomParameters
legs list[dict] Eco das StrategyLegs

Veja Snapshots e Streaming para detalhes do payload completo.

Peça o detalhe. client.algos.get(clord_id, detailed=True) e client.algos.list(detailed=True) pedem o registro completo. Sem isso a corretora responde com um resumo que não traz nem as pernas nem os CustomParameters, então legs vem vazio e todos os parâmetros sob os quais a estratégia está de fato rodando somem — indistinguível de uma estratégia que realmente não tem nenhum.

Modelos de market data (investflex.models.marketdata)

Tipo Usado por Campos principais
Trade marketdata.last_trade(), marketdata.trades(), stream de negócios symbol, price, qty, side, trade_id, timestamp
Book marketdata.last_book(), stream de book symbol, bids, asks, timestamp
BookLevel dentro de Book price, qty, orders
Definition marketdata.definitions(), marketdata.security_list() symbol, security_id, exchange, currency, tick_size, lot_size, description

Modelos dos feeds mdhub (investflex.models.mdh)

Produzidos por MarketDataService.parse() para os feeds /mdh (subscribe_trd, subscribe_mbp, …). Todo modelo estende MdhEvent (feed, symbol, security_id, timestamp, campos de sequência); todos os campos são opcionais e campos desconhecidos são preservados. Os nomes seguem o camelCase do wire do broadcaster, com alias em snake_case.

Tipo Feeds Campos principais
MdhTrade trd price, quantity, transact_time, trade_id, buyer_id, seller_id, trade_date
MdhEnrichedTrade xtrd, cxtrd MdhTrade + opening_price, high_price, low_price, vwap_price, trade_volume, number_of_trades, aggressor_side
MdhBook mbp, cmbp bids, asks (MdhBookLevel: price, quantity, order_count), bid_depth, ask_depth
MdhOrder mbo order_id, price, quantity, priority, action, side, entering_firm
MdhExecutionSummary exec last_price, fill_quantity, aggressor_side, aggressor_time
MdhExecutionStatistics estat trade_volume, vwap_price, number_of_trades, net_change_previous_day
MdhPriceStatistic open, close, high, low, last, settle, oi value, value_raw, statistic_template_id
MdhGroupPhase gphase scope, security_group, trading_session_sub_id, security_trading_event
MdhSecurityStatus sstat security_trading_status, security_trading_event, trading_session_id
MdhPriceBand / MdhQuantityBand band / qband low_limit_price, high_limit_price / average_daily_traded_quantity, maximum_trade_volume
MdhDefinition, MdhTradeBust, MdhBookClear, MdhTheoreticalOpeningPrice, MdhAuctionImbalance def, bust, clear, topen, auct veja Feeds mdhub

A lista completa de campos por modelo, o formato dos eventos e os equivalentes TypeScript (Mdh*Schema) estão em Feeds mdhub.

Position

Retornado por client.positions.list(), .get(account) e .consolidated(...).

Campo Tipo Significado
symbol str Símbolo do instrumento
account str Conta de corretagem
asset str Ativo raiz
security_type str EQUITY, OPT, FUT, ...
buy_qtty / sell_qtty int Quantidades comprada e vendida
net_qtty int Quantidade líquida; positiva = comprado
avg_buy_px / avg_sell_px float Preços médios
market_price float | None Última cotação, quando calculada
mark_to_market float | None MtM calculado pelo servidor, quando disponível

Position.pnl(market_price) calcula o resultado a mercado no cliente usando um preço de referência informado pelo chamador.

User / Account

Retornados por client.users.get(user_name) e client.users.accounts(user_name).

É o único lugar em que a corretora informa quais códigos de conta um login pode negociar: não há endpoint de diretório de contas nem claim de conta no JWT. Deduzir a conta a partir das posições em aberto só encontra contas que já carregam risco — e não encontra nada para um usuário zerado.

Campo Tipo Significado
user_name str Nome de login (UserName no protocolo)
name str | None Nome de exibição
email str | None E-mail cadastrado
profile int | None Id numérico do perfil
profile_code str | None STD para login de negociação padrão
user_type UserType | None {id, name} — assessor, cliente final, …
operator_code str | None Código do operador
accounts list[Account] Contas negociáveis

Só user_name e accounts podem invalidar este modelo. Todo campo restante vira None se a corretora enviar um formato inesperado, porque perder a lista de contas por causa de um campo que ninguém lê é exatamente a falha que este modelo existe para evitar — para quem trata erro com plano B, é indistinguível de um usuário sem contas. O valor bruto continua acessível via model_extra.

user_type.id vale conhecer: /v1/users/{user_name}/accounts responde lista vazia para um tipo de usuário que não seja assessor nem cliente final, o que distingue "sem permissão" de "nenhuma conta cadastrada".

Cada Account traz code, exchange, type (o código numérico de tipo de conta da corretora, não um rótulo) e name. A bolsa importa: uma conta pertence a exatamente uma, e a corretora recusa a ordem cuja conta não corresponda à bolsa da perna. XBSP é o mercado à vista da B3 e XBMF, o segmento de derivativos — uma ordem de futuros enviada com a conta de ações é rejeitada mesmo que ambos os códigos sejam válidos para o usuário.

User.account_codes(exchange=None) devolve os códigos distintos na ordem da própria corretora, opcionalmente restritos a uma bolsa. client.users.account_codes(user_name) lê o endpoint mais barato /v1/users/{user_name}/accounts, que responde "este login pode negociar?" mas descarta a bolsa.


Helpers

new_clord_id() -> str

Gera um ID cliente seguro para reenvio (uuid4 hexadecimal, 32 caracteres). O SDK chama esse helper automaticamente em client.algos.create(...) quando você não informa clord_id= explicitamente.