ввел новые свойства в индикатор:
xshift — сдвиг по горизонтали
count — количество черточек по вертикали
period- сколько баров берутся в подсчет
maxline — количество баров для максимальной черточки
width — толщина черточки
т.о. можно на одном графике выставить несколько вертикальных объемов с разными смещениями:
скачать: my-files.ru/co7l8i
код:
Settings={
Name="GVOL",
period=200,
maxline=20,
width=4,
count=50,
xshift=0,
line={}
}
--[[
описание свойств:
xshift - сдвиг по горизонтали
count - количество черточек по вертикали
period- сколько баров берутся в подсчет
maxline - количество баров для максимальной черточки
width - толщина черточки
--]]
function Init()
n=Settings.count
vol={}
for j = 1, n do
vol[j]=0
Settings.line[j] = {Color=RGB(0,172,220),Type=TYPE_LINE,Width=Settings.width}
for i=1, Size() do
SetValue(i, j, nil)<br />end
end
return n
end
function OnCalculate(index)
if (index < Size()-Settings.xshift)or(index > Size()-Settings.xshift) then
return nil
else
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.period, Size() 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
vol[j]=vol[j]+V(i)
end
end
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*delta)
else
SetValue(i, j, nil)
end
end
end
end
end
например добавляешь 3 раза
в первом будет xshift=0 во втором xshift=100 в третем xshift=200 и period = 100 во всех
только вот советую… всю эту хрень видеть на графике глазами-)
математика вообще не причем… видно по фракталам!