Откуда берутся начальные параметры

Страницы: 1
RSS
Откуда берутся начальные параметры
 
В руководстве по созданию индикаторов теханализа есть пример по написанию функции EMA

Сколько ни смотрю,не могу понять какие ИМЕННО параметры передаются в подпрограмму функции. Выше нигде нет определений переменных _p, v_t и kk, внутри функции они тоже не определяются. Так что это за параметры?
Код
function EMA()
   local cache={}
   return function(ind,_p,v_t,kk)
      local n=0
      local p=0
      local period=_p
      local v_type=v_t
      local index=ind
      local k=kk or 2/(period+1)

      if index==1 then cache={} end

      if index<period then
         cache[index]=Average(1,index,v_type)
         return nil
      end

      p=cache[index-1] or dValue(index,v_type)
      n=k*dValue(index,v_type)+(1-k)*p
      cache[index]=n
      return n
   end
end
 
Это параметры которые передаются в функцию.
Для понимания, пример по проще

Код
function my(x,y)
return x+y
end

message("summa="..my(1,2))



Как видите в примере x и y тоже нигде предварительно не заданы.
 
Хм...возможно я не совсем понимаю механизм замыканий.

Здесь же функция-подпрограмма должна получить данные от внешней функции EMA, разве не так?
 
Егор Масалкин,

задаете свою функцию
myEMA=EMA()

И передаете для нее параметры расчета:
out = myEMA(index,50,"C")
 
Ага, это понял.

Вытек (не спрашивайте откуда и куда) следующий вопрос:

Параметрами EMA являются четыре переменные:

function(ind,_p,v_t,kk)

Когда происходит передача, передаются три параметра:
return myEMA(index, Settings.period, Settings.value_type)

Т.е. ind, _p и v_t

Что происходит с kk?
 
Цитата
Егор Масалкин написал:
Что происходит с kk?

ничего, если посмотреть код, Вы увидите что он не обязательный
     local k=kk or 2/(period+1)

читать так: k равно kk или 2/(period+1) если kk не задан
Страницы: 1
Читают тему
Наверх