Блог им. autotrade

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

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

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

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

зеленый:
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
  • обсудить на форуме:
  • Quik Lua
★28
16 комментариев
поясните для дремучих, пжлста, это куда вставить и для какой проги?
Спасибо
avatar
Lilith, quik
avatar
СКАЧАТЬ ГДЕ ?))))
avatar
Александр, так копируй в файл исходный код, название файла любое назови его как-нибудь с расширением lua и кинь в папку QUIK\LuaIndicators
avatar
Для квика. Lua добавить индикатор.
avatar
 Странно с 175 по 190 были объемы, у вас они не отображаются 
avatar
Salvinit, объемы на конец бара берутся
avatar
Можно попросить пояснить вторую картинку
avatar
q123, цена притягивается к красным объемам сверху и отталкивается от красного объема снизу и наоборот для зеленых объемов. это объясняется тем что шортисты или лонгисты пытаются по-быстрому закрыть убыточную позицию хотя бы в безубыток
например, если красные объемы сверху и цена едет к ним снизу, то шортисты пытаются откупиться поэтому цена будет ускорятся, если такие же объемы снизу, то они будут пытаться так же откупаться чтоб выйти в безубыток  поэтому цена будет тормозиться
avatar
autotrade.ru, спасибо за пояснения
avatar
q123, все секреты раскрываю :)
avatar
autotrade.ru, :))), я правильно понимаю, что это два индикатора, один забивается как зеленый, а другой как красный?))
avatar
q123, да в одном индикаторе lua не предназначено динамически менять цвет поэтому пришлось сделать два инлдиктатора
avatar
autotrade.ru, спасибо
avatar
Спасибо! Думаю это полезно.
avatar
Извините но я сооовсем не понял последовательность действий что бы отобразить горизонтальный объем, если не затруднит — можно более подробно объяснить что создавать и куда кидать.
За ранее благодарен
avatar

теги блога autotrade

....все тэги



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