ChartSetSymbolPeriod

Меняет значения символа и периода указанного графика. Функция работает асинхронно, то есть отдает команду и не ждет окончания ее выполнения. Отданная команда поступает в очередь сообщений графика и выполняется только после обработки всех предыдущих команд.

bool  ChartSetSymbolPeriod(
   long             chart_id,     // идентификатор графика
   string           symbol,       // имя символа
   ENUM_TIMEFRAMES  period        // период
   );

Параметры

chart_id

[in]  Идентификатор графика. 0 означает текущий график.

symbol

[in]  Символ графика. NULL oзначает символ текущего графика (к которому прикреплен эксперт)

period

[in]  Период графика (таймфрейм). Может принимать одно из значений значений перечисления ENUM_TIMEFRAMES. 0 означает период текущего графика.

Возвращаемое значение

Возвращает true в случае удачного помещения команды в очередь графика, иначе false. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError().

Примечание

Смена символа/периода влечет за собой переинициализацию эксперта, прикрепленного к соответствующему графику.

Вызов ChartSetSymbolPeriod с тем же символом и таймфреймом можно использовать для обновления графика (аналогично команде Refresh в терминале). Обновление графика в свою очередь запускает перерасчет индикаторов, прикрепленных к нему. Таким образом, вы можете рассчитать индикатор на графике даже при отсутствии тиков (например, в выходные дни).

Пример:

#define   SYMBOL    "GBPUSD"
#define   PERIOD    PERIOD_H1
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- получаем идентификатор текущего графика, его символ и период
   long            chart_idChartID();
   string          symbol  = Symbol();
   ENUM_TIMEFRAMES period  = Period();
 
//--- сообщаем в журнал о смене символа и периода текущего графика на заданные в SYMBOL и PERIOD
   PrintFormat("Change the %s symbol and the %s period of the chart %I64u to %s %s",
               symbolTimeframeDescrioption(period), chart_idSYMBOLTimeframeDescrioption(PERIOD));
               
//--- меняем символ и период графика
   ChartSetSymbolPeriod(chart_idSYMBOLPERIOD);
   /*
   результат:
   Change the EURUSD symbol and the M1 period of the chart 133246248352168440 to GBPUSD H1
   */
  }
//+------------------------------------------------------------------+
//| Возвращает описание периода графика                              |
//+------------------------------------------------------------------+
string TimeframeDescrioption(const ENUM_TIMEFRAMES timeframe)
  {
   return(StringSubstr(EnumToString(timeframe), 7));
  }

Смотри также

ChartSymbol, ChartPeriod