エラー、バグ、質問 - ページ 2106

 
Andrey Khatimlianskii:

タイムアウトは、サーバーからの応答が適切な時間内に受信されなかったことを示す。しかし、注文の結果ではありません。


こんにちは。

ありがとうございます。

この場合、タイムアウト時に、取引履歴 に新しいチケットが表示されるのを待つ必要があり、新しいチケットが表示された場合、取引または注文がオープンされます。

ちなみに、この現象はMQL5のVPSでのみ発生します

自宅のサーバーでは問題ない。

考えてみます・・・。


考えてみます。

Пользовательский интерфейс - Начало работы - MetaTrader 5
Пользовательский интерфейс - Начало работы - MetaTrader 5
  • www.metatrader5.com
Интерфейс платформы предоставляет доступ ко всем инструментам, необходимым для торговли на финансовых рынках. Он включает в себя различные меню, панели инструментов и служебные окна. Главное меню В главном меню собраны практически все команды и функции, которые можно выполнять в торговой платформе. Оно позволяет работать с графиками...
 
Vladislav Andruschenko:

この場合、タイムアウト時に取引履歴 に新しいチケットが表示されるのを待つ必要があり、新しいチケットが表示されれば、その取引または注文はオープンになります。

取引注文が同期OrderSendで送信された場合、OrderSendの実行を終了する方法はない。全てはVPS Terminalのバグに見えます。
 
fxsaber:
取引注文が同期OrderSendで送信された場合、OrderSendの実行を終了する方法がない。全てはVPS Terminalのバグに見えます。


を通して

この問題は、タイムアウトエラーを受けた後、履歴から新しいチケットを検索する機能を実行することで、原理的に解決することができます。

そうでなければ、EAはチケットを取得することなく、ただ新しいリクエストを送信し、再びタイムアウトエラーを取得します。

ありがとうございます。

 
Vladislav Andruschenko:

原理的には、タイムアウトエラーを受けた後、履歴から新しいチケットを取得する機能を実行することで、この問題を解決することができます。

SDで書かないといけないんですね。そうでなければ、各OrderSendの 後、対応する取引リスクを取得しながら、タイムアウトまで3分待つことになります。

 
fxsaber:

CDに書き込む必要があります。そうでなければ、各OrderSendの後、タイムアウトまで3分待ち、対応する取引リスクを取得することになります。


それで、そうしました。

このエラーは1000件に1件の割合で発生し、今のところMQLのVPSでのみ 発生しています...
 
Vladislav Andruschenko:

そのため、Expert Advisor はエラー 10012 を取得し、再度注文を出そうとします。

このようなコードに対して、私はEAから1年間Sellerの地位を剥奪する。
 
A100:
マーケットプレイスでこのようなコードがあった場合、1年間セラー資格を剥奪します。

このようなエラーに遭遇したのは初めてです。

チケットは取引が開始されていないことを意味し、EAが再び取引を開始しようとしていることを意味します。
 
Vladislav Andruschenko:

タイムアウトエラーを受けた後、履歴の新規チケット取得機能を実行することで、原理的に解決できます。

歴史は関係ない。OrderSendが注文を送信し、ORDER_STATE_STARTEDの ステータスでTerminalに表示されます。

ただし、これはOrderSendの実行が終了したことを意味しない。OrderSend は、注文のステータスが変更されるまで実行され続ける。

したがって、タイムアウトが表示された場合、注文ステータスがORDER_STATE_STARTEDであることは99%確実です(表示されて いますが、スクリーンショットを撮った時点では明確ではありません)。

さらに、MT5サーバーがOrderSend自体(TP/SL/MC/Expiration)を行う場合、OrderSendがなくても同じタイムアウトが発生する可能性があります。しかし、端末には表示されません。

 
Vladislav Andruschenko:
私のコードにそのようなエラーはありません。チケットなし - それは、取引が開始されていないことを意味します。

これは間違った論理です。OrderSendが 失敗し、OrderSendが 成功した後、現在の取引環境を完全に再読み込みする必要があります。このルールは常に適用されるべきものです。

リターンコードについて私のEAでは解析していません。取引ロジックは、それらに依存してはいけないと思います。

 
fxsaber:

これは間違った論理です。OrderSendが失敗し、OrderSendが成功した後、現在の取引環境を完全に再読み込みする必要があります。このルールは常に有効であるべきです。


そうですね、変えなければなりませんね。

理由: