Неоднозначность функции C(index) в индикаторах

Страницы: 1
RSS
Неоднозначность функции C(index) в индикаторах, Сразу после смены тайм-фрейма C(index) работает неправильно
 
Если в область 1 окна включить 1-минутный график SRH8, а в область 2 включить график волатильности опциона SR028250BO8 и запустить мой индикатор CountValidBars, то при смене тайм-фрейма (например, на 2 минуты) число непустых баров в графике ValidNo = Size().
При повторном пуске индикатора (по OK в диалоге "Редактирование настроек графика" для индикатора) оказывается Size() > ValidNo.
Предлагаю изменить работу Quik'а так, чтобы подсчёт количества баров давал одинаковые результаты при обоих вариантах запуска индикатора CountValidBars.
Код
-- Индикатор Подсчёт непустых баров.
IniSize = 0
PreIdx  = 0
ValidNo = 0
Settings = {
  Name = "*CountValidBars"
  ,line = {
    {Name = "CountValidBars"
    ,Color = RGB(255,255,0) -- Жёлтый
    ,Type = TYPE_DASH
    ,Width = 1}
  }
}
function Init()
  return #Settings.line
end
function OnCalculate (index)
  if index == 1 then
    IniSize = Size()
    PreIdx, ValidNo = 0, 0
    message("IniSize ".. IniSize)
  end
  if PreIdx ~= index then
    if C(index) and C(index) > 0 then
      ValidNo = ValidNo + 1
    end
    if index == IniSize then
      local ds = getDataSourceInfo()
      message ("interval ".. ds.interval .." index ".. index
      .." ValidNo ".. ValidNo)
    end
  end
  PreIdx = index
  return nil
end -- OnCalculate()

 
Здравствуйте!

Ваше пожелание зарегистрировано. Мы постараемся рассмотреть его и сообщить Вам результаты анализа. Впоследствии, по результатам анализа, будет приниматься решение о реализации пожелания в будущих версиях ПО.
Страницы: 1
Читают тему (гостей: 1)
Наверх