Central Pivot Range MTF

barbaros

Administrator
Staff member
Platform
  1. TradingView
Here is the Central Pivot Range fix requested by a Discord member. We made it multi time frame.

Code:
// Get support at: https://b4signals.com
// Join us at: https://discord.gg/kD3pKE2CQd
//@version=5
indicator(title="CPR Multi Time Frame", shorttitle="MTF-CPR", overlay=true, format=format.price, precision=2)

mtf = input.timeframe('D', 'Time Frame')

h = request.security(syminfo.tickerid, mtf, high[1], lookahead=barmerge.lookahead_on)
l = request.security(syminfo.tickerid, mtf, low[1], lookahead=barmerge.lookahead_on)
c = request.security(syminfo.tickerid, mtf, close[1], lookahead=barmerge.lookahead_on)

tfInMinutes(simple string tf = "") =>
    float chartTf =
      timeframe.multiplier * (
      timeframe.isseconds ? 1. / 60             :
      timeframe.isminutes ? 1.                  :
      timeframe.isdaily   ? 60. * 24            :
      timeframe.isweekly  ? 60. * 24 * 7        :
      timeframe.ismonthly ? 60. * 24 * 30.4375  : na)
    float result = tf == "" ? chartTf : request.security(syminfo.tickerid, tf, chartTf)


notHigherTimeframe = tfInMinutes() <= tfInMinutes(mtf)

calculatePivot() =>
    (h + l + c) / 3
    
calculateBC() =>
    (h + l) / 2
    
calculateTC() =>
    (calculatePivot() - calculateBC()) + calculatePivot()
    
truncate(number, decimals) =>
    factor = math.pow(10, decimals)
    int(number * factor) / factor
 
pivot = calculatePivot()
tc = calculateTC()
bc = calculateBC()

if tc < bc
    t = tc
    tc := bc
    bc := t
    
r1Level = truncate((2 * pivot) - l, 2)
r2Level = truncate(pivot + (h - l), 2)
r3Level = truncate(h + 2 * (pivot - l), 2)
r4Level = truncate(h + 3 * (pivot - l), 2)
r5Level = truncate(h + 4 * (pivot - l), 2)
s1Level = truncate((2 * pivot) - h, 2)
s2Level = truncate(pivot - (h - l), 2)
s3Level = truncate(l - 2 * (h - pivot), 2)
s4Level = truncate(l - 3 * (h - pivot), 2)
s5Level = truncate(l - 4 * (h - pivot), 2)

plot(series=notHigherTimeframe ? truncate(pivot, 2) : na, title="P", color = pivot[1] != pivot and  notHigherTimeframe ? na : color.fuchsia, style = plot.style_linebr, linewidth=1)
plot(series=notHigherTimeframe ? truncate(tc, 2) : na, title="TC", color = pivot[1] != pivot and notHigherTimeframe ? na: color.blue, style = plot.style_line, linewidth=1) 
plot(series=notHigherTimeframe ? truncate(bc, 2) : na, title="BC", color = pivot[1] != pivot and notHigherTimeframe ? na: color.yellow, style = plot.style_line, linewidth=1)
plot(series=notHigherTimeframe ? r1Level : na, title="R1", color = pivot[1] != pivot and notHigherTimeframe ? na: #32cd32, style = plot.style_line, linewidth=1)
plot(series=notHigherTimeframe ? s1Level : na, title="S1", color = pivot[1] != pivot and notHigherTimeframe ? na: #ff3030, style = plot.style_line, linewidth=1)
plot(series=notHigherTimeframe ? r2Level : na, title="R2", color = pivot[1] != pivot and notHigherTimeframe ? na: #32cd32, style = plot.style_line, linewidth=1)
plot(series=notHigherTimeframe ? s2Level : na, title="S2", color = pivot[1] != pivot and notHigherTimeframe ? na: #ff3030, style = plot.style_line, linewidth=1)
plot(series=notHigherTimeframe ? r3Level : na, title="R3", color = pivot[1] != pivot and notHigherTimeframe ? na: #32cd32, style = plot.style_line, linewidth=1)
plot(series=notHigherTimeframe ? s3Level : na, title="S3", color = pivot[1] != pivot and notHigherTimeframe ? na: #ff3030, style = plot.style_line, linewidth=1)
plot(series=notHigherTimeframe ? r4Level : na, title="R4", color = pivot[1] != pivot and notHigherTimeframe ? na: #32cd32, style = plot.style_line, linewidth=1)
plot(series=notHigherTimeframe ? r5Level : na, title="R5", color = pivot[1] != pivot and notHigherTimeframe ? na: #32cd32, style = plot.style_line, linewidth=1)
plot(series=notHigherTimeframe ? s4Level : na, title="S4", color = pivot[1] != pivot and notHigherTimeframe ? na: #ff3030, style = plot.style_line, linewidth=1)
plot(series=notHigherTimeframe ? s5Level : na, title="S5", color = pivot[1] != pivot and notHigherTimeframe ? na: #ff3030, style = plot.style_line, linewidth=1)
plot(series=notHigherTimeframe ? h : na, title="PDH", color = pivot[1] != pivot and notHigherTimeframe  ? na : color.white, style = plot.style_line, linewidth=1)
plot(series=notHigherTimeframe ? l : na, title="PDL", color = pivot[1] != pivot and notHigherTimeframe  ? na : color.white , style = plot.style_line, linewidth=1)

It is TradingView only right now. ToS version can be made easily.
 
Top