autotrade
autotrade личный блог
17 июля 2019, 03:20

Индикатор возможных прибылей и убытков

на базе статьи: https://smart-lab.ru/blog/548810.php

Рассчитывается как произведение горизонтальных объемов на отклонение цены относительно текущей позиции
Данный индикатор позволяет понимать в какую сторону торговать, чтоб получить прибыль, какой выставлять TP и SL
Чем больше величина горизонтальной лини, тем больше вероятность заработка относительно текущей позиции цены
формула индикатора такая: Ij = Vj*abs(Pj-P0), где Vj -горизонтальный объем, Pj -цена на уровне горизонтального объема, P0 — текущая цена
рекомендации по TP и SL:

Индикатор возможных прибылей и убытков





Индикатор возможных прибылей и убытков


код:
Settings={
Name="TPSL",
period=200,
maxline=20,
width=4,
count=50,
xshift=0,
vlm=1,
line={} 
}
--[[

описание свойств:

xshift - сдвиг по горизонтали
count - количество черточек по вертикали
period- сколько баров берутся в подсчет
maxline - количество баров для максимальной черточки
width - толщина черточки
vlm - 1-c учетом оъема 0-просто распределение без объема,

--]]

function Init()

    n=Settings.count  
	
    vol={}
    for j = 1, n do        
      vol[j]=0
      Settings.line[j] = {Color=RGB(190,50,50),Type=TYPE_LINE,Width=Settings.width}
      --for i=Size()-Settings.xshift-Settings.maxline, Size()-Settings.xshift do 	
	  for i=1, Size() do 	
	   SetValue(i, j, nil)
	  end 
    end  
    
  return Settings.count  
end

function OnCalculate(index)
    
   sz = Size()	
   sumv = 0
 
  if (index < Size()-Settings.xshift)or(index > Size()-Settings.xshift) then
    return nil
  else  	   
  
    n=Settings.count  
	
    maxv=0
    maxc=0
    minc=9999 
         
    for i=Size()-Settings.xshift-Settings.period, Size()-Settings.xshift do  
       
      if C(i) ~= nil then         
        if maxc < C(i) then 
          maxc = C(i)      
        end        
        if minc > C(i) then 
          minc = C(i)      
        end
      end
            
    end   
     
    delta = (maxc - minc)/n
	
     
    for i=Size()-Settings.xshift-Settings.period, Size()-Settings.xshift do  
 
      for j = 1, n do 
       if C(i) ~= nil then      
        if (C(i) > minc + (j-1)*delta) and (C(i) <= minc + j*delta) then 
		  if Settings.vlm == 1 then
		    if V(i) ~= nil then
              vol[j]=vol[j]+V(i) 
            end 			
          else 		  
		    vol[j]=vol[j]+1
		  end
        end  
       end    
      end
            
    end   
	
    for j = 1, n do           
	     
      sumv = sumv + vol[j]
		
    end		
	
    for j = 1, n do           
	     
	  if C(sz) < minc + j*delta then
	    vol[j]=(minc + j*delta - C(sz))*vol[j]/sumv
	  else
	    vol[j]=(C(sz) - (minc + j*delta))*vol[j]/sumv
	  end  
		
    end		

    for j = 1, n do
      if maxv < vol[j] then 
        maxv = vol[j]
      end                
    end    
      

    k = 0 
    for i=Size()-Settings.xshift-Settings.maxline+1, Size()-Settings.xshift do  
      k = k + 1
      for j = 1, n do
        if vol[j] >= (Settings.maxline - k)*maxv/Settings.maxline then 
          SetValue(i, j, minc + (j-0.5)*delta)		  
        else  		
          SetValue(i, j, nil)
        end      
      end
    end
	  
     
  end


end
6 Комментариев
  • Иван Сидоров
    17 июля 2019, 04:36
    Блин, по описанию не врублюсь, может коротенькое видео снимите с разъяснениями. 
  • АлексейФ
    17 июля 2019, 19:30
    TP в разы меньше SL?
    По классике ММ это же слив.
  • dennet
    17 июля 2019, 20:37
    стоп-лос больше чем тэйк в 3 раза! или я чего то не понял?

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

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