Особенности отрисовки индикатора при смене таймфрейма

 

Всем привет.

Столкнулся с такой особенностью индикатора. При установке на график он отрисовывает линии поддержки и сопротивления. Но я решил сменить таймфрейм без переустановки и получил непонятную картинку - значения буферов старого таймфрейма перерисовались на новый без пересчета. В результате получилась вот такая лажа. Как решить эту проблему?

Если бы prev_calculated была бы объявлена на глобальном уровне программы, то можно было бы ее обнулить и все бы само пересчиталось, но ведь в OnInit она вне области видимости... Рисовать какие-то конструкции с флагами как-то пока кажется единственным выходом...



 
Artyom Kuraev:

Всем привет.

Столкнулся с такой особенностью индикатора. При установке на график он отрисовывает линии поддержки и сопротивления. Но я решил сменить таймфрейм без переустановки и получил непонятную картинку - значения буферов старого таймфрейма перерисовались на новый без пересчета. В результате получилась вот такая лажа. Как решить эту проблему?

Если бы prev_calculated была бы объявлена на глобальном уровне программы, то можно было бы ее обнулить и все бы само пересчиталось, но ведь в OnInit она вне области видимости... Рисовать какие-то конструкции с флагами как-то пока кажется единственным выходом...




Сделайте так:

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   if(prev_calculated==0)
      {
       // значит нужно принудительно обнулить все индикаторные буферы
       // таким образом не останется старых хвостов
      }
 
Vladimir Karputov:

Сделайте так:

Спасибо! Помогло!

Причина обращения: