Dobrota (Все сообщения пользователя)

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

Страницы: 1
Все индикаторы на Lua
 
В начале myLMA = cached_LMA()  конечно
Все индикаторы на Lua
 
Вернулся к попыткам написать скользящую среднюю LaguerreMA. Не могу найти ошибку в коде(в программировании полный новичок) - индикатор постепенно улетает куда-то в космос после нескольких первых значений. По аналогичной схеме написал уже код для других 5-6 индикаторов, там все четко отображает.
Часть кода:

function Init()
local index_1 = 0
myEMA = cached_LMA()
return 1
end

function OnCalculate(index)
if index == 0 then
return nil
end
if index ~= index_1 then
index_1 = index
return myLMA(index, Settings.value_type, Settings.gamma)
end
end

function cached_LMA()
local cache={}
local L0 = {}
local L1 = {}
local L2 = {}
local L3 = {}

return function(ind, v_t, kk)

local v_type = v_t
local index = ind
local k = kk

if index == 1 then
L0[index] = dValue(index, v_type)
L1[index] = dValue(index, v_type)
L2[index] = dValue(index, v_type)
L3[index] = dValue(index, v_type)
cache[index] = dValue(index, v_type)
else
L0[index] = (1 - k)* dValue(index-1, v_type) + L0[index-1]
L1[index] = L0[index-1] + k * L1[index-1] - k * L0[index]
L2[index] = L1[index-1] + k * L2[index-1] - k * L1[index]
L3[index] = L2[index-1] + k * L3[index-1] - k * L2[index]
cache[index] = (L0[index]+2*L1[index]+2*L2[index]+L3[index])/6

end

return cache[index]
end
end

Функция dValue просто определяет значение цены в зависимости от индекса и типа цены. Можете подсказать, в чем ошибка?
Все индикаторы на Lua
 
Кто-нибудь может поделиться индикатором скользящей средней Laguerre?
Я бы и сам мог написать, но формулу не до конца понял. Может, кто-нибудь может подсказать?

L0 = (1 – gamma)*Price + gamma*L0[1]
Price = ((H+L)/2)

H и L это максимум и минимум свечи? L0[1] это значение для предыдущей свечи?
Страницы: 1
Наверх