記事「市場シミュレーション(第12回):ソケット(VI)」についてのディスカッション

 

新しい記事「市場シミュレーション(第12回):ソケット(VI)」はパブリッシュされました:

本記事では、Pythonコードを他のプログラム内で使用する際に発生する特定の問題や課題をどのように解決するかについて説明します。特に、ExcelとMetaTrader 5を併用する際に生じる一般的な問題を取り上げ、その具体例を示します。なお、この連携の実現にはPythonを使用します。ただし、この実装には小さな欠点があります。この問題は常に発生するわけではなく、特定の状況下でのみ起こります。そして、実際に発生した場合には、その原因を理解することが重要です。本日の記事では、この問題の解決方法について解説を開始します。

前回の「市場シミュレーション(第11回):ソケット(V)」では、Excelで使用するPythonアプリケーションの作成方法について説明しました。このアプリケーションの目的は、Pythonでエコーサーバーを構築する方法を示すことでした。その特徴は、接続および切断イベントに関するデータがExcel上に直接表示される点にあります。

実のところ、このサーバーはあまり実用的とは言えません。主な理由は、単一の接続しか扱えないためです。1つの接続しか処理できないサーバーは、実用面での価値が限定的です。ただし、この点にあまりこだわる必要はありません。本来の目的は、Pythonで書かれたスクリプトがExcel内で透過的に動作する様子を示すことにありました。しかし、実際の用途を考えると、サーバーにはもう少し高度な機能が求められます。そのためには、いくつかの追加機能を実装する必要があります。

ここでの目的は、実運用可能なアプリケーションを作成することではありません。前述の通り、ソケットは非常に複雑な分野であり、十分に理解するには多くの時間が必要です。たった一日で堅牢かつ完成度の高いものを開発できると考えるべきではありません。ソケットを扱う際には、さまざまな詳細に踏み込む必要があります。それらの中には比較的単純なものもありますが、非常に複雑なものも存在します。

本記事では、ExcelやMQL5を直接扱うことはありません。しかし、MQL5の場合は使用できます。より正確には、本連載のこれまでの記事で開発してきた内容を活用します。本内容を完全に理解するためには、MQL5側で既に実装されている内容を振り返ることも有益です。


作者: Daniel Jose

 
ここで分かち合っている知識と 知恵に 深く 感謝したい
 

情報ありがとうございます...異なるブローカーの2つのMT5ターミナルを接続するために、ソケットはどのように役立つのでしょうか?一方のFXと他方のmoex - 2つのターミナルからのペア取引は、ソケットを介して実現することができますか?

私はこのトピックを自分で調べています...私の質問が少しトピックから外れていたら、あらかじめ謝っておきます...。私はまだ記事を読んでいて、2つのMT5が連動して取引し、本質的に異なる取引所からシンボルの相場を取得し、2-3-4-5シンボルの相場のデータを分析した後に連動して取引するためのソリューションを探しています。

ソケッティングします:

  • 端末間交換:MT5 AとMT5 Bの間で直接データをやり取りする。

  • イベント: OnSocketEvent()は、データが受信されると即座に トリガーさ れます。

  • データの柔軟性:JSON、バイナリ構造体、配列の転送が可能。

  • スピード:レイテンシは、可変ポーリングよりも桁違いに低い。

  • 信頼性:再送と確認のメカニズムがある。

このような観点から、私はスプレッド計算、ACK/NACK、ポジション状態の保存、モニタリング用のウェブインターフェースを備えた高度なPythonサーバーを 作ろうと考えている;

// ターミナルA
string msg = "{\"cmd\":\"OPEN\", \"symbol\":\"USDRUBF\", \"volume\":1.0}";
SocketSend(socket, msg);

// ターミナルB
string cmd;
SocketReceive(socket, cmd);  // シグナルの完全な構造を取得
Посмотрите, вроде работает даже на МТ5
Посмотрите, вроде работает даже на МТ5
  • 2025.10.29
  • www.mql5.com
Вот индикаторы эквити есть - мое прочтение это на МТ5. почему спрашиваю - поставил зеркальные в 4 - прокатило - GBPUSD и EURGBP - индикатор в мт5 исчез Реверс. А по индикаторам с МТ4 там в ветке они описаны как ими пользоваться
 
Roman Shiredchenko ペア取引は、ソケットを介して実現することができますか?

私はこのトピックを自分で調べています...私の質問が少しトピックから外れていたら、あらかじめ謝っておきます...。私はまだ記事を読んでいて、2つのMT5をソケットで取引し、本質的に異なる取引所からシンボルの引用符を取得し、2-3-4-5シンボルの引用符のデータを分析した後にソケットで取引するための解決策を探しています......。

私はソケット取引をするつもりです:

  • 端末間交換 :MT5 AとMT5 Bの間で直接データをやり取りする。

  • イベント : OnSocketEvent()は データが受信されると即座に トリガーされる

  • データの柔軟性 :JSON、バイナリ構造体、配列の伝送が可能。

  • スピード :可変ポーリングに比べ、レイテンシが桁違いに低い。

  • 信頼性 :再送と確認応答のメカニズムがある。

このような観点から、私は、スプレッド計算、ACK/NACK、ポジション状態の保存、モニタリング用のウェブ・インターフェースを備えた高度なPythonサーバーを 作ることを計画している;

あなたの質問は適切で興味深い。しかし、あなたは性急な結論を下していると思います。MQL5はソケットを実装していますが、私の記事で説明しているように、サーバーを作ることはできません。クライアントだけだ。したがって、あなたがやろうとしていることの多くは不可能だ。 不可能です MQL5で実装することは不可能です。外部コードが必要になる。あなたの場合、Pythonの使用について言及していますが、それ自体がすでに解決策です。

実際、必要なことの多くはPythonで実装できる。しかし、あなたがやろうとしていること、つまりブローカーと直接やりとりすることには少し問題があります。なぜこんなことを言うのか?セキュリティ上の理由から、ブローカーは一般的にソケット経由でのアクセスを受け付けません。このようなやり取りには特別なプロトコルがあり、ブローカーの内部メカニズムが中断されるのを防ぐために特別に設計されています。しかし、試すことは不可能ではない。通信プロトコルを教えてくれるので、都合のいいときにアクセスすればいい。しかし、あなたが必要な情報を提供することができる証券会社に非常に親しい友人がいない限り、これは簡単だと思わないでください。

私が注目したもう一つの点は、MetaTrader 5の2つの異なるインスタンス間の相互作用と情報交換です。私の率直な意見では、あなたがやろうとしていることは良い考えではありません。あなたは並列プログラミングの概念と関連する問題を理解していません。もし差し支えなければ、「producer-consumer」タスクを勉強してみてください。取引目的で異なるMetaTrader 5インスタンス間で情報を転送する際に遭遇する可能性のある複雑さと落とし穴のレベルを理解するのに役立つでしょう。

とにかく、プロジェクト頑張ってくださいᙂ👍。

 
Daniel Jose #:

あなたの質問は適切で興味深い。しかし、あなたは性急な結論を下していると思います。MQL5はソケットを実装しているが、私の記事で説明しているように、サーバーを作ることはできない。クライアントだけだ。したがって、あなたがやろうとしていることの多くは不可能だ。 不可能です MQL5で実装することは不可能です。外部コードが必要になる。あなたの場合、Pythonの使用について言及していますが、それ自体がすでに解決策です。

実際、必要なことの多くはPythonで実装できる。しかし、あなたがやろうとしていること、つまりブローカーと直接やりとりすることには少し問題があります。なぜこんなことを言うのか?セキュリティ上の理由から、ブローカーは一般的にソケット経由でのアクセスを受け付けません。このようなやり取りには特別なプロトコルがあり、ブローカーの内部メカニズムが中断されるのを防ぐために特別に設計されています。しかし、試すことは不可能ではない。通信プロトコルを教えてくれるので、都合のいいときにアクセスすればいい。しかし、あなたが必要な情報を提供することができ、証券会社に非常に親しい友人を持っていない限り、これは簡単だと思わないでください。

私が注目したもう一つの点は、MetaTrader 5の2つの異なるインスタンス間の相互作用と情報交換です。私の率直な意見では、あなたがやろうとしていることは良い考えではありません。あなたは並列プログラミングの概念と関連する問題を理解していません。もし差し支えなければ、「producer-consumer」タスクを勉強してみてください。これは、取引目的で異なるMetaTrader 5インスタンス間で情報を転送するときに遭遇する可能性のある複雑さと落とし穴のレベルを理解するのに役立ちます。

とにかく、プロジェクト頑張ってくださいᙂ👍。

フィードバックありがとうございました。証券会社に友達がいない!!!)2つの異なる証券会社にMT5端末がある!!!友達にする必要がある....これは来年のプロジェクトです!

ここで - 試している...記事を読んで、内容を勉強しています!スピードが許せば、ファイルを通して直接やるかもしれません。アクセス - 以前のハードディスクがバイオで2つ接続されていたように:マスター1つ、スレーブ1つ...)

それで...強力なコンピュータ上の2つのMT5端末 1マスター(メイン) - 他のスレーブ(2番目)、一方の証券取引所 - もう一方のMT5外国為替!多分ファイルを通じて実現)読み取り - 書き込みが行われます...しかし、私は、読み取りの面でより速く簡単に実装したいと思います - データのバリアントを受信....クライアント端末のグローバル変数の種類によって(私はファイルを使用していない - 長い時間)、しかし、クライアント端末のグローバル変数は、この端末でのみ表示されます....外部プロセスに接続する必要があるメモリ上にテーブルを作る接続のDLLライブラリのように、私は実現する!

良い一日を!