с завтрашнего дня в отпуске, не был больше года, решил заняться индикаторами
Settings={
Name="MNKA_ANGLE",
period=200,
line=
{
{
Name = "cur1",
Type =TYPE_LINE,
Width = 1,
Color = RGB(255, 0, 0)
},
{
Name = "cur2",
Type =TYPE_LINE,
Width = 1,
Color = RGB(0, 0, 0)
}
}
}
--[[
описание свойств:
period - период, за каротрый делается расчет
назначение:
построение угла наклона тенденции
использовался:
метод наименьших квадратов (аппроксимация линией)
--]]
function Init()
a10 = 0
a20 = 0
a30 = 0
a40 = 0
a1 = 0
a2 = 0
a3 = 0
a4 = 0
return 2
end
function OnCalculate(index)
sz = Size()
n = Settings.period
if index == 1 then
a10 = 0
a20 = 0
a30 = 0
a40 = 0
a1 = 0
a2 = 0
a3 = 0
a4 = 0
end
if index > 0 then
i = index;
a10 = a10+i*C(i)
a20 = a20+i
a30 = a30+C(i)
a40 = a40+i*i
end
a = nil
if index-n > 0 then
i = index-n;
a1 = a1+i*C(i)
a2 = a2+i
a3 = a3+C(i)
a4 = a4+i*i
if((n*(a40-a4) - (a20-a2)*(a20-a2)) ~= 0) then
a = (n*(a10-a1) - (a20-a2)*(a30-a3))/(n*(a40-a4) - (a20-a2)*(a20-a2))
--[[
b = ((a30-a3) - a*(a20-a2))/n
if sz==index then
for j=index-n+1, index do
y = a*j + b
SetValue(j, 1, y)
end
end--]]
end
end
return a, 0
end