Помогте найти решение при написании советника, индикатора.

 

Доброго времени суток уважаемые программисты. В данный момент я пишу советник, который использует данные, взятые с горизонтальных линий, нанесенных вручную. По идее, при нанесении на график горизонтальной линии советник должен ее переименовать по имени таймфрейма + порядковый номер линии на данном тф. С этим я справился. Затруднение в том, что после нанесения горизонтальной линии на график, она переименовывается только после поступления тика, как и должно быть. При этом тик может поступить через минуту, или через секунду. Все зависит от момента выхода новой котировки на сервере.

Вопрос в том, как сделать так, что бы после нанесения линии на график, она переименовывалась сразу же, не зависимо от поступления тика? Пробовал функцию OnTimer(), ничего не получается, как как я до конца не понимаю, что она выполняет. Заранее спасибо за ответы.

 
Vadim Kazakevich:

Доброго времени суток уважаемые программисты. В данный момент я пишу советник, который использует данные, взятые с горизонтальных линий, нанесенных вручную. По идее, при нанесении на график горизонтальной линии советник должен ее переименовать по имени таймфрейма + порядковый номер линии на данном тф. С этим я справился. Затруднение в том, что после нанесения горизонтальной линии на график, она переименовывается только после поступления тика, как и должно быть. При этом тик может поступить через минуту, или через секунду. Все зависит от момента выхода новой котировки на сервере.

Вопрос в том, как сделать так, что бы после нанесения линии на график, она переименовывалась сразу же, не зависимо от поступления тика? Пробовал функцию OnTimer(), ничего не получается, как как я до конца не понимаю, что она выполняет. Заранее спасибо за ответы.

Вам поможет событие OnChartEvent. и тип события CHARTEVENT_OBJECT_CREATE — событие создания графического объекта (если для графика установлено свойство CHART_EVENT_OBJECT_CREATE=true);
 
void OnChartEvent(const int id,         // идентификатор события   
                  const long& lparam,   // параметр события типа long 
                  const double& dparam, // параметр события типа double 
                  const string& sparam  // параметр события типа string 
  )
{
   if (id == CHARTEVENT_OBJECT_CREATE)
   {
      
     if (ObjectType(sparam)==OBJ_HLINE)
     {
        ....
     }
    }
}
 
Karputov Vladimir:
Вам поможет событие OnChartEvent. и тип события CHARTEVENT_OBJECT_CREATE — событие создания графического объекта (если для графика установлено свойство CHART_EVENT_OBJECT_CREATE=true);
А можете пример показать. Что то я не пойму, как это использовать.
 
Vitalii Ananev:
Спасибо! Это помогло! Теперь это все без void OnTick() работает! Большое спасибо!
Причина обращения: