Блог им. autotrade
Settings={ Name="MNKM", period=200, line= { { Name = "cur1", Type =TYPE_LINE, Width = 1, Color = RGB(255,0, 0) } } } --[[ описание свойств: period - период, за каротрый делается расчет назначение: построение кривой, у которой сумма квадратов расстояний от цен закрытия до нее минимальна таким образом, кривая показвает общую тенденцию движения цены использовался метод: метод наименьших квадратов (аппроксимация линией) --]] function Init() return 1 end function OnCalculate(index) sz = Size() n = Settings.period 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 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 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 a1 = a1_1-a1_0 a2 = a2_1-a2_0 a3 = a3_1-a3_0 a4 = a4_1-a4_0 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 end end return y end