ブログタイトルを「FX自動売買システム開発部」から「autoFX」に変更しました!

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

識別する対象が違う

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のロジック構造が一致しないので気持ち悪く感じるでしょう。慣れるしかありません。

MQL4プログラミングの最新記事8件

>完全放ったらかしEA 「AutoEndlessCatchRange」

完全放ったらかしEA 「AutoEndlessCatchRange」

「本業が忙しい!」「でも資産運用したい!」そんなあなたに最適なEAです。兼業トレーダーの方はチャートを毎日みて分析してトレードする時間はなかなか確保できないものです。トレードは本EAに任せて、本業やプライベートの時間をもっと増やしませんか?元々は自分自身のために開発したEAですので、手抜き無しのガチものです。

CTR IMG