伟大而可怕的MT4永远(或如何制定过渡策略) - 页 12

 
Andrey Khatimlianskii:

如果能在MT4Orders层面上解决这个问题就更好了。

如今,不幸的是,顺序颠倒的情况时有发生。很可能是因为这个原因。

https://www.mql5.com/ru/forum/93352/page40#comment_13943845?

 
traveller00:

https://www.mql5.com/ru/forum/93352/page40#comment_13943845?

不幸的是,背道而驰的情况也发生在这根拐杖上。

我不知道该用哪种方式进行调试了。

 
Andrey Khatimlianskii:

不幸的是,使用这种拐杖也会发生背道而驰的情况。

我不知道该用哪种方式进行调试了。

原因是这样的(不是说没有其他原因)。

        // Открытие руками единственной позиции.

        1
        PositionsTotal() = 0 OrdersTotal() = 1 HistoryDealsTotal() = 57 HistoryOrdersTotal() = 57 
        #2249767032 2021.05.04 02:10:01.089 buy 0.01 USDCAD 1.22776 0.00000 0.00000 1.22776 0.00 0.00 0.00 0
        ----------------
        2
        PositionsTotal() = 0 OrdersTotal() = 1 HistoryDealsTotal() = 57 HistoryOrdersTotal() = 57 
        #2249767032 2021.05.04 02:10:01.089 buy 0.01 USDCAD 1.22776 0.00000 0.00000 1.22776 0.00 0.00 0.00 0
        ----------------
        3
        PositionsTotal() = 0 OrdersTotal() = 1 HistoryDealsTotal() = 57 HistoryOrdersTotal() = 57 
        #2249767032 2021.05.04 02:10:01.089 buy 0.01 USDCAD 1.22776 0.00000 0.00000 1.22776 0.00 0.00 0.00 0
        ----------------
        4
        PositionsTotal() = 0 OrdersTotal() = 1 HistoryDealsTotal() = 57 HistoryOrdersTotal() = 57 
        #2249767032 2021.05.04 02:10:01.089 buy 0.01 USDCAD 1.22776 0.00000 0.00000 1.22776 0.00 0.00 0.00 0
        ----------------
        5
        PositionsTotal() = 0 OrdersTotal() = 1 HistoryDealsTotal() = 57 HistoryOrdersTotal() = 57 
        #2249767032 2021.05.04 02:10:01.089 buy 0.01 USDCAD 1.22776 0.00000 0.00000 1.22776 0.00 0.00 0.00 0
        ----------------
        6 // Полностью исчез открывающий позицию ордер - его нет ни в одной таблице. Позиции так и нет.
        PositionsTotal() = 0 OrdersTotal() = 0 HistoryDealsTotal() = 57 HistoryOrdersTotal() = 57 
        ----------------
        7 // Ордер появился в исторической таблице. Позиции так и нет.
        PositionsTotal() = 0 OrdersTotal() = 0 HistoryDealsTotal() = 57 HistoryOrdersTotal() = 58 
        ----------------
        8 // Появилась позиция и сделка.
        PositionsTotal() = 1 OrdersTotal() = 0 HistoryDealsTotal() = 58 HistoryOrdersTotal() = 58 
        #2249767032 2021.05.04 02:10:01.124 buy 0.01 USDCAD 1.22776 0.00000 0.00000 1.22769 -0.02 0.00 -0.05 0
        ----------------

P.6是最令人不快的。如何绕过这个MT5的错误--还没有想明白。

 
fxsaber:

原因是这样的(不是说没有其他原因)。

P.6.是最令人不快的。如何绕过这个MT5的错误--还没有想明白。

检查 "缺失 "的订单在这里也行得通。但这并不奏效。

我一定是弄错了什么。

 
Andrey Khatimlianskii:

遗失订单的检查在这里会起作用。它不起作用。

我一定是自己做错了什么。

在第7点。"丢失的订单显示出来了,但还是没有位置。

 
fxsaber:

在第7点。找到了 "缺失",但位置仍然是缺失的。

这是否意味着MT4Orders::OrdersTotal()的循环不会看到订单或头寸?

我以为这一点已经解决了:要么顺序/位置在列表中,要么顺序 "丢失"。第三件事怎么可能发生呢?

 
Andrey Khatimlianskii:

这是否意味着MT4Orders::OrdersTotal()循环不会看到订单或仓位?

除了第6点和第7点,在所有的点 上,都显示有一个位置是可见的。

我以为这一点刚刚解决:要么顺序/位置在列表中,要么顺序 "丢失"。怎么会有第三个呢?

想象一下,你的EA到达6号位置时,对有一个订单的事实一无所知。在这种情况下,他没有办法知道这种情况与缺失的命令相吻合。

Великий и ужасный МТ4 навсегда (или как грамотно выработать стратегию перехода)
Великий и ужасный МТ4 навсегда (или как грамотно выработать стратегию перехода)
  • 2021.05.03
  • www.mql5.com
Хочу затронуть самую что ни на есть щекотливую тему терминалов МТ4 и МТ5. Их влияние и популярность среди пользователей и брокеров / ДЦ...
 
fxsaber:

想象一下,你的EA在不知道有订单的情况下到达了第6点。在这种情况下,他没有办法知道这种情况与缺失的命令相吻合。

如果在离价格有一定距离的地方使用限价(不在价差内),我无法想象这种情况。

他总是会有时间看到列表中的设定顺序。随后,该订单要么变成 "失踪",要么变成一个头寸。


我承认,如果另一个EA在当前价格抛出一个订单,并立即开始执行,这种情况是可能的(第6点)。

但这仍然不能解释为什么第一个EA在MT4Orders::OrdersTotal()的列表中不再看到它的 订单(和它的魔术师)。

 

令人惊讶的是,在一个真实的EA上很容易重现这种情况--在其中一个订单被执行的时候,EA也失去了对另一个订单的关注。

但当试图建立一个简单的例子进行复制时,一切都很正常。看起来我真的在我代码的某个地方犯了一个错误。

 

以下是文件中的内容。

"这些交易到达终端的顺序是不被保证的,所以你不能把你的交易算法建立在等待一些交易在其他交易到达之后才到达。" https://www.mql5.com/ru/docs/event_handlers/ontradetransaction

而根据经验,TRADE_TRANSACTION_ORDER_DELETETRADE_TRANSACTION_DEAL_ADDTRADE_TRANSACTION_HISTORY_ADD 交易可以以任何顺序到达

因此,我们有这样的情况:历史上还没有交易或秩序,但秩序已经存在。或者反过来说,订单还在那里,但交易已经执行了。但秩序同时存在于活动和历史中的情况几乎是不可能的。

实际上,这就是我们拒绝使用 CTrade 类的原因--它有所有这些隐患。

对付这个问题的方法是,每个EA都保留一份其订单的清单,并监控其状态。包括 "非标准 "状态--"订单已发送,但尚未进入工作状态"(这里可以重复)或 "订单已删除,但尚未进入历史"。下网时,同时在同一个符号上工作也有帮助。

Документация по MQL5: Обработка событий / OnTradeTransaction
Документация по MQL5: Обработка событий / OnTradeTransaction
  • www.mql5.com
OnTradeTransaction - Обработка событий - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5