【MQL4テクニック】全てのチャートIDを取得する方法

MQL4テクニック

MQL4にはインジケータを挿入したチャートのIDは、chartID()関数を使用して簡単に取得することが出来ます。しかし、それ以外のチャートIDを取得するには一工夫必要になります。

今回は全てのチャートIDを簡単に取得する方法をご紹介します。

ChartFirst関数とChartNext関数を使用する。

ChartFirst()関数は、クライアントターミナルの最初のチャートIDを取得します。

long ChartFirst();

ChartNext()関数は、指定したチャートの次のチャートIDを取得します。

次のチャートがない場合、-1を返します。

long ChartNext(long chartId);

引数は以下です。

引数名詳細
chartIdチャートIDを指定します。
0を指定した場合、最初のチャートIDを返します。

実際に取得する

ChartFirst()関数とChartNext()関数を組合わせることで、全てのチャートIDを取得することができます。

for(long chartId = ChartFirst(); chartId != -1; chartId = ChartNext(chartId)){
   Alert(nextchart);
}

複雑な処理はありませんが簡単に解説します。

ChartFirst()関数を使用して、chartId変数に最初のチャートIDを代入する。
ChartNext()関数を使用して、次のチャートIDを取得する
ChartNext()関数が-1を返すまで、つまり全てのチャートIDを取得し終わるまで繰り返す。

注意

チャートIDを代入する変数は、int型ではなくlong型で宣言してください。

チャートIDは18ケタからなる整数に対し、int型の値の範囲の最大値は2147483647であるため18ケタの整数を扱うことが出来ません。

整数型の詳細についてはこちらをご確認ください。

POINT

こちらの記事で悩みが解決されない場合は、
MQL4 User Community に参加してお気軽にご質問ください。

MQL4初心者の方や開発に行き詰った方の悩みを、 様々なソフトウェアやツールを開発してきた経験豊富なエンジニアたちが解決いたします。