Блог им. autotrade

Индикатор горизонтальной ширины канала за период

Ширина канала показана синим отрезком, канал строится за отрезок показанный зеленым цветом
по перегибам можно понять что тренд заканчивается
Индикатор горизонтальной ширины канала за период
Settings={
Name="Buy_osc_v01",
period=50,
delta=0,
lim=100.0,
line=                                     
                {  
					{  
                        Name = "cur1",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0, 0, 255)
                    },
					{  
                        Name = "cur2",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0, 0, 0)
                    },
					{  
                        Name = "cur3",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0,0, 0)
                    },
					{  
                        Name = "cur4",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0,0, 0)
                    }

                }

}
--[[

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

назначение:
горизонтальная ширина канала 

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

--]]

function Init()
  
  return 2
end

function OnCalculate(index)
    
  sz = Size()
  n = Settings.period
  d = Settings.delta
  lim = Settings.lim
        	
   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
	  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		 
	 
	 if a==0 then
	   y = 0
	 else
	   y = (c1+c2)/a	
	   if y > lim then 
	     y = lim 
	   else 
         if y < -lim then 
		   y = -lim
         end   		 
	   end 	 
	 end 

	 
    end 
   end 	
   
   return y,0 
  
end


Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
503 | ★2
2 комментария
У вас взят определенный период из прошлого, а что скажите про будущее?
avatar
Это LUA? 
Подскажите, как им пользоваться?
avatar

Читайте на SMART-LAB:
Фото
Токио против рынка: сколько резервов хватит для защиты иены
Цены на нефть продолжают снижение, начавшееся в среду, хотя темпы падения уже замедлились. За последние сутки новостной фон по Ближнему Востоку...
Займер в обзорах блогеров и аналитиков (часть 2) 👨‍💻
Продолжаем подборку мнений финансовых инфлюенсеров о Займере. Еще 5 интересных обзоров для вас. 📝 «Компания по-прежнему сохраняет сильную...
Фото
Курс рубля летом: ждать ли сюрпризов?
Рост вопреки прогнозам: с начала 2025 года рубль укрепился на 55%, хотя многие аналитики ожидали его ослабления. Теперь, когда Минфин...
Фото
ЦИАН. Отчет МСФО Q1 26г. Такой рентабельности никогда не было
Вышли финансовые результаты по МСФО за Q1 2026г. от компании ЦИАН: 👉Выручка — 3,90 млрд руб. (+17,9% г/г) 👉Операционные расходы — 2,72...

теги блога autotrade

....все тэги



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