Блог им. 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
Спасибо
например, если красные объемы сверху и цена едет к ним снизу, то шортисты пытаются откупиться поэтому цена будет ускорятся, если такие же объемы снизу, то они будут пытаться так же откупаться чтоб выйти в безубыток поэтому цена будет тормозиться
За ранее благодарен