autotrade
autotrade личный блог
26 августа 2019, 14:55

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

сигналом к покупке является пересечение ценой кривой снизу вверх, а на продажу — наоборот.
вход по цене закрытия бара, пересекшего индикатор или цена открытия следующего бара.
в дальнейшем немного поменяю логику

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

--[[
параметры: 
Procent - процент зигзага 
--]]
Settings={
Name="ZIGZAGPROF",
Procent=1,
    line=                                     
                {  
					{  
                        Name = "cur1",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 0)
                    },
                    {  
                        Name = "cur2",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 255)
                    }							
                }
}

function Init()
  
  y1 = nil
  y2 = nil
  x1 = 1
  x2 = 1
    
  return 1
  
end

function OnCalculate(index)

  de = Settings.Procent
  
  delt = 0.01

  vl = C(index)
  if index == 1 then 
	y1 = vl
    y2 = vl
  else   
	  if C(index) > y1*(1+de/100) and y1 < y2 then 
	    x2 = x1
	    y2 = y1	
	    x1 = index 
	    y1 = C(index)	        
	  end 	
	  if C(index) > y1 and C(index) > y2 then 
	    x1 = index 
	    y1 = C(index)	  			  
	  end 
	  	  		
	  if C(index) < y1*(1-de/100) and y1 > y2 then 
	    x2 = x1
	    y2 = y1
	    x1 = index 
	    y1 = C(index)  		
	  end 	
	  if C(index) < y1 and C(index) < y2 then 
	    x1 = index 
	    y1 = C(index)	  			  
	  end 	  	  		
	end 	
  
  if x1 ~= index then 
    curfrom = x1
	curto = index
  else 
    curfrom = x2
	curto = x1
  end 
 
 --[[
  if curto ~= curfrom and curfrom ~= nil and curto ~= nil then 
    if C(curto) ~= nil and C(curfrom) ~= nil then 
      k = (C(curto)- C(curfrom))/(curto- curfrom)  
      for i = curfrom, index  do
        curv = i*k + C(curto) - curto*k  		          
	    SetValue(i, 1, curv)
      end   	
	end 
  end
--]]
    
    lev = nil
	if x1 ~= x2 then  
     
	
	k = (C(x1)- C(x2))/(x1- x2)    
	maxd = 0
    for i = x2, x1  do
      
	  lev = i*k + C(x1) - x1*k  		
	  
	  if  C(x2) > C(x1) and lev <= H(i) 
	  then 
	    if maxd < H(i) - lev  then 
          maxd = H(i) - lev 
		end
        --maxd = 0.5		
      end 
	  
      if  C(x2) < C(x1) and lev >= L(i) 
	  then 
	    if maxd > L(i) - lev  then 
          maxd = L(i) - lev
		end 
		--maxd = -0.5
      end 	  
	  
    end   	
      
    lev = nil 
    --[[if x1 < index 
	  and 
	  (
	  C(x2) > C(x1) and C(x1) < C(index) 
      or 
      C(x2) < C(x1) and C(x1) > C(index) 	  
	 )
	then --]]
      lev = 
	    index*k + C(x1) - x1*k + 
		maxd
	--end   
    
	  
	  
	--[[  
	
	map = 10
	lev = 0
	if index-map+1 > 0 then 
      for i = index-map+1, index  do
        lev = lev + C(i)
      end   		
	  lev = lev/map
	  ma = lev
	end
	
	map = 30
	lev2 = 0
	if index-map+1 > 0 then 
      for i = index-map+1, index  do
        lev2 = lev2 + C(i)
      end   		
	  lev2 = lev2/map
	  ma2 = lev2
	end	

	
	if 
	  C(x2) > C(x1) and C(x1) < C(index) and C(index) > lev and C(index) - C(x1) > C(index)*delt
	  or 
	  C(x2) > C(x1) and C(x1) < C(index) and C(index) > lev2 
	then 
	  lev = C(x1)--*(1-delt)
	  prev = lev        
	else  	
	  if 
	    C(x2) < C(x1) and C(x1) > C(index) and C(index) < lev and C(x1) - C(index) > C(index)*delt
	    or
	    C(x2) < C(x1) and C(x1) > C(index) and C(index) < lev2 
	  then 
	    lev = C(x1)--*(1+delt)
	    prev = lev
	  else
        lev = lev2  
	  end		
    end	

	if 
	  C(x1) > C(x2) and ( lev < C(index) or prev == C(x2) )
	then 
	  lev = C(x2)--*(1+delt)
	  prev = lev
	end
	
	if
	  C(x1) < C(x2) and ( lev > C(index) or prev == C(x2) )
	then 
	  lev = C(x2)--*(1-delt)
	  prev = lev
	end	
	
    if C(x1) < C(x2) and ( lev < C(index) or prev == C(x1) )
	then         	  
	  lev = C(x1)
	  prev = lev
    end
	  
    if C(x1) > C(x2) and ( lev > C(index) or prev == C(x1) ) 
	then         	  
	  lev = C(x1)
	  prev = lev       		
	end
	 --]] 

	
  end   
  
  return  lev
 
  
end


49 Комментариев
    • (1:10) || algo
      27 августа 2019, 08:57
      autotrade.ru, у мну оставалось 69. Постеснялся все отдать =)
  • kaliostro
    26 августа 2019, 16:09
    а почему бы этот скрипт вам не дать файлом? А то я я затрудняюсь   как его вставить в папку Луаиндикаторс.Думаю так: копирую этот скрипт и вставляю в блокнот, пишу расширение lua и вставляю в папку?
    • kaliostro
      26 августа 2019, 17:25
      Андрей Андреичъ, в папке Луаиндикаторс создаем в блокноте файл ZIGZAGPROF.lua Может я неправильно называю расширением то что после точки — lua, вроде это называют расширение?
  • kaliostro
    26 августа 2019, 16:16
     спасибо вам, получилось самому установить этот индюк!!!
  • MS
    26 августа 2019, 16:46
    сигналом к покупке является пересечение ценой кривой снизу вверх, а на продажу — наоборот

    Разорение.
    Все группировки данных, средние по ним и пр. не дадут прибыльных сигналов.
  • Crazy animaL
    26 августа 2019, 16:48
    Скажите цена сама под них подстраивается?
      • Crazy animaL
        27 августа 2019, 10:53
        autotrade.ru, Спасибо за честный ответ.
  • DJ
    26 августа 2019, 16:49
    не подскажите в чем проблема, квик зависает и падает при загрузке индикатора, 5 раз пробовал.
    • kaliostro
      26 августа 2019, 17:21
      DJ, да я заметил, что индикатор этот медленно грузиться.тогда лучше от него отказаться
        • kaliostro
          26 августа 2019, 19:37
          autotrade.ru, я ничего плохого не говорю про ваш индикатор, просто если у человека квик виснет, то лучше его не ставить
      • bbbugai
        26 августа 2019, 18:29
        autotrade.ru, на скрине дневной показан
          • bbbugai
            26 августа 2019, 18:55
            autotrade.ru, может у вас есть два одинаковых индикатора с одним названием? -  не понял этого вопроса.
  • прикольно
  • AlexGood
    26 августа 2019, 20:36
    Интуиция подсказывает, что дельный индикатор!
      • Astronomer
        26 августа 2019, 23:16
        autotrade.ru, Спасибо. Отличная вещь! 
  • Александр (Lowryder)
    26 августа 2019, 21:53
    На каких таймфреймах кроме дней работает?
    • Crazy animaL
      27 августа 2019, 16:26
      Александр (Lowryder), на вековых лучше всех
  • SNP13
    27 августа 2019, 01:43
    Это какой-то общеизвестный индикатор? Как строятся наклонные линии по которым строится индикатор? По формулам сложно понять. Можно ссылку какую-то с более подробным описанием.
    • Crazy animaL
      27 августа 2019, 17:27
      SNP13, Цена сама подстраивается под линии, руби бабло только знай!
  • Acf
    27 августа 2019, 01:43
    ZZ на истории только работает, в реале слив
      • AleksPut
        27 августа 2019, 10:54
        autotrade.ru, 
        что смотреть? Это уже давно известно. Зигзаг —это  индикатор, который неожиданно и резко меняет свое  предыдущее значение задним числом и только на истории все красиво выглядит.
        Обсуждать зигзаг и предлагать на его основе индикаторы это не комильфо
          • Crazy animaL
            27 августа 2019, 17:27
            autotrade.ru, Это просто магия какая-то! Спасибо я прозрел просто.
          • AleksPut
            27 августа 2019, 18:08
            autotrade.ru, не вводите людей в заблуждение, если не можете свои слова подтвердить.  Зигзаг может изменить свое значение и не на предыдущем баре… стыдно это не знать
  • Crazy animaL
    27 августа 2019, 22:54
    Вы собственно не написали, что собираетесь делать с долларом, там сейчас  полосочка снизу.

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

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