MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1854

 
Alexander Avksentyev #:

グリッドに時間がかかると、右のものを順番に閉じていきます。
最後の1つを閉じるとき、閉じるべき注文が10個あることがあり、それをすべて1つずつ閉じていくので、無限に時間がかかります。

この工程はノンストップです。

真なら続行、偽ならエラー処理、クリティカルエラーなら終了、ノンクリティカル(スリッページ)なら続行。

ディーリングが完全な厨二病でない場合、15〜20のEAが2〜3秒前後、それ以外は最大15秒程度で素早くクローズします。編集部 2分までのケースもありました。

mt5ならほぼ瞬時に閉じます。

 
Vitaly Muzichenko #:

途切れることなく閉じます。

1つ閉じた後、OrderClose関数が何を返したかチェックし、trueなら-続行、falseなら-ハンドルエラー重大なエラーなら-終了、重大でない(スリッページ)なら-続行。

ディーリングが完全な厨二病でない場合、15〜20のEAが2〜3秒前後、それ以外は最大15秒程度で素早くクローズします。編集部 2分までのケースもありました。

mt5ならほぼ瞬時に閉じる。

エラーが発生した場合でも、一定時間経過後にこの注文を閉じる要求を送信する必要があります。だって、いつまでもペンディングのままだと、もうダメなロボットになってしまいますから。このような注文(ポジション)は、長く持っていると、預金を失う可能性すらあります。

 
Mihail Matkovskij #:

エラーが発生した場合でも、一定時間経過後にその注文をクローズするリクエストを送信する必要があります。いつまでもそこに留まっていたら、ダメなロボットになってしまいます。この順番(ポジション)により、預けたものを長く持っていると無くなってしまうことさえある。

きちんと処理する必要があります。クリティカルであれば、サーバーを叩いても意味がない。

 
Vitaly Muzichenko #:

きちんと処理しなければならない。クリティカルな場合は、サーバーを叩いても意味がないんです。

もちろん、意味はありません。しかし、ある一定の間隔が過ぎたら、この注文(ポジション)を決済するようにしてください。その理由はこうだ。まず、オープンポジションはいつまでもそこにぶら下がっているわけにはいきません。第二に、ポジションそのものが永遠にクローズすることはありえないということです。遅かれ早かれ、サーバーは注文を閉じる(ポジションを終了 する)要求を受け入れることになります。そして、何もしなければ、先に述べたような結果になるのです。預金は、深刻なドローダウンに陥ったり、価値を失ったりする可能性があります。

 
Mihail Matkovskij #:

もちろん、意味はありません。しかし、ある間隔が経過した後でも、この注文(ポジション)を閉じることを試みる価値があります。なぜならまず、オープンポジションは永遠にぶら下がることはできません。第二に、ポジションそのものが永遠にクローズすることはありえないということです。遅かれ早かれ、サーバーは注文を閉じる(ポジションを終了 する)要求を受け入れることになります。そして、何もしなければ、先に述べたような結果になるのです。預金は大きなドローダウンに陥るかもしれないし、売り切れになるかもしれない。

最近、証券会社がサーバーの自動売買を無効にしているため、スキップされています。1分前になってから切れました。

それでも閉じようとするのでしょうか?

 
Vitaly Muzichenko #:

最近、DCがサーバーの自動売買機能を無効にしていることが話題になっています。1分前になってから消された。

それでもクローズしようとするのでしょうか?

決算ポジションに重大な誤りがある場合、このメッセージは正しいです。

 
Vitaly Muzichenko #:

最近、DCがサーバーの自動売買機能を無効にしていることが話題になっています。1分前になってから消された。

まだシャットダウンしようとするのか?

それなら

AccountInfoInteger(ACCOUNT_TRADE_EXPERT)

また

AccountInfoInteger(ACCOUNT_TRADE_ALLOWED)

И

TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)

念のため。また、対応するすべての関数の結果には何もしない。また、クロージングに失敗した場合のエラーも適切に処理する。

いずれにせよ、少なくとも1つの機能が禁止している限り、ロボットは取引しないことを保証します。

Документация по MQL5: Программы MQL5 / Разрешение на торговлю
Документация по MQL5: Программы MQL5 / Разрешение на торговлю
  • www.mql5.com
Разрешение на торговлю - Программы MQL5 - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Mihail Matkovskij #:

そして、クローズに失敗した場合のエラーも適切に処理します。

ただ、わからないのは、OrderSendが呼ばれて、サーバーが取引を無効にしている場合、OrderSendはfalseを返すのでしょうか、それともリクエストがまずサーバーに送られ、その後、 レスポンスを返すのでしょうか?後者であれば、OrderSendはtrueを返しますそしてOrderSendの 関数呼び出しをブロックする機能()を追加する必要があるのは間違い ありません。そして、もし最初のものであれば、OrderSend が false を返したので、リクエストはキューに送られることすらない。意味があるのでしょうか?

 
Mihail Matkovskij #:

ただ、わからないのは、OrderSendが呼ばれて、サーバーが取引を無効にしている場合、OrderSendはfalseを返すのでしょうか、それともリクエストがまずサーバーに送られ、その後、 レスポンスを返すのでしょうか?後者であれば、OrderSendはtrueを返しますそしてOrderSendの 関数呼び出しをブロックする機能()を追加する必要があるのは間違い ありません。そして、もし最初のものであれば、OrderSend が false を返したので、リクエストはキューに送られることすらない。意味があるのでしょうか?

OrderSendは成功するとチケットを返します :)

私は多分、初心者用の支店に行くと思います。

 
Vitaly Muzichenko #:

OrderSend は、成功するとチケットを返します :)

私は多分、初心者用の支店に 行くことになると思います。

MQL4のOrderSendはチケットを返します。そしてMQL5ではboolになっています。MQL5の フィクションの考察には慣れている。 MQL4について 少し忘れていました(MQL5からMQL4へのアプリケーションの移植に慣れているため)。MQL5では、OrderSendブールは、注文の作成/削除だけでなく、ポジションのオープン/クローズも行います。MQL5には、注文、取引、ポジションの関数があります。MQL4では、intOrderSendはエントリー用、bool OrderCloseはエグジット用 です。また、保留中の注文のためのbool OrderDeleteもあります。また、MQL4では、注文は成行注文と保留注文に分かれているだけです。この2つの言語の違いは何なのか、思い出させてくれましたね。:)

だから、人はすべてを知ることはできない。そして、非常に混乱しやすいのです。