ChartSetDouble

Задает значение соответствующего свойства указанного графика. Свойство графика должно быть типа double. Отданная команда поступает в очередь сообщений графика и выполняется только после обработки всех предыдущих команд.

bool  ChartSetDouble(
   long                         chart_id,     // идентификатор графика
   ENUM_CHART_PROPERTY_DOUBLE   prop_id,      // идентификатор свойства
   double                       value         // значение
   );

Параметры

chart_id

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

prop_id

[in]  Идентификатор свойства графика. Значение может быть одним из значений перечисления ENUM_CHART_PROPERTY_DOUBLE (кроме read-only свойств).

value

[in]  Значение свойства.

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

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

Примечание

Функция является асинхронной – это означает, что функция не дожидается выполнения команды, успешно поставленной в очередь указанного графика, а сразу же возвращает управление. Изменение свойства произойдет только после обработки команды в очереди графика. Для немедленного выполнения команд в очереди графика нужно вызвать функцию ChartRedraw.

Если требуется немедленно изменить сразу несколько свойств графика, то необходимо соответствующие функции (ChartSetString, ChartSetDouble, ChartSetString) выполнить в одном блоке кода и затем вызвать один раз ChartRedraw.

Для проверки результата выполнения можно использовать функцию, запрашивающую указанное свойство графика (ChartGetInteger, ChartGetDouble, ChartSetString). При этом необходимо иметь в виду, что данные функции являются синхронными и дожидаются результата выполнения.

Пример:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- получаем идентификатор текущего графика
   long chart_id = ChartID();
   
//--- запоминаем изначальные отступ нулевого бара от правого края в процентах и флаг автопрокрутки
   double shift = ChartGetDouble(chart_idCHART_SHIFT_SIZE);
   bool   scrollChartGetInteger(chart_id,CHART_AUTOSCROLL);
   
//--- сбрасываем флаг автоматической прокрутки графика
   ChartSetInteger(chart_idCHART_AUTOSCROLLtrue);
   PrintFormat("Initial chart shift size: %.2f"shift);
 
//--- в цикле от 2.0% до 50.0% с шагом в 0.5%
   for(int i=20i<=500i+=5)
     {
      //--- устанавливаем размер отступа как i / 10 и распечатываем в журнале установленное значение
      ChartSetDouble(chart_idCHART_SHIFT_SIZEi/10.0);
      PrintFormat("Set chart shift size to %.1f%%"i/10.0);
      
      //--- удерживаем нулевой бар графика на расстоянии установленного отступа
      ChartNavigate(chart_idCHART_END0);
      
      //--- немного подождём
      Sleep(16);
     }
 
//--- устанавливаем изначальные отступ и автопрокрутку графика
   Print("Set the chart shift size to the initial value of "shift);
   ChartSetDouble(ChartID(), CHART_SHIFT_SIZEshift);
   ChartSetInteger(chart_idCHART_AUTOSCROLLscroll);
  }