MQL5 関数解説 ChartFirst ChartNext

この記事はMQL5の関数、ChartFirstとChartNextを解説する内容です。
対象の方はプログラミングは初めてだけど、MQL5に少し触れて基礎を覚えた辺りの初学者向けであり、なるべく分かりやすいように書いています。

MQL5はMT5で動作するプログラムを開発するプログラミング言語なので、チャートの数の把握や管理の機会が多いケースがほとんどだと思います。

よっておそらくMQL5初学者が1番最初に利用する関数の内の1つであり、また同時にプログラミング初心者であればこの少し風変わりな特徴に、多少、困惑してしまう可能性のある関数だと思います。
・・・もしかして最初、困惑したのは私だけでしょうか?

しかしこの2つの関数は理解できてしまうととても簡単です。

まずはChartFirstからいきましょう。

この関数は引数をとりません。
戻り値はlong型で最初のチャートのチャートIDを返します。

long Chart_ID=ChartFirst();

と書くだけで最初のチャートIDを取得できます。

ChartNext関数はlong型の引数をとります。
戻り値はlong型で引数にとられたチャートIDの次のチャートIDを返します。
引数に0を指定すると現在のチャートIDではなく最初のチャートIDを返すという処理になります。
引数にとったチャートIDの次のチャートIDがない場合は、この関数は-1を返しこれが最後であることを示します。

// 最初のIDを取得
long FirstID=ChartFirst();

// 2番目のIDを取得
long SecondID=ChartNext(FirstID);

// 3番目のIDを取得
long LastID=ChartNext(SecondID);

// チャートが3つしかない場合、この値は-1
long ErrorID=ChartNext(LastID);

この2つの関数は表示中のチャートのIDを順々に取得するという特徴があるので、whileとセットで使用されることが多いと思います。

   // 最初のチャートIDを取得
   long FirstID=ChartFirst();
   long ID=0;

   // 戻り値が-1になるまでループ処理
   while(ID!=-1)
     {
      // 最初のループ処理はFirstIDを引数に指定
      if(ID==0)
         ID=ChartNext(FirstID);

      // 次回からの引数の指定はIDを指定
      else
         ID=ChartNext(ID);

      // IDが-1ではなくそのチャートIDの銘柄がUSDJPYの場合はループ処理を終了
      if(ID!=-1)
         if(ChartSymbol(ID)=="USDJPY")
            break;
     }


この記事が気に入ったらサポートをしてみませんか?