autotrade
autotrade личный блог
21 июля 2019, 02:05

Горизонтальные объемы на рост (зеленый) на падение (красный)

Горизонтальные объемы на рост (зеленый) на падение (красный)
как работает:

Горизонтальные объемы на рост (зеленый) на падение (красный)

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

зеленый:
Settings={
Name="GVOL_green",
period=200,
maxline=20,
width=4,
count=50,
xshift=0,
vlm=1,
timing=0,
line={} 
}
--[[

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

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

--]]

function Init()

    n=Settings.count  
	
    vol={}
    for j = 1, n do        
      vol[j]=0
      Settings.line[j] = {Color=RGB(0,192,0),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)
    

 
  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
			  if C(i) > O(i) then 
			    if Settings.timing == 1 then
				  vol[j]=vol[j]+V(i)*i/Settings.period
				else 
                  vol[j]=vol[j]+V(i) 
				end
			  end 
            end 			
          else 		  
		    vol[j]=vol[j]+1
		  end
        end  
       end    
      end
            
    end   

    for j = 1, n do
	  --vol[j] = math.floor(vol[j]+0.5)
      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] >= math.floor((Settings.maxline - k)*maxv/Settings.maxline+0.5) then 
	    if vol[j] >= (Settings.maxline - k)*maxv/Settings.maxline then 		  
          SetValue(i, j, minc + (j+0.25)*delta)		  
        else  		
          SetValue(i, j, nil)
        end      
      end
    end
	  
     
  end


end
красный:
Settings={
Name="GVOL_red",
period=200,
maxline=20,
width=4,
count=50,
xshift=0,
vlm=1,
timing=0,
line={} 
}
--[[

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

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

--]]

function Init()

    n=Settings.count  
	
    vol={}
    for j = 1, n do        
      vol[j]=0
      Settings.line[j] = {Color=RGB(192,0,0),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)
    

 
  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
			  if C(i) < O(i) then 
			    if Settings.timing == 1 then
				  vol[j]=vol[j]+V(i)*i/Settings.period
				else 
                  vol[j]=vol[j]+V(i) 
				end
			  end 
            end 			
          else 		  
		    vol[j]=vol[j]+1
		  end
        end  
       end    
      end
            
    end   

    for j = 1, n do
	  --vol[j] = math.floor(vol[j]+0.5)
      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] >= math.floor((Settings.maxline - k)*maxv/Settings.maxline+0.5) then 
	    if vol[j] >= (Settings.maxline - k)*maxv/Settings.maxline then 		  
          SetValue(i, j, minc + (j-0.25)*delta)		  
        else  		
          SetValue(i, j, nil)
        end      
      end
    end
	  
     
  end


end
16 Комментариев
  • Lilith
    21 июля 2019, 09:01
    поясните для дремучих, пжлста, это куда вставить и для какой проги?
    Спасибо
  • Levachev
    21 июля 2019, 12:12
    СКАЧАТЬ ГДЕ ?))))
  • Salvinit
    21 июля 2019, 12:37
    Для квика. Lua добавить индикатор.
  • Salvinit
    21 июля 2019, 12:40
     Странно с 175 по 190 были объемы, у вас они не отображаются 
  • q123
    21 июля 2019, 12:44
    Можно попросить пояснить вторую картинку
      • q123
        22 июля 2019, 09:15
        autotrade.ru, спасибо за пояснения
          • q123
            22 июля 2019, 10:25
            autotrade.ru, :))), я правильно понимаю, что это два индикатора, один забивается как зеленый, а другой как красный?))
              • q123
                22 июля 2019, 11:59
                autotrade.ru, спасибо
  • Neo
    21 июля 2019, 22:39
    Спасибо! Думаю это полезно.
  • Sawwa
    26 июля 2019, 13:44
    Извините но я сооовсем не понял последовательность действий что бы отобразить горизонтальный объем, если не затруднит — можно более подробно объяснить что создавать и куда кидать.
    За ранее благодарен

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

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