Discussão do artigo "Processamento de eventos trade no Expert Advisor usando a função OnTrade()" - página 2

 

Quero dizer: OnTrade( )

deveria ser OnTrade( id, para1,para2.....)

 

Alguém poderia melhorar o código fornecido no artigo para processar o evento de fechamento de uma posição por stop loss ou take profit?

Ele se mostrou desnecessário nos últimos 2,5 anos desde a publicação do artigo?

 
  • Posições
    1. Abrir
    2. Adicionar
    3. Modificar (alterar "Stop Loss" e "Take Profit")
    4. Reverter
    5. Fechar toda a posição
    6. Fechar parte da posição
  • Ordem pendente
    1. Colocar
    2. Modificar

Recomenda-se traduzir https://www.mql5.com/en/articles/211 Ordens, Posições e Negociações no MetaTrader 5.

Em primeiro lugar, você precisa descobrir qual dos 6+2 acima corresponde a ordens, posições e operações!

Orders, Positions and Deals in MetaTrader 5
Orders, Positions and Deals in MetaTrader 5
  • 2011.02.01
  • MetaQuotes Software Corp.
  • www.mql5.com
Creating a robust trading robot cannot be done without an understanding of the mechanisms of the MetaTrader 5 trading system. The client terminal receives the information about the positions, orders, and deals from the trading server. To handle this data properly using the MQL5, it's necessary to have a good understanding of the interaction between the MQL5-program and the client terminal.
 
Para MQL4, o que você acha que seria semelhante ao OnTrade?
 
Serhiy Dotsenko:
Para MQL4, o que você acha que seria semelhante ao OnTrade?

Verifique em cada tick OrdersTotal() e OrdersHistoryTotal() - se o número tiver mudado - chame OnTrade().

 
Obrigado, também cheguei a uma conclusão semelhante). Pensei que houvesse algo exatamente orientado por eventos), pois será possível reagir à negociação manual somente no segundo tique).
 

Hi ,


obrigado por escrever este artigo... Brinquei um pouco com seu código. Mas, a princípio, tenho um problema básico, que é o fato de estar trabalhando com posições. Isso significa que:

Meu EA está definindo uma ordem de compra no backtest e a função Ontrade é chamada várias vezes, conforme descrito. Mas seu código está verificando apenas o OrdersTotal. O mais estranho é que o resultado dessa função é sempre 0. Depois de colocar minha ordem, só tenho uma posição de compra, o que não é tratado em seu código, não é?

O que há de errado aqui?

 
Serhiy Dotsenko:
Para MQL4, o que você acha que seria semelhante ao OnTrade?
Gerar OnChartEvent() antes de fazer uma operação de negociação e, nela, tentar obter o resultado da operação de negociação.... E você pode pensar em um tipo, de acordo com o qual OnChartEvent() deve ser chamado o número necessário de vezes...
 
Denis Kirichenko:
Gerar OnChartEvent() antes de fazer uma operação de negociação e, nela, tentar obter o resultado da operação de negociação.... E você pode pensar em um tipo, de acordo com o qual OnChartEvent() deve ser chamado o número necessário de vezes...

Se não há elementos gráficos, por que precisamos dessa variante? Na minha opinião, ela é desnecessária...

 
Obrigado pelo artigo, é claro. Me poupou algum tempo. Porque não precisei pesquisar em algum lugar sobre esses eventos. Não há nenhuma informação na ajuda, e escrever constantemente para o suporte também é demorado. É por isso que o artigo é relevante. Mas, para ser sincero, o código é apertado. Tive que transferi-lo para mim mesmo e colocá-lo em um formato normal. E então tive que pensar sobre isso.