OnTradeTransaction

 

Pessoal!

 

Estou com um problema com o evento OnTradeTransaction.

Em algumas situações (que eu ainda não consegui isolar) o evento é disparado duas vezes com os MESMOS PARÂMETROS (idênticos mesmo) para a mesma ordem.

Tentando explicar melhor, uma ordem BUY_STOP é disparada, e o evento OnTradeTransaction é chamado duas vezes, com os mesmos parâmetros, sem nada que as diferencie, como se a ordem fosse disparada duas vezes mesmo. Mas a ordem foi BUY_STOP foi disparada e executada uma única vez, corretamente.

Inicialmente, pensei que pudesse ser dois negócios para preencher uma única ordem, já que a ordem é com volume 3. Ou seja, pensei que tivesse sido disparada e executado um contrato primeiro e posteriormente os outros dois. Mas não consegui identificar com nenhum dos parâmetros essa situação, pelo contrário, os volumes são sempre do total da ordem BUY_STOP.

Alguém já teve esse tipo de situação ou sabe o que pode estar acontecendo? 

 

Antes de tudo, já agradeço.

 

Abraço

Leandro 

 
Leandro Tuchtenhagen:

Pessoal! 

Estou com um problema com o evento OnTradeTransaction.

Em algumas situações (que eu ainda não consegui isolar) o evento é disparado duas vezes com os MESMOS PARÂMETROS (idênticos mesmo) para a mesma ordem.

Tentando explicar melhor, uma ordem BUY_STOP é disparada, e o evento OnTradeTransaction é chamado duas vezes, com os mesmos parâmetros, sem nada que as diferencie, como se a ordem fosse disparada duas vezes mesmo. Mas a ordem foi BUY_STOP foi disparada e executada uma única vez, corretamente.

Inicialmente, pensei que pudesse ser dois negócios para preencher uma única ordem, já que a ordem é com volume 3. Ou seja, pensei que tivesse sido disparada e executado um contrato primeiro e posteriormente os outros dois. Mas não consegui identificar com nenhum dos parâmetros essa situação, pelo contrário, os volumes são sempre do total da ordem BUY_STOP.

Alguém já teve esse tipo de situação ou sabe o que pode estar acontecendo? 

Antes de tudo, já agradeço.

Abraço

Leandro 

Olá Leandro Tuchtenhagen,

O evento OnTradeTransaction é sim, normalmente, executado várias vezes quando trade ocorre. Faz parte da própria arquitetura do evento. Um único evento de "trade" pode gerar várias chamadas dessa função, como enumerado na própria ajuda da linguagem.

Caso você queira uma função de manipulação de eventos que faça apenas uma única chamada quando um trade ocorra, você pode utilizar a função OnTrade(). É antiga mas ainda funciona dentro da linguagem MQL5.

Abraços,
Malacarne

 
Leandro Tuchtenhagen :

Pessoal!

 

Estou com um problema com o evento OnTradeTransaction.

Em algumas situações (que eu ainda não consegui isolar) o evento é disparado duas vezes com os MESMOS PARÂMETROS (idênticos mesmo) para a mesma ordem.

...

Os parâmetros não são os mesmos, consulte este artigo

Guia Prático do MQL5: Processamento do Evento TradeTransaction
Guia Prático do MQL5: Processamento do Evento TradeTransaction
  • 2014.10.21
  • Dennis Kirichenko
  • www.mql5.com
Neste artigo estudaremos as capacidades da linguagem MQL5 do ponto de vista da programação orientada a eventos. A grande vantagem dessa abordagem está na possibilidade do programa receber informações por etapas sobre a implementação das operações de negociação. O artigo também contém um exemplo do recebimento e processamento de informações sobre as operações de negociação em curso usando o manipulador de eventos TradeTransaction. Em minha opinião, esta abordagem pode ser usada para copiar as ordens de um terminal para outro.
 

Já havia consultado esse artigo. Eu sabia dos diferentes disparos deste evento para um mesmo trade, por isso tenho uma condição para tratar apenas TRADE_TRANSACTION_DEAL_ADD.

Mas para uma mesma execução de ordem, este evento, as vezes, ocorre duas vezes com este parâmetro. E nenhum outro parâmetro os diferencia.

Vou tentar com o OnTrade.

 

Obrigado.