Простой momentum

Страницы: 1
RSS
Простой momentum
 
Подскажите как исправить ошибку? Ругается что я с нулями вычисления провожу. Но если установить период 1 то рисует молча
Settings=
{
   Name = "*Mom",
   period = 14
}
function Init()
return 2
end

function OnCalculate(i)
  if (i == 0) then
     return nil
  end
     local mom = 0
     mom = C(i) - C(i-Settings.period)    ---ошибка в этой строке
  return mom*100
 
end
 
Пройдите свой цикл шаг за шагом. Первый вызов i = 0, вышли по return nil. Второй вызов i = 1, mom = C(1) - C(-13), где у вас свечка номер минус тринадцать?
 
Цитата
Anton написал:
Пройдите свой цикл шаг за шагом. Первый вызов i = 0, вышли по return nil. Второй вызов i = 1, mom = C(1) - C(-13), где у вас свечка номер минус тринадцать?
Такой свечи не существует.
Данных для расчёта недостаточно, поэтому значение индикатора не
определено на индексах свечек меньших, чем задано в Settings.period.
Нужно всем номерам которые меньше периода присвоить nil,
но если я пишу if (i < period) then, то Квик просто пересчитывает индексы ничего не рисуя  
 
Цитата
Денис Лихачев написал:
но если я пишу if (i < period) then
А если пишете if (i < Settings.period) then?
 
Цитата
Anton написал:
Цитата
Денис Лихачев написал:
но если я пишу if (i < period) then
А если пишете if (i < Settings.period) then?
Тогда он говорит, что я пытаюсь выполнить арифметическое вычисление с нулёв в этой строке -   mom = C(i) - C(i-Settings.period)
 
Цитата
Денис Лихачев написал:
Тогда он говорит
Уже лучше. Значит, когда i < Settings.period, вы сразу возвращаете nil. Рассмотрим случай i == Settings.period. mom = C(Settings.period) - C(0), да? Все тут правильно?
 
Цитата
Anton написал:
Цитата
Денис Лихачев написал:
Тогда он говорит
Уже лучше. Значит, когда i < Settings.period, вы сразу возвращаете nil. Рассмотрим случай i == Settings.period. mom = C(Settings.period) - C(0), да? Все тут правильно?
В этом случае не совсем правильно. Тут сказано, что если индекс свечи равен периоду, то то мы из цены закрытия под номером(period) вычитаем последнюю нарисовавшую цену. но нам так делать не нужно.  
 
Цитата
Денис Лихачев написал:
В этом случае не совсем правильно.
То есть свеча номер ноль не смутила? По-простому if (i <= Settings.period) then return nil end и дальше как было.
 
Цитата
Anton написал:
Цитата
Денис Лихачев написал:
В этом случае не совсем правильно.
То есть свеча номер ноль не смутила? По-простому if (i <= Settings.period) then return nil end и дальше как было.
Как же тут всё тонко с этими циклами. Спасибо Anton
Страницы: 1
Читают тему
Наверх