【MQL4テクニック】全てのチャートIDを取得する方法
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ケタの整数を扱うことが出来ません。
整数型の詳細についてはこちらをご確認ください。