Блог им. autotrade

Канал по средним значениям

Канал по средним значениям

Settings={
Name="MNKAVG",
period=200,
delta=0,
line=                                     
                {  
					{  
                        Name = "cur1",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0,0, 0)
                    },
					{  
                        Name = "cur2",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0,255, 0)
                    },
					{  
                        Name = "cur3",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(255,0, 0)
                    },
					{  
                        Name = "cur4",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0,255, 0)
                    },
					{  
                        Name = "cur5",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(255,0, 0)
                    }

                }

}
--[[

описание свойств:
period - период, за каротрый делается расчет
delta - смещение назад 

назначение:
построение тенденции

использовался:
метод наименьших квадратов (аппроксимация линией)

--]]

function Init()
  
  return 5
end

function OnCalculate(index)
    
  sz = Size()
  n = Settings.period
  d = Settings.delta
       
  if (index ~= sz) then
    return nil, nil, nil, nil, nil
  else  	
   y = nil    
   if index-n-d > 0 then
    a1 = 0
	a2 = 0
	a3 = 0
	a4 = 0
    for i=index-n+1-d, index-d do  

	  a1 = a1+i*C(i)
	  a2 = a2+i
	  a3 = a3+C(i)
	  a4 = a4+i*i
	
    end  
	
	if((n*a4 - a2*a2) ~= 0) then
	 a = (n*a1 - a2*a3)/(n*a4 - a2*a2)
	 b = (a3 - a*a2)/n
    
	 c1 = 0
	 c2 = 0
	 n1 = 0
	 n2 = 0
     for j=index-n+1-d, index-d do  
      y = a*j + b
      SetValue(j, 1, y) 
	  if C(j) < y then
	    c1 = c1 + (y -C(j))
		n1 = n1 + 1
	  end
	  if C(j) > y then
	    c2 = c2 + (C(j) - y)
		n2 = n2 + 1
	  end	  
     end	
	 
	 if n1 ~= 0 then
	   c1 = c1/n1
	 end
	 if n2 ~= 0 then
	   c2 = c2/n2
	 end	 
	 
     for j=index-n+1-d, index-d do  
      y = a*j + b
      SetValue(j, 2, y-c1) 
	  SetValue(j, 3, y-2*c1) 	  
      SetValue(j, 4, y+c2) 
	  SetValue(j, 5, y+2*c2) 	  
     end		 
	 
    end 
   end 	
   return y
  end
 
  
end

 
Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
    594 | ★3
    3 комментария
    wtf
    avatar
    скоро робота запрограммируеш
    avatar

    Читайте на SMART-LAB:
    Новости российского и зарубежного рынков.
    Новости российского и зарубежного рынков
    Если вас интересуют другие аналитические и информационные материалы от банка АО АКБ «ЦентроКредит», смотрите их на нашем сайте в...
    Фото
    📈 Завтра — букбилдинг нового выпуска облигаций ПАО «МГКЛ»
    Уже завтра, 9 июня, состоится сбор книги заявок по новому выпуску облигаций ПАО «МГКЛ» серии 001PS-03. Если вы рассматриваете участие в...
    Фото
    Сильнейшее падение рынка акций США в 2026
    Глобальные индексы обвалились, нефть дорожает, золото меркнет, а газ NG все еще в тренде.   Рынки в понедельник, 8 июня:
    Фото
    Диасофт: топ-менеджмент не продает свои акции. Что нас ждет в 2026 году?
    На прошлых выходных мы пообщались с директором и основным владельцем Диасофта Александром Глазковым. В первую очередь меня волновал вопрос о том,...

    теги блога autotrade

    ....все тэги



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