Блог им. 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:
    Фото
    Результаты АПРИ в рейтингах ЕРЗ.РФ на июнь 2026 год
    Результаты АПРИ в рейтингах ЕРЗ.РФ на июнь 2026 год Федеральный портал «Единый ресурс застройщиков» (ЕРЗ.РФ) опубликовал рейтинги...
    Фото
    Дивиденды на подходе: летняя волна годовых отсечек
    На российском рынке акций начался летний дивидендный сезон. Приводим актуальный список ликвидных акций с высокой доходностью, величина...
    Фото
    ⚡️ 3 трлн рублей: ДОМ.PФ и Сбер выпустят ипотечные облигации на рекордную сумму
    Договорились секьюритизировать портфель ипотечных кредитов банка на нашей платформе до конца 2030 года. Соглашение на полях ПМЭФ подписали Виталий...
    Фото
    ЦИАН. Отчет МСФО Q1 26г. Такой рентабельности никогда не было
    Вышли финансовые результаты по МСФО за Q1 2026г. от компании ЦИАН: 👉Выручка — 3,90 млрд руб. (+17,9% г/г) 👉Операционные расходы — 2,72...

    теги блога autotrade

    ....все тэги



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