mike (Автор тем)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
getCandlesByIndex некорректно работает
 
Вот текст простого индикатора RateOfChange:
Settings =    
       {
       Name = "ROC2",
       line = {
           {Name = "ROC",
           Type = TYPE_LINE,
           Color = RGB(0, 0, 255)},
           {Name = "Horizontal line (top)",
           Type = TYPE_LINE,
           Color = RGB(100, 100, 100)},
           {Name = "Horizontal line (bottom)",
           Type = TYPE_LINE,
           Color = RGB(100, 100, 100)}

       },
       ID_Graph = "mov",
       per = 3,
       Horizontal_line = 0.1
       }

function Init()
   return 3
end

function OnCalculate(index)
   local pd = Settings.per
   local HL = Settings.Horizontal_line
   local gr, n, leg = getCandlesByIndex(Settings.ID_Graph, 0, index-pd-1, pd+1)
   if index > pd then    
       if n == nil then
           return nil
       end
       if n < pd+1 then
           return nil
       end
       if gr[0].close == nil or gr[0].close == 0 or gr[pd].close == nil then
           return nil    
       end
       return (gr[pd].close-gr[0].close)/gr[0].close*100,HL,-HL
   else
       return 0
   end
end

При помещении на график этот индикатор работает нормально. ID_Graph = "mov" - любая линия, как сам график так и другие индикаторы на графике.
На следующий день этот индикатор выдает странную почти горизонтальную линию не равную 0, при наведении курсора на которую подсказка со значением не выдается (явный глюк). Из кода видно что может выдаваться либо 3 линии (2е горизонтальные) либо одна равная 0 либо ничего. После входа в редактирование графика и нажатия ОК - все считается нормально. После смены ТФ - опять загадочная линия. Если индикатор убрать с графика и снова установить - все считается нормально на всех ТФ.
Получается каждый день на все графики этот индикатор нужно устанавливать заново иначе он не корретно работает.
Я связываю это с  функцией  getCandlesByIndex.
В чем проблема?
Страницы: 1
Наверх