PHP インターフェイスを使用してサーバーにデータを送信するために、非同期インターネット リクエストを作成できる MetaTrader 用のカスタム インジケーターを構築できるかどうかを確認しようとしています。
これらのリクエストは、ウェブサーバーが処理するのに時間がかかる可能性があるため、同期的に実行された場合、インジケーターが新しいティック データを継続的に更新するのをブロックするのではないかと心配しています。
MT4 で使用できる非同期ライブラリはありますか?
PHP インターフェイスを使用してサーバーにデータを送信するために、非同期インターネット リクエストを作成できる MetaTrader 用のカスタム インジケーターを構築できるかどうかを確認しようとしています。
これらのリクエストは、ウェブサーバーが処理するのに時間がかかる可能性があるため、同期的に実行された場合、インジケーターが新しいティック データを継続的に更新するのをブロックするのではないかと心配しています。
MT4 で使用できる非同期ライブラリはありますか?
MT4 は、プラットフォーム間およびプロセス間メッセージング ライブラリの既製のバインディングを直接使用できZeroMQ
ますnanomsg
。
前者を数年間使用してきたMQL4
プロセスは、同期されていない (つまり、aMarketEVENT
到着とは無関係にquote
、または " " とも呼ばれますtick
) ExpertAdvisor
->script
またはscript
->script
プロセス間通信ソリューションを形成し、強力な拡張機能を構築できます。プロの取引のための GUI サービスと、ソフト リアルタイム システムおよび低強度 HFT クラスタリングのためのその他の多くの機能。
一方、MT4 EA
この同じメッセージング テクノロジ プラットフォームを使用して、いくつかの不可欠なサービスを装備することもできます。
keyboard
実行中の EA に CLI に似たインターフェース用のインタラクティブなリモートを追加します。file-IO
HFT サービス用のリモート (ノンブロッキング (!!) ) を追加します。syslog
(ノンブロッキング)ロギング用のリモート/集中サービスを追加しますGPU-based
AI/ML リアルタイム モデルを追加する設計/アーキテクチャの観点から、MT4
インジケーター スレッドには注意すべき特定の制限があります。
リモート WebServer 上の プロセスへの一般的なPOST
に基づく発行は、確実に数十ミリ秒以上かかるため、上記の正式なアーキテクチャでは避けられない問題が発生します。php
むしろ、処理のすべての埋め込み部分を最小限に抑えて、MT4.CustomIndicator
処理が次のaMarketEVENT
到着に遅れないようにし、計算された値の同期のずれを防ぐ必要があります。
これは、コア以外のすべての機能をコードの範囲の「外側」にディスパッチし(プロセス間通信フレームワークを使用)、残りのすべてのロジックを の外側の別のスレッドで解決することによって実現できます。後処理は問題の最小のものであり、ハンドシェークと値の更新と再送信ロジックは、非常に脆弱なスレッド同期性からのオフロードの焦点です(この問題がますます危険になることが観察された可能性があります。最近のビルド. 多くの堅牢な拡張 GUI ソリューションは、7xx 以降のビルドで途切れ途切れの応答性に悩まされ始め、UI の堅牢性と高負荷下でのスムーズな UI 応答性を取り戻すために、コアのリアルタイム制御ループをわずかに調整する必要がありました。MT4.CustomIndicator
ZeroMQ
MT4
MT4
この MQL4 または HFT またはその他の主題に関する詳細については、お気軽にお問い合わせください。