複数のオーダーとマジックナンバー

「FXメタトレーダー実践プログラミング」の読者の方よりいただいたご質問に関連して、本書の補足説明をさせていただきます。
メタトレーダー4(MT4)では、それぞれのオーダーに固有のチケット番号(注文番号)がついています。従って、同じ通貨ペアで複数のポジションがある場合も、チケット番号で区別できます。
但し、本書でも解説しているように、オーダー毎に変わるチケット番号をプログラム中で記憶しておくのは面倒なので、本書のプログラムでは、個々のオーダー(ポジション)をチケット番号でなく、マジックナンバーで区別するようにしています。
本書の多くのサンプルプログラムでは、オープンするポジションが一つなので、一つのシステムに一つのマジックナンバーしか割り当てていませんが、リピートIFDオーダーのように複数のポジションを利用する場合、それぞれのポジションを区別するためにマジックナンバーを変えるようにしています。
本書のライブラリープログラムでは、マジックナンバーだけで一つのオーダー(ポジション)を特定してオーダー送信、決済、修正などの処理を行っています。
つまり、あるマジックナンバーのオーダーがあれば、それに一致するオーダーは一つである、ということを前提としているのです。
もちろん、違う通貨ペアで同じマジックナンバーを使うこと、また売りと買いで同じマジックナンバーを使うことは問題ありません。
例えば、
#define MAGIC1 20100
#define MAGIC2 20101
と定義しておき、
最初に買いポジションを建てるときには、MAGIC1のマジックナンバーを使い、さらに別の買いポジションを建てるときには、MAGIC2のマジックナンバーを使うといった具合です。
実際には MAGIC2のポジションを建てる場合には、MAGIC1のポジションがあるかを確認する手続きが必要となります。詳しいことは省略しますが、ポジションを確認する場合もマジックナンバーでポジションが区別されていた方が何かと便利です。
そういうことで、本書のライブラリープログラムを利用して複数のオーダーに対応させるシステムを作成される場合には、オーダー毎に別のマジックナンバーを割り当てるようなプログラムを作成されることをお勧めします。



コメントは受け付けていません