識別する対象が違う
EAを自作する際にはマジックナンバーとチケット番号の2つの番号を使いこなさなければなりません。どちらも自作する上で必須の概念なので、確実に理解しておきましょう。
ここの理解を適当にしちゃうと、自作も改造もうまくいきません。
マジックナンバーはオーダー(注文)がどのEAによるものなのかを識別するための番号です。各オーダーに紐付けたラベルと理解すると分かりやすいかもしれません。パラメーターとして殆どのEAでマジックナンバーを設定できるようになっていますね。
※個人的には番号(数値)よりもラベル(文字列)の方が良かったんじゃないかと思います。実際、cAlgoではマジックナンバーに相当するものはラベルとなっています。
チケット番号はOrderSend()でオーダーを送信した時に自動的に付番される一意の番号です。オーダーを変更OrderModify()、削除OrderDelete()、決済OrderClose()する際にはこのチケット番号を使います。
マジックナンバーはEAを識別するため、チケット番号はオーダーを識別するための番号と覚えておきましょう。
ところで、MQL4では、特定のマジックナンバーのオーダーを取り出すという発想はなく、存在するオーダーの中で特定のマジックナンバーのオーダーを見つけ出すという発想になります。
プログラムで書くとこんな感じになります。
01 | extern int MagicNumber = 12345; |
06 | for ( int i = 0; i < OrdersTotal(); i++){ |
08 | if (OrderSelect(i, SELECT_BY_POS) == false ){ |
16 | if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber){ |
21 | int ticket = OrderTicket(); |
トレーダーの思考回路とMQL4のロジック構造が一致しないので気持ち悪く感じるでしょう。慣れるしかありません。