Trendcvd$
Trendcvd$
0
at https://mozilla.org/MPL/2.0/
// © KioseffTrading
//@version=5
indicator("Trended CVD [Mxwll]", overlay =true, max_labels_count = 500,
max_lines_count = 500, max_boxes_count = 500, max_polylines_count = 100)
import TradingView/ZigZag/7 as ZigZagLib
zigZag.update()
type zigZagData
int start
int end
array <int> indexArr
array <float> volArr
array <chart.point> cvdCoords
float vol
int index
float max = 0
float min = 1e8
-1 => -volume
1 => volume
=> 0
id.unshift(value)
zzd.indexArr.updateData(time)
zzd.volArr .updateData (volumeConfig())
zzd.max := math.max(zzd.max, high)
zzd.min := math.min(zzd.min, low)
atr = ta.atr(14) * 2
if line.all.size() != line.all.size()[1]
if line.all.size() > 2
getX1 = line.all.last().get_x1(), getX2 =
line.all.get(line.all.size() - 2).get_x1()
getY1 = line.all.last().get_y1()
getY2 = line.all.get(line.all.size() - 2).get_y1()
priceRange = getY1 - getY2
startIndex = zzd.indexArr.indexof(zzd.start)
endIndex = zzd.indexArr.indexof(zzd.end)
slicedVol = id.slice(endIndex, startIndex + 1)
slicedTime = zzd.indexArr.slice(endIndex, startIndex + 1)
direction = atr * math.sign(priceRange)
signDir = math.sign(slicedVol.sum())
addDivTxt = ""
sign = math.sign(slicedVol.sum())
if getY1 < getY2 and sign > 0 or getY1 > getY2 and sign < 0
addDivTxt := "\nDivergence"
normVol = slicedVol.copy()
if normVol.size() > 1
for i = normVol.size() - 2 to 0
normVol.set(i, normVol.get(i + 1) + normVol.get(i))
for i = normVol.size() - 1 to 0
cvd.cvdCoords.push(chart.point.from_time(slicedTime.get(i),
normed))
atr = ta.atr(14) * 2
if barstate.islast
getX1 = line.all.last().get_x1()
getX2 = line.all.last().get_x2()
getY1 = line.all.last().get_y1()
getY2 = line.all.last().get_y2()
startIndex = zzd.indexArr.indexof(getX1)
signDir = math.sign(slicedVol.sum())
[col, beginTxt, lineCol] = switch signDir
if na(liveLabel)
else
normVol = slicedVol.copy()
if normVol.size() > 1
for i = normVol.size() - 2 to 0
normVol.set(i, normVol.get(i + 1) + normVol.get(i))
for i = normVol.size() - 1 to 0
cvd.cvdCoords.push(chart.point.from_time(zzd.indexArr.get(i),
normed))
livePoly.delete()
livePoly := polyline.new(cvd.cvdCoords, line_color = lineCol, xloc
= xloc.bar_time, curved = true, line_style = sty,
line_width = wid
)
zzd.volArr.drawHistoricalCVD()
zzd.volArr.drawLiveCVD ()