初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 320

 

プログラマーの皆様、ご存知の方、アドバイスお願いします。

私は、MT4用のExpert Advisorを持っていて、合計利益に達したときに注文の束(500-2500)を閉じます。気がつくと、魔力の弱いものから強いものへと順番に注文が閉じられている。

そこで質問なのですが、Expert Advisorに 注文終了時にスクリプトを起動 し、注文を終了させ、端からマジックで大きいものから小さいものへとソートする機能を追加することは可能でしょうか?

このアイデアで、決算のスピードが加速するのでは?

どこかで、サーバーに同時に送ることができるリクエストは4つまでと聞いたことがあります。
 
Tapochun:
それなら、コードを見ないと...。もしかしたら、それかもしれない...は、プリントにそのような線があるのでしょうか?
いいえ。すべて過去にテスト済み、問答無用で......。他に何があるんだ?


 
Novikov:

プログラマーの皆様、ご存知の方、アドバイスお願いします。

私は、MT4用のExpert Advisorを持っていて、合計利益に達したときに注文の束(500-2500)を閉じます。気がつくと、魔力の弱いものから強いものへと順番に注文が閉じられている。

そこで、Expert Advisorに 注文終了時にスクリプトを起動 し、注文を終了させるが、端からマジックで大きいものから小さいものにソートする機能を追加することは可能か?

また、このアイデアで決算のスピードが速くなるのでしょうか?

どこかで、サーバーに同時に送れるリクエストは4つまでと聞いたことがあります。

Expert Advisorからスクリプトを実行することはできません。異なるEAから同時に複数のリクエストをサーバーに送信することが本当にできます。複数のEAを同期させれば、確かにパフォーマンスが上がるかもしれません。

でも、もし私があなただったら、開いたドアに頭をぶつけたりしないわね。MetaTrader5に乗り換えたい。OrderSendAsync機能により、数秒で100~200件の注文を一括で決済するという驚異的なスピードでポジションを決済することができます。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

デベロッパーズ!エラー 10024 (要求が多すぎる)

C-4, 2014.11.07 15:55

とにかく、私の小さな調査を総括してください。

50リクエストは50ミリ秒で、100リクエストは180ミリ秒で、200リクエストは2100ミリ秒で、500リクエストは9000ミリ秒で、1000リクエストは23000ミリ秒でプッシュすることに成功しました。(時間は平均値です)。つまり、プッシュする必要があるほど、時間がかかるのです。文盲のコーディングの問題かもしれません。

リクエストの束の実際の実行 時間は、もちろん長くなる。この時間は、最悪の場合、リクエスト送信の時間+リクエスト実行の時間に相当するようです。いずれにしても、取引所での平均的な注文執行時間+トレードサーバーとの通信時間というのが限界のような気がします。リクエスト数が60以下であれば、取引サーバーと通信し、すべてのリクエストを送信し、その成立を待つ必要はない。送信自体は40〜60ミリ秒かかる。要望が多ければ、より難しくなります。サーバーからの返信を待ち、再度注文送信のスイッチを入れ、拒否されるのを待つ、などの作業が必要です。つまり、ネットワーク上でメッセージのやり取りが行われているわけです。リクエストが多い場合は、リクエストの充足に応じて徐々にプールを解放していきます。その後の派遣は、1回、2回と小分けに依頼が来るので、これがネットワークです。その結果、時間はどんどん増えていく。とにかく、コードは正しく動作しているようなので、リクエストの送受信のメカニズムを理解する必要があります。

そのような送信をテストするコードを添付します。

p.s. 結論から言うと、60リクエストはHFT取引でも十分すぎるほどです。注文を出して、結果を得て、取引環境を分析し、必要なら新しい注文を出すというように、実際には取引行動を意識的に分析する必要があります。全体のサイクルは、40-60ミリ秒+1オーダーの平均実行時間という規模を明らかに超えることになります。


 
R0MAN:
いいえ。昔は問答無用で全部テストしていたのに...。他に何か原因があるのでしょうか?


新しいデータでテストしてみてください。別の端末で実行してみましたか?
 
Tapochun:
新しいデータでテストしてみてください。別の端末で実行してみましたか?
いいえ、今日bxから新しいのを取り付けました。その上でテストを試みた。もう一回やってみるか...。その結果をここに掲載します。
 
C-4:

EAからスクリプトを実行することはできません。確かに、異なるEAから同時に複数のリクエストをサーバーに送信することは可能です。複数のEAを同期させれば、確かにある程度の性能向上は見込めます。

でも、もし私があなただったら、開いたドアに頭をぶつけるようなことはしないでしょう。MetaTrader5に 乗り換えたい。そこにあるOrderSendAsyncという機能を使えば、数秒で100~200件の注文を一括で決済するという驚異的なスピードでポジションを決済することができます。



MT5とさらに100~200の注文がどう関係するのでしょうか?また、MT5で100~200の注文は?これがMT5の100~200種類の取引ツールです!結局のところ、1つのシンボルには1つの注文しか出せないのです。

そして、28の商品で大量の注文が溜まって おり、同時に一部ロットで!?

質問のテーマで提案できることがあれば、ありがたいですし、質問と関係ないアドバイスは不要で、建設的ではありません

 
C-4:

EAからスクリプトを実行することはできません。確かに、異なるEAから同時に複数のリクエストをサーバーに送信することは可能です。複数のEAを同期させれば、確かにある程度の性能向上は見込めます。

でも、もし私があなただったら、開いたドアに頭をぶつけないようにします。MetaTrader5に乗り換えたい。そこにあるOrderSendAsyncという機能を使えば、数秒で100~200件の注文を一括で決済するという驚異的なスピードでポジションを決済することができます。


О!Vasiliyさん、もしいらっしゃったら、私の質問に目を通してください、ありがとうございます。

 
R0MAN:
ワシリー、もしここにいたら、私の質問を見てください、ありがとうございます。

こんにちは!チェックしました。残念ながら、これまでこのようなエラーに遭遇したことはありません。例えば、テスターの履歴フォルダを確認することです。必要なシンボルのファイルがない場合は、メインフォルダ y:\MetaTrader 5bases﹑AdmiralMarkets-MT5⁾から手動でデータをコピーして、テスターを再起動してみてください。今のところ他のアイデアはありません。

s.e.不思議ですが。テスターは自動的に履歴をコピーする必要があります。でも、何があるかはわからない。

 
C-4:
こんにちは!チェックしました。残念ながら、これまでこのようなエラーに遭遇したことはありません。例えばテスターのhistoryフォルダを確認するとか......。必要なシンボルのファイルがない場合は、メインフォルダ y:\MetaTrader 5bases﹑AdmiralMarkets-MT5⁾から手動でデータをコピーして、テスターを再起動してみてください。今のところ、それ以外のアイデアはありません。
ありがとうございます。キャンパスに戻ると...今、携帯電話からです。
 
Novikov:

MT5と、特に100~200の注文は関係あるのでしょうか?また、MT5の100~200の注文は何ですか?これがMT5の100~200種類の取引ツールです!結局のところ、私が間違っていなければ、1つのシンボルに対して1つのオーダーしか開くことができません。

そして、28の商品と同時に一部ロットで大量の注文が溜まって いるんですよー。

このテーマで何か提案できることがあれば、ありがたいですし、質問と関係ないアドバイスをするのは無駄で非建設的なことです

もう一度(よく読んでください)。

MetaTrader4では、注文を閉じるために注文を送信し、その実行を待ち、次の注文に移るというように、順次注文を閉じることしかできません。このため、MetaTrader4では、注文の一括決済にかかる時間は相当なものであり、些細なことでは短縮できません。しかし、複数のExpert Advisorを自分のチャートにアップロードして、相互に情報を交換させ、共通のコマンドで注文をクローズさせることができます。各エキスパートは、そのシンボルでのみ注文をクローズします。MetaTrader4では、複数の取引スレッドが存在するため、互いにブロックして注文を送信することはないでしょう。しかし、そのような専門家の集まりの組織は複雑であり、あなたの知識レベルから判断して、そのようなことは勧められないと思います。

それでもまだ書きすぎだと思われる方は、ここで簡単にまとめておきましょう。

1.ご質問の答えは「いいえ」です。Expert Advisorからスクリプトを実行することはできません。

2.MetaTrader4では、複雑な方法を用いなければ、取引注文の執行速度を向上させることはできません。

ご質問の件を正常に解決する唯一の方法は、MetaTrader4には存在しないOrderSendAsync関数を使用することです。

理由: