Блог им. autotrade

Индикатор - кривая наименьших квадратов MNKM

Индикатор - кривая наименьших квадратов MNKM


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
    ★8
    2 комментария
    Как было принято решение об апроксимации именно первого порядка?
    avatar
    Спасибо, посмотрю
    avatar

    теги блога autotrade

    ....все тэги



    UPDONW
    Новый дизайн