Здравствуйте! Возникла задача рассчитать EMA. Но результаты расчета не равны соответствующему индикатору. Не могу понять в чем ошибка? Бьюсь уже несколько дней. Может кто подскажет? Код привожу ниже.
C_ema8 = {}
function main()
while is_run do
sleep(1000)
ds1, Error = CreateDataSource (CLASS, SEC, INTERVAL_M10)
-- Ema8
Ema_8 = 0
GO8 = 0
pre_ema_8 =0
period_ema8 = 8
for i_ema_8 = period_ema8, 1, -1 do
C_ema8[i_ema_8] = ds1:C(ds1:Size() - (i_ema_8 - 1))
if i_ema_8 == period_ema8 then
Ema_8 = C_ema8[i_ema_8]
else
pre_ema_8 = Ema_8
GO8 = 1
end
if GO8 == 1 then
Ema_8 = pre_ema_8*(2/(period_ema8+1))+ (1 - (2/(period_ema8+1)))*C_ema8[i_ema_8]
end
if i_ema_8 == 1 then
Ema8 = math.ceil(Ema_8)
GO8 = 0
end
end
end
C_ema8 = {}
function main()
while is_run do
sleep(1000)
ds1, Error = CreateDataSource (CLASS, SEC, INTERVAL_M10)
-- Ema8
Ema_8 = 0
GO8 = 0
pre_ema_8 =0
period_ema8 = 8
for i_ema_8 = period_ema8, 1, -1 do
C_ema8[i_ema_8] = ds1:C(ds1:Size() - (i_ema_8 - 1))
if i_ema_8 == period_ema8 then
Ema_8 = C_ema8[i_ema_8]
else
pre_ema_8 = Ema_8
GO8 = 1
end
if GO8 == 1 then
Ema_8 = pre_ema_8*(2/(period_ema8+1))+ (1 - (2/(period_ema8+1)))*C_ema8[i_ema_8]
end
if i_ema_8 == 1 then
Ema8 = math.ceil(Ema_8)
GO8 = 0
end
end
end