Добрый день!
Пытаюсь написать среднюю скользящую по RSI. Идентификатор на графике есть, но при запуске рисуется прямая.
При этом после установки индикатора со временем постепенно идет прорисовка, но явно не средняя получается (картинка: )
Индикатор:
В код пришлось вводить много дополнительных условий и переменных, т.к. в процессе написания выяснилось, что иногда бывает несколько одинаковых index на свечу. Поэтому ввел lastSMARSI которая должна выводиться, если скрипт работает с той же самой свечкой.
Может есть какое-то более простое решение.
Пытаюсь написать среднюю скользящую по RSI. Идентификатор на графике есть, но при запуске рисуется прямая.
При этом после установки индикатора со временем постепенно идет прорисовка, но явно не средняя получается (картинка: )
Индикатор:
| Код |
|---|
Settings=
{
Name = "ma_rsi_period2",
period = 10,
ID_RSI = "SBER_RSI_ID",
line =
{
{ Name = "RSI MA Simple",
Color = #ff0000,
Type = TYPE_LINE,
Width = 2
}
}
}
function Init()
t = {}
start_ind = 0
tindex = 0
lastSMARSI = 0
return 1
end
function OnCalculate(index)
if index>=1 then
Graph_RSI, Number_RSI, Legend_RSI = getCandlesByIndex(Settings.ID_RSI, 0, index-1, 1)
else
return nil
end
if Graph_RSI~=0 then
local Graph_RSI = Graph_RSI[0].close
if Graph_RSI == 0 or Graph_RSI == nil then
return nil
else
if start_ind == 0 then start_ind = index end
end
if index < (Settings.period + start_ind) then
if tindex < index then
table.insert(t, Graph_RSI)
tindex = index
end
return nil
else
local sum = 0
if index > tindex then
table.insert(t, Graph_RSI)
table.remove(t, 1)
for i = 1, #t do
sum = sum + tonumber(t[i])
end
sum = sum + tonumber(Graph_RSI)
tindex = index
lastSMARSI = sum/Settings.period
return sum/Settings.period
end
return lastSMARSI
end
else
return nil
end
end
|
В код пришлось вводить много дополнительных условий и переменных, т.к. в процессе написания выяснилось, что иногда бывает несколько одинаковых index на свечу. Поэтому ввел lastSMARSI которая должна выводиться, если скрипт работает с той же самой свечкой.
Может есть какое-то более простое решение.