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)eclient.algos.list(detailed=True)pedem o registro completo. Sem isso a corretora responde com um resumo que não traz nem as pernas nem osCustomParameters, entãolegsvem 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.