Не работает код индикатора на lua при попытке обратиться к переменной объявленной в функции Init()
Но всё бы ничего, если в одном коде индикатора он работает, а в другом не работает.
Вот код индикатора в котором обращение к переменной VuEma Не работает как ожидается:
(переменная VuEma в message() выводит 4 раза сообщения вместо мною ожидаемой 1 один раз.:
VuEma = 1
VuEma = -nan(ind)
VuEma = -nan(ind)
VuEma = -nan(ind)
Как я понимаю индикатор пересчитывается зачем то 4 раза, и лишь первый раз он работает как мне нужно, но в итоге отрисовывается только первые две линии на экране.
Но всё бы ничего, если в одном коде индикатора он работает, а в другом не работает.
Вот код индикатора в котором обращение к переменной VuEma Не работает как ожидается:
(переменная VuEma в message() выводит 4 раза сообщения вместо мною ожидаемой 1 один раз.:
VuEma = 1
VuEma = -nan(ind)
VuEma = -nan(ind)
VuEma = -nan(ind)
Как я понимаю индикатор пересчитывается зачем то 4 раза, и лишь первый раз он работает как мне нужно, но в итоге отрисовывается только первые две линии на экране.
| Код |
|---|
Settings = {}
Settings = {
Name = "KEZ_Casper",
period = 28,
period2 = 28,
line = {{
Name = "Casper",
Color = RGB(255, 0, 0),
Type = TYPE_LINE,
Width = 1
}, {
Name = "A",
Color = RGB(0, 100, 100),
Type = TYPE_LINE,
Width = 1
}, {
Name = "B",
Color = RGB(100, 100, 0),
Type = TYPE_LINE,
Width = 1
}}
}
function Init()
VuEma = 1
Vu = 0
Pu = 0
Pd = 0
F = 0
return #Settings.line
end
function OnCalculate(index)
if index == 1 then
message("VuEma = " .. VuEma)
end
if O(index) < C(index) then
-- положительная свеча
Pu = H(index) - L(index)
Pd = H(index) - C(index) + O(index) - L(index)
else
-- отрицательная свеча
Pu = H(index) - O(index) + C(index) - L(index)
Pd = H(index) - L(index)
end
Vd = (Pd * V(index)) / (Pu + Pd)
Vu = V(index) - Vd
F = 2 / (Settings.period + 1)
VuEma = Vu * F + VuEma * (1 - F)
return Vu, -Vd, VuEma
end
|