文章 "EA 交易中采用OnTrade() 函数处理交易事件" - 页 2

 
Automated-Trading:

文章《在 MQL5 中创建用于交易的活动控制面板》中使用了OnChartEvent

我的意思是 :OnTrade( )

应为OnTrade( id, para1,para2.....)

 

是否有人可以改进文章中给出的代码,以处理 通过止损或止盈平仓的事件

自该文章发表以来的两年半时间里,是否已经证明没有必要使用该代码了?

 
  • 持仓
    1. Open(开仓)
    2. Add(增持)
    3. Modify (修改持仓)(更改“止损”与“获利”)
    4. Reverse(反向开仓)
    5. Close entire position(完全平仓)
    6. Close part of position(部分平仓)
  • 挂单
    1. Place(下挂单)
    2. Modify(修改挂单)

 建议先翻译,https://www.mql5.com/en/articles/211  Orders, Positions and Deals in MetaTrader 5

 先弄清上面的6+2里面对应Orders, Positions and Deals 的那一个!

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.
 
对于 MQL4,您认为有什么可以与 OnTrade 相似?
 
Serhiy Dotsenko:
对于 MQL4,您能想到与 OnTrade 类似的方法吗?

检查每个跳动点的 OrdersTotal() 和 OrdersHistoryTotal() - 如果数字发生变化 - 调用 OnTrade()。

 
谢谢,我自己也发现了类似的问题 ) 我认为有一些东西正是由事件驱动的 ) 因为只有在第 2 个 tick 时才有可能对手动 ontrade 做出反应 )
 

嗨 、


感谢您写这篇文章...我对您的代码进行了一些尝试。但一开始我遇到了一个基本问题,那就是我正在处理位置问题。也就是说:

我的 EA 在回溯测试 中设置了一个买单,并且 Ontrade 函数被多次调用。但您的代码只检查 OrdersTotal。奇怪的是:这个函数的结果总是 0。下单后,我只有一个买入头寸,而您的代码没有处理这个头寸,不是吗?

这里出了什么问题?

 
Serhiy Dotsenko:
对于 MQL4,您能想到与 OnTrade 类似的方法吗?
进行交易操作前 生成 OnChartEvent(),并在其中尝试获取交易操作的结果....。您可以想出一种类型,根据这种类型,OnChartEvent() 应调用必要的次数...
 
Denis Kirichenko:
进行交易操作前 生成 OnChartEvent(),并在其中尝试获取交易操作的结果....。您还可以想出一种类型,根据这种类型,OnChartEvent() 应该调用必要的次数...

如果没有图形元素,我们为什么需要这种变量?在我看来,这是不必要的...

 
当然,还是要感谢这篇文章。帮我节省了一些时间。因为我不用再到处搜索这些事件了。帮助中的信息为零,而且不断给技术支持写信 也很花时间。所以这篇文章很重要。但老实说,代码很拥挤。我不得不把它转移到我自己身上,并使它成为正常的形式。然后我还得仔细斟酌。