マジックナンバーとチケット番号の違い

識別する対象が違う

EAを自作する際にはマジックナンバーとチケット番号の2つの番号を使いこなさなければなりません。どちらも自作する上で必須の概念なので、確実に理解しておきましょう。

ここの理解を適当にしちゃうと、自作も改造もうまくいきません。

マジックナンバーはオーダー(注文)がどのEAによるものなのかを識別するための番号です。各オーダーに紐付けたラベルと理解すると分かりやすいかもしれません。パラメーターとして殆どのEAでマジックナンバーを設定できるようになっていますね。

※個人的には番号(数値)よりもラベル(文字列)の方が良かったんじゃないかと思います。実際、cAlgoではマジックナンバーに相当するものはラベルとなっています。

チケット番号はOrderSend()でオーダーを送信した時に自動的に付番される一意の番号です。オーダーを変更OrderModify()、削除OrderDelete()、決済OrderClose()する際にはこのチケット番号を使います。

マジックナンバーはEAを識別するため、チケット番号はオーダーを識別するための番号と覚えておきましょう。

ところで、MQL4では、特定のマジックナンバーのオーダーを取り出すという発想はなく、存在するオーダーの中で特定のマジックナンバーのオーダーを見つけ出すという発想になります。

プログラムで書くとこんな感じになります。

extern int MagicNumber = 12345;

// 中略

// 全オーダー分ループ
for(int i = 0; i < OrdersTotal(); i++){
  // オーダーが見つからなかったらループ終了
  if(OrderSelect(i, SELECT_BY_POS) == false){
    break;
  }

  // 取得したオーダーの通貨ペアが挿入チャートの通貨ペアと異なる場合
  // または
  // 取得したオーダーのマジックナンバーがEAパラメーターのMagicNumberと異なる場合
  // は次のオーダーにスキップ
  if(OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber){
    continue;
  }

  // 取得したオーダーのチケット番号
  int ticket = OrderTicket();

  //--------------------------------------------
  // 取得したオーダーに対して何らかの処理を実施
  //--------------------------------------------
}

トレーダーの思考回路とMQL4のロジック構造が一致しないので気持ち悪く感じるでしょう。慣れるしかありません。

MT4の無料プログラミング講座

メルマガ登録して、MT4のプログラミング講座を無料で受けちゃおう!

超豪華プレゼントも盛りだくさん♪

MT4プログラミングを習得すると、オリジナルEA運用、作成代行、商品販売等、複数の収入源を手に入れられるよ。副業に最適だね!

↓↓↓ 詳細はこちら ↓↓↓

アイキャッチ

>

エターナル・パートナーPRO ~MT4裁量トレード支援ツール~ 「MT4は裁量トレーダーに優しくない」そう思ったことありませんか?もっと快適にトレードするための強力な売買ツールが必要だと考え、開発したのが「エターナル・パートナーPRO」です。元々は自分自身のために開発したツールですので、手抜き無しのガチものです。既に200名近い方に手に取っていただき、喜びの声が続々と届いております。ぜひご覧ください!

CTR IMG