Prezados,
Estou a algum tempo tentando fazer funcionar uma estratégia de execução em tempo real no NinjaTrader, utilizando os dados de mercado e conta via Rithmic (mesas proprietárias). Sei que existe a tal limitação que o Ninja informa: "Rithmic and Interactive Brokers Users: When using a NinjaScript strategy it is best practice to only work with passed by value data from OnExecution..."
Dito isto, em minhas pesquisas encontrei algumas possíveis soluções e tentei a ajuda do ChatGPT para implementa-las, mas sem sucesso. De qualquer forma, aqui está o problema e uma possível solução:
Problema: A sequência de eventos OnOrderUpdate(), OnExecutionUpdate(), e OnPositionUpdate() não é garantida em corretoras como Interactive Brokers e Rithmic.
OnOrderUpdate()
OnExecutionUpdate()
OnPositionUpdate()
- O objetivo é fazer com que o código seja robusto o suficiente para funcionar mesmo se os eventos chegarem fora de ordem. Isso significa que não podemos depender da ordem em que esses eventos são disparados.
- A sugestão do ChatGPT é usar OnOrderUpdate() para gerenciar ordens com base no OrderState e garantir que a lógica da estratégia não dependa do momento exato em que OnExecutionUpdate() e OnPositionUpdate() são chamados.
OrderState
- Minhas palavras: "Utilizando a estratégia em Backtest em contas Ninjatrader simuladas ela funciona normalmente, mas ao executar em uma conta via Rithmic, ocorre erro de conflito de ordens e a estratégia fecha."
Ao tentar aplicar a sugestão do ChatGPT, não consegui fazer as ordens de saída (stoploss e profit) funcionarem corretamente. (Posso aprofundar no problema mais tarde).
Dito tudo isto pergunto: Alguém já conseguiu fazer uma estratégia funcionar nestas condições que descrevi? Ninjatrader via Rithmic? Caso positivo, poderiam me direcionar qual caminho seguir?
Agradeço!