Блог им. autotrade
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ЬЛ
я понимаю если нужно посчитать интеграл или что-то в этом духе, но здесь то зачем?