Блог им. autotrade

Индикатор с границами

пример использования:
два индикатора с разными периодами совместно дают более точный сигнал
Индикатор с границами


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

}
--[[

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

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

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

--]]

function Init()
 	
  return 1
end

function OnCalculate(index)
    
  sz = Size()
  n = Settings.period
  d = Settings.delta  
  
  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 
	HiLo_0 = 0
	HiLo_1 = 0
	prevk = 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  
   HiLo_1 = HiLo_1+H(i)-L(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
	HiLo_0 = HiLo_0+H(i)-L(i)
	
	a1 = a1_1-a1_0
	a2 = a2_1-a2_0
	a3 = a3_1-a3_0
	a4 = a4_1-a4_0
	HiLo = (HiLo_1-HiLo_0)/n
	
	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 
	  
	  y1 = y - HiLo*d
	  y2 = y + HiLo*d
	  
	  if O(index) < y1 then
	    y = y2
		prevk = 1
	  else
	   if O(index) > y2 then
	    y = y1
		prevk = 2
       else 
	    if prevk == 1 then
		  y = y2
		end 
	    if prevk == 2 then
		  y = y1
		end 		
	   end
	  end 
    end 
	
   end 
 
   return y
 
  
endЬЛ


    495 | ★5
    2 комментария
    а зачем вообще нужна там аппроксимация? там же все цены уже известны

    я понимаю если нужно посчитать интеграл или что-то в этом духе, но здесь то зачем?
    avatar
    meat, тренд выстраивается
    avatar

    Читайте на SMART-LAB:
    Фото
    Актуальный состав портфеля и взгляд на рынок 2026: по-прежнему 0% позитива.
    Добрый вечер! С момента предыдущего поста, касающегося моего портфеля, прошел квартал.  Пришло время актуализировать его состав. Также поделюсь...
    Фото
    Биткоин попробует разыграть «треугольную карту»?
    «Цифровое золото» прорвало верхнюю границу восходящего треугольника на уровне 94 500 и сейчас тестирует пробитую горизонталь, формируя серию...
    Фото
    Индикатор Fractal: торговые сигналы и робот для OsEngine. Видео
    В этом видео разбираем индикатор Fractal Билла Вильямса — один из самых известных инструментов в трейдинге. Покажем, как формируются фракталы,...
    Фото
    Стратегия 2026 по рынку акций от Mozgovik Research: трудный год, но, возможно, последний год низких цен
    Сегодня у меня первый день официального отпуска. За окном темная звездная ночь, яркая белая луна, +24С и шум волн Андаманского моря. Неудачный...

    теги блога autotrade

    ....все тэги



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