пример использования:
два индикатора с разными периодами совместно дают более точный сигнал
Settings={
Name="MNKMK",
period=200,
delta = 1,
line=
{
{
Name = "cur1",
Type =TYPE_LINE,
Width = 2,
Color = RGB(255,0, 0)
},
{
Name = "cur2",
Type =TYPE_LINE,
Width = 1,
Color = RGB(0,0, 255)
},
{
Name = "cur3",
Type =TYPE_LINE,
Width = 1,
Color = RGB(0,0, 255)
}
}
}
--[[
описание свойств:
period - период, за каротрый делается расчет
delta - множетель отступа по вертикали H - L
назначение:
распознавание точки разворота тенденции
использовался метод:
метод наименьших квадратов (аппроксимация линией)
--]]
function Init()
return 1
end
function OnCalculate(index)
sz = Size()
n = Settings.period
d = Settings.delta
if index == 1 then
a1_0 = 0
a2_0 = 0
a3_0 = 0
a4_0 = 0
a1_1 = 0
a2_1 = 0
a3_1 = 0
a4_1 = 0
HiLo_0 = 0
HiLo_1 = 0
prevk = 0
end
i = index
a1_1 = a1_1+i*C(i)
a2_1 = a2_1+i
a3_1 = a3_1+C(i)
a4_1 = a4_1+i*i
HiLo_1 = HiLo_1+H(i)-L(i)
y = nil
if index-n > 0 then
i = index-n
a1_0 = a1_0+i*C(i)
a2_0 = a2_0+i
a3_0 = a3_0+C(i)
a4_0 = a4_0+i*i
HiLo_0 = HiLo_0+H(i)-L(i)
a1 = a1_1-a1_0
a2 = a2_1-a2_0
a3 = a3_1-a3_0
a4 = a4_1-a4_0
HiLo = (HiLo_1-HiLo_0)/n
if((n*a4 - a2*a2) ~= 0) then
a = (n*a1 - a2*a3)/(n*a4 - a2*a2)
b = (a3 - a*a2)/n
y = a*index + b
y1 = y - HiLo*d
y2 = y + HiLo*d
if O(index) < y1 then
y = y2
prevk = 1
else
if O(index) > y2 then
y = y1
prevk = 2
else
if prevk == 1 then
y = y2
end
if prevk == 2 then
y = y1
end
end
end
end
end
return y
endЬЛ
я понимаю если нужно посчитать интеграл или что-то в этом духе, но здесь то зачем?