Блог им. 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ЬЛ


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

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

    Читайте на SMART-LAB:
    Фото
    USD/CAD: военная разрядка подкосила нефть, но поддерживает канадца
    Канадский доллар продолжил заметно укрепляться за прошедший период и достиг локальных максимумов, полностью нивелировав слабость в течение марта....
    Фото
    Про нашу нейросеть ByteDog написали в Forbes
    В середине апреля мы  рассказали , что с нуля создали собственную нейросеть для поиска вредоносов, которая читает файлы как текст. Мы сделали ее...
    В Accent разработали сервис для оценки влияния недвижимости на портфель инвестора
    Группа Accent запустила интерактивный инструмент для анализа инвестиционного портфеля. Сервис, доступный на сайте компании, позволяет оценить,...
    Фото
    Какой убыток мог быть у Магнита в 2025 году?
    На этой неделе, вероятно, под занавес сезона годовых отчетов, свои результаты должен опубликовать Магнит. Что ждать и насколько все плохо?

    теги блога autotrade

    ....все тэги



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