autotrade
autotrade личный блог
28 ноября 2023, 00:34

Индикатор наклонных каналов

Индикатор наклонных каналов

Индикатор наклонных каналов
--[[
вопросы к автору: https://t.me/autotrade_ru
параметры: 
Procent - процент зигзага 
--]]
Settings={
Name="ZIG_dec_levels_Template_v3",
Procent=2,
    line=                                     
                {  
					{  
                        Name = "cur1",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0,0)
                    },
					{  
                        Name = "cur2",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0,0,255)
                    },
					{  
                        Name = "cur2",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(255,0,0)
                    }
                }
}

function Init()
  
  n1 = {}
  xy1 = {}
  x1 = {}
  y1 = {}
  xx1 = {}
  a1 = {}
  b1 = {}

  n2 = {}
  xy2 = {}
  x2 = {}
  y2 = {}
  xx2 = {}
  a2 = {}
  b2 = {}
  
  return 3
  
end



function OnCalculate(index)

  de = Settings.Procent

  vl = O(index)
  if index == 1 then 
	y10 = vl
    y20 = vl
    x10 = 1
    x20 = 1	
	
    n1[index] = 0
    xy1[index] = 0
    x1[index] = 0
    y1[index] = 0
    xx1[index] = 0
	a1[index] = 0
	b1[index] = 0
	
    n2[index] = 0
    xy2[index] = 0
    x2[index] = 0
    y2[index] = 0
    xx2[index] = 0
	a2[index] = 0
	b2[index] = 0	
  else   
   --[[ n1[index] = n1[index-1]
    xy1[index] = xy1[index-1]
    x1[index] = x1[index-1]
    y1[index] = y1[index-1]
    xx1[index] = xx1[index-1]
	a1[index] = a1[index-1]
	b1[index] = b1[index-1]	--]]
	  if O(index) > y10*(1+de/100) and y10 < y20 then 
	  
        n2[index] = n1[index]
        xy2[index] = xy1[index]
        x2[index] = x1[index]
        y2[index] = y1[index]
        xx2[index] = xx1[index]
	    a2[index] = a1[index]
	    b2[index] = b1[index]	  
	  
		x20 = x10
		y20 = y10	
		x10 = index 
		y10 = O(index)	
		
		if x20 ~= nil then 
		  n = x10 - x20 
		  xy = 0 
		  x = 0
		  y = 0
		  xx = 0
          for i = x20+1, x10 do		    
		    xy = xy + i*O(i)
			x = x + i
			y = y + O(i)
			xx = xx + i*i
		  end 
		  n1[index] = n
		  xy1[index] = xy
		  x1[index] = x
		  y1[index] = y
		  xx1[index] = xx
		  if (n*xx - x*x) ~= 0 then 
		    a = (n*xy - x*y)/(n*xx - x*x)
		  else 
		    a = 0
		  end 
		  b = (y - a*x)/n
	      a1[index] = a
	      b1[index] = b
		  
		end
		
	  else 

					
		  if O(index) < y10*(1-de/100) and y10 > y20 then 
		  
			n2[index] = n1[index]
			xy2[index] = xy1[index]
			x2[index] = x1[index]
			y2[index] = y1[index]
			xx2[index] = xx1[index]
			a2[index] = a1[index]
			b2[index] = b1[index]	
		  
			x20 = x10
			y20 = y10
			x10 = index 
			y10 = O(index)	

			if x20 ~= nil then 
			  n = x10 - x20 
			  xy = 0 
			  x = 0
			  y = 0
			  xx = 0
			  for i = x20+1, x10 do		    
				xy = xy + i*O(i)
				x = x + i
				y = y + O(i)
				xx = xx + i*i
			  end 
			  n1[index] = n
			  xy1[index] = xy
			  x1[index] = x
			  y1[index] = y
			  xx1[index] = xx
			  if (n*xx - x*x) ~= 0 then 
			    a = (n*xy - x*y)/(n*xx - x*x)
			  else 
			    a = 0
			  end 
			  b = (y - a*x)/n
			  a1[index] = a
			  b1[index] = b
			  
			end

		  else 
			if O(index) < y10 and y10 <= y20 and x10 ~= nil and n1[index-1] ~= nil
			then
		
	   		  n = n1[index-1] + index - x10
			  xy = xy1[index-1]
			  x = x1[index-1]
			  y = y1[index-1]
			  xx = xx1[index-1]
			  for i = x10+1, index do		    
			 	xy = xy + i*O(i)
				x = x + i
				y = y + O(i)
				xx = xx + i*i
			  end 
			  n1[index] = n
			  xy1[index] = xy
			  x1[index] = x
			  y1[index] = y
			  xx1[index] = xx
			  if (n*xx - x*x) ~= 0 then 
			    a = (n*xy - x*y)/(n*xx - x*x)
			  else 
			    a = 0
			  end 
			  b = (y - a*x)/n
			  a1[index] = a
			  b1[index] = b				  

			  x10 = index 
			  y10 = O(index)	  
			else 	
		      if O(index) > y10 and y10 >= y20 and x10 ~= nil and n1[index-1] ~= nil
		      then 	

			    n = n1[index-1] + index - x10
			    xy = xy1[index-1]
			    x = x1[index-1]
			    y = y1[index-1]
			    xx = xx1[index-1]
			    for i = x10+1, index do		    
			  	  xy = xy + i*O(i)
				  x = x + i
				  y = y + O(i)
				  xx = xx + i*i
			    end 
			    n1[index] = n
			    xy1[index] = xy
			    x1[index] = x
			    y1[index] = y
			    xx1[index] = xx
			    if (n*xx - x*x) ~= 0 then 
			      a = (n*xy - x*y)/(n*xx - x*x)
			    else 
			      a = 0
			    end 
			    b = (y - a*x)/n
			    a1[index] = a
			    b1[index] = b				  
			  
		        x10 = index 
		        y10 = O(index)	  
              else 
			    n1[index] = n1[index-1]
                xy1[index] = xy1[index-1]
                x1[index] = x1[index-1]
                y1[index] = y1[index-1]
                xx1[index] = xx1[index-1]
	            a1[index] = a1[index-1]
	            b1[index] = b1[index-1]				  
		      end 	
			  
			end 		
		  end 	
      end 	  
  end 	
  
  if index == Size() then 
   --[[
    uplvs, dwlvs, uplvsi, dwlvsi = getlevels(index)
    for i = 1, index  do	          
	  SetValue(i, 1, nil)
	  SetValue(i, 2, nil)
    end  	
    for i = uplvsi, index  do	          
	  SetValue(i, 1, uplvs)
    end  
    for i = dwlvsi, index  do	          
	  SetValue(i, 2, dwlvs)
    end    	--]]
  end 
  
  

  upv = 0
  dwv = 0   
  for i = x20, x10  do	 
    val = a1[index]*i + b1[index]
	if O(i) - val > upv then 
	  upv = O(i) - val
	end 
	if val - O(i) > dwv then 
	  dwv = val - O(i)
	end 	
  end   
  
  val = nil
  if a1[index] ~= nil and b1[index] ~= nil then 
    val = a1[index]*index + b1[index]
  end  

  if upv ~= nil then 
    upv = val + upv
  end 
  
  if dwv ~= nil then 
    dwv = val - dwv
  end 
  
  return nil, upv, dwv
 
  
end
5 Комментариев
  • NOT A HAMSTER
    28 ноября 2023, 00:47


  • NOT A HAMSTER
    28 ноября 2023, 00:59
    Первооткрыватель каналов это Д'артаньян. Когда он вскрикнул: каналья тысяча чертей!!!
    • Главком Главком
      28 ноября 2023, 08:46
      NOT A HAMSTER, он про ТГ канальи восклицал, а топик стартер про канальи на графике)
  • Jame Bonds
    28 ноября 2023, 09:59
    Да он же лажает прям на вашей картинке ))) Так слона не продать.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн