Блог им. autotrade

Индикатор осцелятор

Индикатор осцелятор на загзаге. Если пересекаем синию линию вверх то лонг если вниз, то выход из лонга. Если пересекаем красную линию вниз, то шорт, если пересекаем вверх то выход из шорта

Индикатор осцелятор


--[[
вопросы к автору: https://t.me/autotrade_ru
параметры: 
Proc1 - процент зигзага 
--]]
Settings={
Name="ZIG_mult_OSC_v3",
Proc1=2,
Proc2=4,
Up = 0.5,
Dw = -0.5,
    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 = "cur3",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(255, 0, 0)
                    }						
                }
}

function Init()

  y1_1 = nil
  y2_1 = nil
  x1_1 = 1
  x2_1 = 1
  
  y1_2 = nil
  y2_2 = nil
  x1_2 = 1
  x2_2 = 1  
  
 
 
  return 3
  
end

function OnCalculate(index)

  de_1 = Settings.Proc1

  vl_1 = C(index)
  if index == 1 then 
    ind_1 = {}  
	y1_1 = vl_1
    y2_1 = vl_1
	ind_1[index] = 0
  else   
    ind_1[index] = ind_1[index-1]
	  if C(index) > y1_1*(1+de_1/100) and y1_1 < y2_1 then 
	    x2_1 = x1_1
	    y2_1 = y1_1	
	    x1_1 = index 
	    y1_1 = C(index)		
		ind_1[index] = (C(index) - y2_1*(1+de_1/100))/(y2_1*de_1/100)
      else 
	    if C(index) > y1_1 and y1_1 >= y2_1 
		then 		  
	      x1_1 = index 
	      y1_1 = C(index)	  			  
	    end 		
        if y1_1 >= y2_1 
		then 
		  if C(index) > y2_1*(1+de_1/100) then 
		    ind_1[index] = (C(index) - y2_1*(1+de_1/100))/(y2_1*de_1/100)
		  else
		    ind_1[index] = 0
          end		  	      
	    end 				
	  end 	

	  	  		
	  if C(index) < y1_1*(1-de_1/100) and y1_1 > y2_1 then 
	    x2_1 = x1_1
	    y2_1 = y1_1
	    x1_1 = index 
	    y1_1 = C(index)				
		ind_1[index] = -(y2_1*(1-de_1/100)-C(index))/(y2_1*de_1/100)
      else 
	    if C(index) < y1_1 and y1_1 <= y2_1
		then 
	      x1_1 = index 
	      y1_1 = C(index)	  			  
	    end 	
		if y1_1 <= y2_1 
		then 
		  if C(index) < y2_1*(1-de_1/100) then 
		    ind_1[index] = -(y2_1*(1-de_1/100)-C(index))/(y2_1*de_1/100)
		  else
		    ind_1[index] = 0
          end		  	      
	    end 
	  end 	
	  	  		
	end 	

  
  
  de_2 = Settings.Proc2

  vl_2 = C(index)
  if index == 1 then 
    ind_2 = {}
	y1_2 = vl_2
    y2_2 = vl_2
	ind_2[index] = 0
  else   
    ind_2[index] = ind_2[index-1]
	  if C(index) > y1_2*(1+de_2/100) and y1_2 < y2_2 then 
	    x2_2 = x1_2
	    y2_2 = y1_2	
	    x1_2 = index 
	    y1_2 = C(index)		
		ind_2[index] = (C(index) - y2_2*(1+de_2/100))/(y2_2*de_2/100)
      else 
	    if C(index) > y1_2 and y1_2 >= y2_2 
		then 
	      x1_2 = index 
	      y1_2 = C(index)	  			  
	    end 
		if y1_2 >= y2_2 
		then 
		  if C(index) > y2_2*(1+de_2/100) then 
		    ind_2[index] = (C(index) - y2_2*(1+de_2/100))/(y2_2*de_2/100)
		  else
		    ind_2[index] = 0
          end		  	      
	    end 
	  end 	

	  	  		
	  if C(index) < y1_2*(1-de_2/100) and y1_2 > y2_2 then 
	    x2_2 = x1_2
	    y2_2 = y1_2
	    x1_2 = index 
	    y1_2 = C(index)				
		ind_2[index] = -(y2_2*(1-de_2/100)-C(index))/(y2_2*de_2/100)
      else 
	    if C(index) < y1_2 and y1_2 <= y2_2
		then 
	      x1_2 = index 
	      y1_2 = C(index)	  			  
	    end 	
		if y1_2 <= y2_2 
		then 
		  if C(index) < y2_2*(1-de_2/100) then 
		    ind_2[index] = -(y2_2*(1-de_2/100)-C(index))/(y2_2*de_2/100)
		  else
		    ind_2[index] = 0
          end		  	      
	    end 		
	  end 	
	  	  		
	end 	

  
  return ind_1[index]+ind_2[index], Settings.Up, Settings.Dw
 
  
end<br /><br />
Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
472
2 комментария
А еслив ни пирисикаем, что делать???
avatar
AMBASSADOR FX, если график между ними то кэш
avatar

Читайте на SMART-LAB:
Фото
👥 Почему МГКЛ делает ставку на частных инвесторов
📈 Частные инвесторы сыграли важную роль в развитии МГКЛ: привлечение капитала через облигации, pre-IPO и последующий выход на биржу помогло...
Фото
Почему 10 лет назад «Норникель» закрыл легендарный Никелевый завод
Для города это было большое событие, ведь еще в 1942 году здесь произвели первый никель для нужд фронта . На производстве десятилетиями работали...
Фото
Мосэнерго. МСФО за Q2 26г. Расходы растут быстрее выручки
Компания Мосэнерго опубликовала финансовые результаты за Q2 2026г. по МСФО: 👉Выработка электроэнергии — 13,67 млрд кВт.*ч. (-2,4% г/г)...
Фото
Промомед - самая быстрорастущая компания на рынке по цене IPO
Промомед — фармацевтическая компания с одним из самых высоких темпов роста выручки в 2025 году, и, возможно, в этом году тоже.  Компания...

теги блога autotrade

....все тэги



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