チャートIDとは、MT4のチャート毎に割り振られた数字です。
MT4のプログラムは基本的に稼働中のチャートでの動作しますが、
チャートIDを指定することで他のチャートへオブジェクトを表示したり、
テンプレートを適用するといった操作が可能となります。
MT4に表示中の全チャートのチャートIDを取得するには、ChartFirst関数とChartNext関数を使用します。
long ChartFirst();
long ChartNext(
long chart_id
);
ChartFirst関数はMT4で表示中のチャートで一番最初に表示されたチャートのチャートIDを返します。
ChartNext関数は引数のchart_idでチャートIDを指定すると、
引数に指定したチャートの次に表示されたチャートのチャートIDを返します。
例えば以下のコードは2番目に表示されたチャートのチャートIDを取得できます。
long second = ChartNext(ChartFirst());
次に開かれたチャートが存在しない場合は、ChartNext関数の結果は-1となります。
以下は全てのチャートのチャートIDを取得するサンプルです。
ChartSymbol関数とChartPeriod関数を利用して、MT4に表示中の全チャートの通貨ペア名、時間足、チャートIDを表示します。
#property copyright "Copyright 2016, gogojungle"
#property link "http://labo.fx-on.com"
#property version "1.00"
#property strict
#property indicator_chart_window
int OnInit(){
string comment = "";
long id = ChartFirst();
comment = ChartSymbol(ChartFirst()) + " : ";
comment += IntegerToString(ChartPeriod(ChartFirst())) + " : ";
comment += IntegerToString(ChartFirst()) + "¥n";
while(ChartNext(id) >= 0){
id = ChartNext(id);
comment += ChartSymbol(id) + " : ";
comment += IntegerToString(ChartPeriod(id)) + " : ";
comment += IntegerToString(id) + "¥n";
}
Comment(comment);
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason){
Comment("");
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
return(rates_total);
}
検索結果がありません。 |
検索結果がありません。 |