![Горизонтальные объемы на рост (зеленый) на падение (красный) Горизонтальные объемы на рост (зеленый) на падение (красный)](/uploads/images/00/78/48/2019/07/21/cf5073.jpg)
как работает:
цена притягивается к красным объемам сверху и отталкивается от красного объема снизу и наоборот для зеленых объемов. это объясняется тем что шортисты или лонгисты пытаются по-быстрому закрыть убыточную позицию хотя бы в безубыток
например, если красные объемы сверху и цена едет к ним снизу, то шортисты пытаются откупиться поэтому цена будет ускорятся, если такие же объемы снизу, то они будут пытаться так же откупаться чтоб выйти в безубыток поэтому цена будет тормозиться
зеленый:
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
Спасибо
например, если красные объемы сверху и цена едет к ним снизу, то шортисты пытаются откупиться поэтому цена будет ускорятся, если такие же объемы снизу, то они будут пытаться так же откупаться чтоб выйти в безубыток поэтому цена будет тормозиться
За ранее благодарен