Atualizações de Posição API e Stream de Mark Price
Resumo
Propr anuncia mudanças nos dados de posição para desenvolvedores API: eventos position.* agora disparam apenas em mudanças de estado e um novo stream global mark.updated fornece preços autoritativos. Desenvolvedores devem fazer cache do estado e recalcular PnL não realizado e outras métricas no cliente usando funções TypeScript e Python.
@Builders
Mudança importante para desenvolvedores API: atualizações de posição + novo stream de mark price
Alteramos como os dados de posição em tempo real fluem via WebSocket. Se você consome eventos position.* ou renderiza PnL/equity/liq/drawdown ao vivo, isso afeta você. Por favor, leia antes do seu próximo deploy.
O que mudou
Não enviamos mais uma atualização completa de posição a cada tick do mercado. Isso gerava muito overhead e não é como as exchanges operam. Mudamos para o padrão:
-
Eventos de posição semi-regulares. position.opened / position.updated / position.closed agora disparam em mudanças de estado (execuções, mudanças de margem, fechamento) — não a cada movimento de preço. Faça cache dos campos que eles carregam.
-
Um novo stream autoritativo de mark price. mark.updated é um feed global (sem userId) contendo nosso mark autoritativo interno para cada ativo que se moveu, agrupado a ~4Hz. Tudo o que depende de preço é derivado no cliente a partir deste feed mais o seu estado de conta/posição em cache.
O que você agora calcula (ou via um builder)
PnL não realizado, nocional, ROE, equity, carteira cruzada, índice de margem, preço de liquidação isolado e cruzado, drawdown usado, perda diária usada, % de meta de lucro e preço de breach. Estas são funções puras do último mark + seu estado em cache. Publicamos as funções exatas que nossa UI usa (TypeScript e Python) na documentação, para que seus números coincidam tick a tick com o app.
O padrão
-
Faça cache do estado dos eventos, position.opened/.updated (entryPrice, quantity, positionSide, leverage, marginMode, marginUsed, exchange, asset), account.updated (balance, isolatedPositionMargin, highWaterMark), e sua configuração de desafio/financiamento + métricas diárias via REST.
-
A cada mark.updated, atualize seus marks e recalcule. Renderize.
-
O Propr ainda executa as verificações reais de liquidação e breach no servidor; seus valores locais são apenas para exibição.