Сургутнефтегаз преф - хороший сигнал на покупку
покупка в долгую, возможно, на год
Авто-репост. Читать в блоге >>>
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
Settings={ Name="VCUR", period=20, periodma=20, weighted=1, proportional=1, line= { { Name = "cur1", Type =TYPE_LINE, Width = 1, Color = RGB(155,0, 0) }, { Name = "cur2", Type =TYPE_LINE, Width = 1, Color = RGB(0,0,155) }, { Name = "cur3", 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) --sumv = 0 if index >= Settings.period then for i=index-Settings.period-1, index do if sumv == nil then sumv = 0 end if C(i-1) ~= nil then if C(i-1) > O(i-1) then if Settings.proportional == 0 then prop = 1 else if (H(i-1)-L(i-1)) == 0 then prop = 0 else prop = (C(i-1)-O(i-1))/(H(i-1)-L(i-1)) end end if Settings.weighted == 0 then sumv = sumv + prop*V(i-1) else sumv = sumv + prop*V(i-1)*(i-(index-Settings.period))/Settings.period end else if Settings.proportional == 0 then prop = 1 else if (H(i-1)-L(i-1)) == 0 then prop = 0 else prop = (O(i-1)-C(i-1))/(H(i-1)-L(i-1)) end end if Settings.weighted == 0 then sumv = sumv - prop*V(i-1) else sumv = sumv - prop*V(i-1)*(i-(index-Settings.period))/Settings.period end end end end else sumv = nil end mas[index]=sumv 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 sumv, ma, 0 end
Settings={ Name="VCUR", period=20, line= { { Name = "cur1", Type =TYPE_LINE, Width = 2, Color = RGB(140,181, 242) } } } --[[ -- кривая объемов описание свойств: period- сколько баров берутся в подсчет --]] function Init() return 1 end function OnCalculate(index) if index >= Settings.period then for i=index-Settings.period-1, index do if sumv == nil then sumv = 0 end if C(i-1) ~= nil then if C(i-1) > O(i-1) then sumv = sumv + V(i-1) else sumv = sumv - V(i-1) end end end else sumv = nil end return sumv end
Settings={ Name="GVOL", period=200, maxline=20, width=4, count=50, xshift=0, vlm=1, line={} } --[[ описание свойств: xshift - сдвиг по горизонтали count - количество черточек по вертикали period- сколько баров берутся в подсчет maxline - количество баров для максимальной черточки width - толщина черточки vlm - 1-c учетом оъема 0-просто распределение без объема, --]] function Init() n=Settings.count vol={} for j = 1, n do vol[j]=0 Settings.line[j] = {Color=RGB(192,192,192),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 vol[j]=vol[j]+V(i) 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] >= (Settings.maxline - k)*maxv/Settings.maxline then SetValue(i, j, minc + j*delta) else SetValue(i, j, nil) end end end end end