マジックナンバーとは、それぞれのEAにつけられる認識番号です。
通常は、上の画像のように、EAごとに外部パラメーターで利用者が好きなようにマジックナンバーを設定することできます。
本日は、なぜ、このマジックナンバーがEAで必要になるのかをご説明いたします。
今仮に、「A」「B」二つの異なるロジックをもつEAがあるとします。
そして、同一のMT4のUSDJPYのチャートを2つ立ち上げて、それぞれにこの2つのEAを別々にセットしたとします。
この場合、もしもマジックナンバーが無いと、たとえば、一方のEAにおいて成行き決済の条件を満たしたときに、同じUSDJPYの他方のEAが発注したポジションまでも決済されてしまいます。
これを「EA同士の相互干渉」といい、本来異なるロジックをもつ2つのEAが互いに影響を与え合ってしまい、トレードがめちゃくちゃになってしまうわけです。
そこで、
◆「A」というEAに「1番」というマジックナンバーを
◆「B」というEAに「2番」というマジックナンバーを
れれぞれつけたとします。
すると、「A」から発注されたポジションにも「1番」というマジックナンバーが付けられ、「B」から発注されたポジションにも「2番」というマジックナンバーが付けられることになります。
そして、「A」で決済条件が満たされたときは、「1番」のマジックナンバーを持つポジションだけが決済対象となり、「B」で決済条件が満たされたときは、「2番」のマジックナンバーを持つポジションだけが決済対象となり、二つのEAは相互干渉することなく、それぞれ独立にロジックを実現してくれることになるわけです。
実際に、このマジックナンバーをプログラム中でどのように用いるかについては、特別な場合を除いて、あるEAをMT4にセットしたときに、
①そのEAがセットされたチャートの通貨ペアと同じであること
②そのEAにつけられたマジックナンバーと同じであること
①かつ②を満たすポジションだけを、そのEAがMT4のトレーディングプールから探し出してきて、決済等の対象とします。
従って、たとえば、あるEAを作成したとして、そのEAを、
①マジックナンバーを「1番」としてUSDJPY(時間軸問わず)にセット
②マジックナンバーを「2番」としてEURJPY(時間軸問わず)にセット
した場合、「相互干渉」は発生せずに、それぞれ正常に稼働します。
①マジックナンバーを「1番」としてUSDJPY(時間軸問わず)にセット
②マジックナンバーを「1番」としてEURJPY(時間軸問わず)にセット
この場合も、「相互干渉」は発生せずに、それぞれ正常に稼働します。
①マジックナンバーを「1番」としてUSDJPY(時間軸問わず)にセット
②マジックナンバーを「2番」としてUSDJPY(時間軸問わず)にセット
この場合も、「相互干渉」は発生せずに、それぞれ正常に稼働します。
しかし、
①マジックナンバーを「1番」としてUSDJPY(時間軸問わず)にセット
②マジックナンバーを「1番」としてUSDJPY(時間軸問わず)にセット
この場合には、「相互干渉」が発生し、トレードがめちゃくちゃになります。
参考までにどうぞ。
コメントをお書きください