Получение символа и таймфрейма произвольного графика

Два основополагающих свойства любого графика — его рабочий символ и таймфрейм. Как мы видели ранее, эти свойства для текущего графика доступны как встроенные переменные _Symbol и _Period, а также через одноименные функции Symbol и Period. Для определения тех же свойств у других графиков существует пара функций: ChartSymbol и ChartPeriod.

string ChartSymbol(long chartId = 0)

Функция возвращает имя символа на графике с указанным идентификатором. Если параметр равен 0, подразумевается текущий график.

Если графика не существует, возвращается пустая строка (""). При этом в _LastError выставляет код ошибки ERR_CHART_WRONG_ID (4101).

ENUM_TIMEFRAMES ChartPeriod(long chartId = 0)

Функция возвращает значение периода для графика с указанным идентификатором.

Если графика не существует, возвращается 0.

Скрипт ChartList2.mq5, аналогичный ChartList1.mq5, формирует список графиков с указанием символа и таймфрейма.

#include <MQL5Book/Periods.mqh>
   
void OnStart()
{
   ChartList();
}
   
void ChartList()
{
   const long me = ChartID();
   long id = ChartFirst();
   int count = 0;
   
   Print("Chart List\nN, ID, Symbol, TF, *active");
   // продолжаем перебирать графики, пока их не останется
   while(id != -1)
   {
      const string header = StringFormat("%d %lld %s %s %s",
         countidChartSymbol(id), PeriodToString(ChartPeriod(id)),
         (id == me ? " *" : ""));
    
      // поля: N, id, символ, таймфрейм, метка текущего графика
      Print(header);
      count++;
      id = ChartNext(id);
   }
   Print("Total chart number: "count);
}

Вот пример содержимого журнала после запуска скрипта на графике EURUSD,H1 (во второй строке).

Chart List
N, ID, Symbol, TF, *active
0 132358585987782873 EURUSD M15 
1 132360375330772909 EURUSD H1  *
2 132544239145024745 XAUUSD H1 
3 132544239145024732 USDRUB D1 
4 132544239145024744 EURUSD H1 
Total chart number: 5

MQL5 позволяет не только узнавать, но и переключать символ и таймфрейм любого графика.