偉大で恐ろしい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()のループでは、注文もポジションも見えないということでしょうか。

この点は、順番・位置がリストに入っているか、順番が「抜けている」かのどちらかで解決されると思っていました。どうして3つ目のことが起こるのでしょうか?

 
Andrey Khatimlianskii:

MT4Orders::OrdersTotal()ループでは、注文もポジションも表示されないということでしょうか。

ポイント6とポイント7を除くすべての ポイントで、1つのポジションが見えていることがわかります。

この点は、順番・位置がリストに入っているか、順番が「抜けている」かのどちらかだけで解決しているのでは?3人目がいるわけがない。

注文があったことを何も知らずにEAがポジション6に到達したと想像してください。その場合、その状況がミッシングオーダーに対応していることを知る術はない。

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

EAが注文があることを何も知らずにポイント6に到達したとします。その場合、その状況がミッシングオーダーに対応していることを知る術はない。

価格からある程度離れた場所(スプレッド内ではない)でリミットを使用する場合、そのような状況は想像できない。

彼は必ずリストでセット順を見る時間があるはずです。そしてその後、注文は「欠番」になるか、「ポジション」に変わることになります。


他のEAが現在値で注文を投げて、それがすぐにフィルを開始した場合、そのような状況があり得ることは認めます(6点目)。

しかし、それでも最初の EA が MT4Orders::OrdersTotal() のリストでその 注文(マジシャン付き)を見なくなった理由を説明することはできません。

 

片方の注文が執行された瞬間に、もう片方の注文も見失ってしまうという状況を、ライブの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
理由: