名前が示すように、1 人のトレーダー (送信者) から複数の他のトレーダー (受信者) にトレードをミラーリングするために使用される「トレード コピー」ソフトウェアがあります。これには、次の 3 つの主要コンポーネントがあります。
1. 送信側クライアント。
2. サーバー。
3. 受信側クライアント。
送信者 -> サーバー -> 受信者
送信側はMQLスクリプトを使用して構築されます。MQL は、C++ を使用して構築されたトレーダー向けのプログラミング言語です。送信者は 1 人であるため、送信者コードは取引情報 (またはシグナル) をサーバーにプッシュします。サーバーはシンプルな MySQL データベースを備えた PHP ベースで、管理者はこのシグナルの転送先ユーザーを管理できます。レシーバーも MQL を使用して構築されています。しかし、現在は独自の手法を使用して構築されています。明確にするために、コードを初めて手に入れたので、元のプログラマーはどこにも見当たりません (予想どおり)。問題に戻ると、受信側のクライアントには、更新のためにサーバーを「ポーリング」しているように見えるコードがあります。MQL は C++ ライブラリを使用して、 InternetOpenUrlAを使用するInternetReadFile関数を呼び出しました. MQL は X ミリ秒ごとにサーバーにリクエストを送信して、新しいシグナルがあるかどうかを確認し、見つかった場合はプルします。MQL コードの提供が役立つ場合は、それを行うことができます。
今私の質問に。
これは良いアプローチですか?受信ユーザーが数百人に増え、各ユーザーが X ミリ秒ごとにサーバー (または InternetReadFile を使用して行っていること) を "ポーリング" するとどうなりますか。X によっては、ある時点でサーバーの CPU を強制終了するだけではありませんか? これはプル サービスとして実装されているように見えますが、すべての受信側クライアントが常に要求するのではなく、サーバーがこの情報をプッシュする必要があると考えています。
上記の質問に対する答えが「それは悪いアプローチです」である場合、最良のアプローチは何ですか? サーバーから各レシーバーにソケット通信を介して信号をプッシュするのは良い考えですか? 受信側のクライアント エンドで「ポート フォワーディング」や「IP の変更」などの問題が予想されますか? それとも、プログラムで克服できますか?
コードを提供し、さらに明確にします。