если кривая пересекает нулевую линию, то сигнал на покупку или продажу в зависимости от направления пересечения
Settings={
Name="VDIV",
period=20,
periodma=15,
line=
{
{
Name = "cur1",
Type =TYPE_LINE,
Width = 1,
Color = RGB(255,0,0)
},
{
Name = "cur2",
Type =TYPE_LINE,
Width = 1,
Color = RGB(0,0,0)
}
}
}
--[[
-- кривая объемов
описание свойств:
period: сколько баров берутся в подсчет
weighted: =0 - обычная, =1 - взвешанная
proportional: =1- считается: volume*(close-open)/(hight-low), =0 - считается: volume*sign(close-open)
--]]
function Init()
mas = {}
return 3
end
function OnCalculate(index)
sumv1 = 0
sumv2 = 0
if index >= Settings.period then
for i=index-Settings.period+1, index do
if V(i) ~= nil and C(i) ~= nil then
if C(i) > O(i) then
sumv1 = sumv1+V(i)*(C(i) - O(i))
else
sumv2 = sumv2+V(i)*(O(i) - C(i))
end
end
end
else
sumv1 = nil
sumv2 = nil
end
if sumv2 ~= 0 and sumv2 ~= nil then
vdiv = sumv1/sumv2
vdiv2 = sumv2/sumv1
vdiv3 = vdiv - vdiv2
else
vdiv = nil
vdiv2 = nil
vdiv3 = nil
end
mas[index] = vdiv3
ma = 0
if index >= Settings.periodma then
for i=index-Settings.periodma+1, index do
if mas[i] ~= nil then
ma = ma + mas[i]
end
end
end
ma = ma/Settings.periodma
return ma, 0
end