投資で実現!不労所得生活

MetaTrader/MQL: 表示しているチャートを列挙する (ChartFirst, ChartNext)

更新:
作成:

MQL の下記の関数を使用すると、現在表示しているチャートの情報を列挙することができます。

  • ChartFirst 関数 … 最初のチャート ID を取得します(見つからない場合は -1)。
  • ChartNext 関数 … 次のチャートのチャート ID を取得します(見つからない場合は -1)。

次のサンプルスクリプトでは、現在表示しているすべてのチャートの情報(チャートID、シンボル名、時間足)を列挙しています。

Scripts/Sample.mq5
void OnStart() {
    for (long id = ChartFirst(); id != -1; id = ChartNext(id)) {
        string sym = ChartSymbol(id);
        ENUM_TIMEFRAMES period = ChartPeriod(id);
        PrintFormat("%I64d: %s (%s)", id, sym, EnumToString(period));
    }
}
実行結果
128968169024912109: USDJPY (PERIOD_M5)
128968169024912110: EURJPY (PERIOD_H1)
128968169024912111: EURUSD (PERIOD_D1)

MQL5 の CChart クラス を使っても同様のことを行えます。

Scripts/Sample.mq5
#include <Charts/Chart.mqh>

void OnStart() {
    CChart ch;
    for (ch.FirstChart(); ch.ChartId() != -1; ch.NextChart()) {
        long id = ch.ChartId();
        string sym = ch.Symbol();
        ENUM_TIMEFRAMES period = ch.Period();
        PrintFormat("%I64d: %s (%s)", id, sym, EnumToString(period));
    }
}

関連記事

投資で実現!不労所得生活
サイトマップまくへのメッセージ