You are on page 1of 6

// This source code is subject to the terms of the Mozilla Public License 2.

0 at
https://mozilla.org/MPL/2.0/
// ©Tradingdirection

//@version=5
indicator("CPR By Trading Direction V3",overlay = true)
cprdaily = input.color(defval = color.purple,title = "daily cprcolor",group =
"CPR")
cprweekly = input.color(defval = color.blue,title = "weekly cprcolor",group =
"CPR")
dailyR=input.color(defval = color.green,title = "daily R Levels",group =
"Resistance")
dailyS=input.color(defval = color.red,title = "daily S Levels",group = "Support")
weeklyR=input.color(defval = color.green,title = "weekly R Levels",group =
"Resistance")
weeklyS=input.color(defval = color.red,title = "weekly S Levels",group = "Support")
vwapclr = input.color(defval = color.fuchsia,title = "vwap color")
showvwap = input.bool(defval = false,title = "show/hide vwap")
show8ema = input.bool(defval = false,title = "show/hide 8ema")
show50ema = input.bool(defval = false,title = "show/hide 50ema")
show20ema = input.bool(defval = true,title = "show/hide 20ema")
show200ema = input.bool(defval = true,title = "show/hide 200ema")

vwap = ta.vwap(hlcc4)
plot(showvwap ? vwap:na,title="VWap",color=vwapclr,style=plot.style_stepline)
Hd =
request.security(syminfo.tickerid,"D",high[1],barmerge.gaps_off,barmerge.lookahead_
on)
Ld =
request.security(syminfo.tickerid,"D",low[1],barmerge.gaps_off,barmerge.lookahead_o
n)
Cd =
request.security(syminfo.tickerid,"D",close[1],barmerge.gaps_off,barmerge.lookahead
_on)
Hw =
request.security(syminfo.tickerid,"W",high[1],barmerge.gaps_off,barmerge.lookahead_
on)
Lw =
request.security(syminfo.tickerid,"W",low[1],barmerge.gaps_off,barmerge.lookahead_o
n)
Cw =
request.security(syminfo.tickerid,"W",close[1],barmerge.gaps_off,barmerge.lookahead
_on)
//daily pivot calculations
PP = (Hd + Ld + Cd)/3
R1 = 2*PP - Ld
S1 = 2*PP - Hd
R2= PP + (Hd - Ld)
S2 = PP - (Hd-Ld)
R3 = 2*PP + (Hd - 2*Ld)
S3 = 2*PP - (2*Hd - Ld)
BC = (Hd+Ld)/2
TC = PP + (PP - BC)
//end of daily pivot calculations
//weekly pivot calculations
Pw = (Hw + Lw + Cw)/3
Rw1 = 2*Pw - Lw
Sw1 = 2*Pw - Hw
Sw2 = Pw - (Hw - Lw)
Rw2= Pw + (Hw - Lw)
Rw3 = 2*Pw + (Hw - 2*Lw)
Sw3 = 2*Pw - (2*Hw - Lw)
BCw = (Hw+Lw)/2
TCw = Pw + (Pw - BCw)
//end of weekly pivot calculations
ema8= ta.ema(close,8)
ema20= ta.ema(close,20)
ema200= ta.ema(close,200)
ema50= ta.ema(close,50)
plot(show8ema ? ema8:na,title="8 EMA",color = color.yellow)
plot(show50ema ? ema50:na, title="50 EMA",color = color.green)
plot(show200ema ? ema200:na, title="200 EMA",color = color.red)
plot(show20ema ? ema20:na, title="20 EMA",color = color.blue)

time_y = year(time)
time_m = month(time)
time_d = dayofmonth(time)

if time_m == 12
time_y += 1
time_m := 1
time_m
else
time_m += 1
time_m
next_month = timestamp(time_y, time_m, 1, 0, 0)
nextDay = time + 1000*60*60*24
startDay = nextDay - 1000*60*60*24
endDay = time+1000*60*60*24
//daily plot
_Hd = plot(Hd,title="PDH",color=Hd != Hd[1]?
na:color.new(color.red,0),style=plot.style_cross,linewidth=1)
_Ld = plot(Ld,title="PDL",color=Ld!=Ld[1]?na:color.new(color.green,0),style =
plot.style_cross,linewidth=1)
_Cd = plot(Cd,title="PDC",color=Cd!=Cd[1]?na:color.new(color.green,0),style =
plot.style_circles,linewidth=1)

_R1 = plot(R1,title="Daily R1",color=R1!=R1[1]?na:color.new(dailyR,0),style =


plot.style_line,linewidth=1)
_R2 = plot(R2,title="Daily R2",color=R2!=R2[1]?na:color.new(dailyR,0),style =
plot.style_line,linewidth=1)
_R3 = plot(R3,title="Daily R3",color=R3!=R3[1]?na:color.new(dailyR,0),style =
plot.style_line,linewidth=1)
_S3 = plot(S3,title="Daily S3",color=S3!=S3[1]?na:color.new(dailyS,0),style =
plot.style_line,linewidth=1)
_S1 = plot(S1,title="Daily S1",color=S1!=S1[1]?na:color.new(dailyS,0),style =
plot.style_line,linewidth=1)
_S2 = plot(S2,title="Daily S2",color=S2!=S2[1]?na:color.new(dailyS,0),style =
plot.style_line,linewidth=1)
_PP = plot(PP,title="Daily Pivot Point",color=PP!=PP[1]?
na:color.new(cprdaily,0),style = plot.style_line,linewidth=3)
_BC = plot(BC,title = "Daily BC",color = BC != BC[1]?na:color.new(cprdaily,0),style
= plot.style_line,linewidth=3)
_TC = plot(TC,title = "Daily TC",color = TC != TC[1]?na:color.new(cprdaily,0),style
= plot.style_line,linewidth=3)

fill(plot1 = _Hd,plot2 = _R1,color = color.new(color.red,80))


fill(plot1 = _Ld,plot2 = _S1,color = color.new(color.red,80))
fill(plot1 = _TC,plot2 = _BC,color = color.new(color.red,80))
//end of daily plot
_Hw = plot(Hw,title="Weekly High",color=Hw != Hw[1]?
na:color.new(color.red,0),style=plot.style_circles,linewidth=1)
_Lw = plot(Lw,title="Weekly Low",color=Lw!=Lw[1]?na:color.new(color.green,0),style
= plot.style_circles,linewidth=1)
_Rw1 = plot(Rw1,title="Weekly R1",color=Rw1!=Rw1[1]?na:color.new(weeklyR,0),style =
plot.style_line,linewidth=1)
_Sw1 = plot(Sw1,title="Weekly S1",color=Sw1!=Sw1[1]?na:color.new(weeklyS,0),style =
plot.style_line,linewidth=1)
_Rw2 = plot(Rw2,title="Weekly R2",color=Rw2!=Rw2[1]?na:color.new(weeklyR,0),style =
plot.style_line,linewidth=1)
_Sw2 = plot(Sw2,title="Weekly S2",color=Sw2!=Sw2[1]?na:color.new(weeklyS,0),style =
plot.style_line,linewidth=1)
_Rw3 = plot(Rw3,title="Weekly R3",color=Rw3!=Rw3[1]?na:color.new(weeklyR,0),style =
plot.style_line,linewidth=1)
_Sw3 = plot(Sw3,title="Weekly S3",color=Sw3!=Sw3[1]?na:color.new(weeklyS,0),style =
plot.style_line,linewidth=1)
_Pw = plot(Pw,title="Weekly Pivot",color=Pw!=Pw[1]?na:color.new(cprweekly,0),style
= plot.style_line,linewidth=3)
_BCw = plot(BCw,title = "Weekly BC",color = BCw != BCw[1]?
na:color.new(cprweekly,0),style = plot.style_line,linewidth=3)
_TCw = plot(TCw,title = "Weekly TC",color = TCw != TCw[1]?
na:color.new(cprweekly,0),style = plot.style_line,linewidth=3)

_t_Hw = line.new(startDay, Hw, endDay, Hw, xloc.bar_time, extend=extend.none, style


= line.style_dotted, color=color.red, width=1)
line.delete(_t_Hw[1])
_t_Lw = line.new(startDay, Lw, endDay, Lw, xloc.bar_time, extend=extend.none, style
= line.style_dotted, color=color.green, width=1)
line.delete(_t_Lw[1])
_t_rw1 = line.new(startDay, Rw1, endDay, Rw1, xloc.bar_time, extend=extend.none,
style = line.style_solid, color=weeklyR, width=1)
line.delete(_t_rw1[1])
_t_rw2 = line.new(startDay, Rw2, endDay, Rw2, xloc.bar_time, extend=extend.none,
style = line.style_solid, color=weeklyR, width=1)
line.delete(_t_rw2[1])
_t_rw3 = line.new(startDay, Rw3, endDay, Rw3, xloc.bar_time, extend=extend.none,
style = line.style_solid, color=weeklyR, width=1)
line.delete(_t_rw3[1])
_t_sw1 = line.new(startDay, Sw1, endDay, Sw1, xloc.bar_time, extend=extend.none,
style = line.style_solid, color=weeklyS, width=1)
line.delete(_t_sw1[1])
_t_sw2 = line.new(startDay, Sw2, endDay, Sw2, xloc.bar_time, extend=extend.none,
style = line.style_solid, color=weeklyS, width=1)
line.delete(_t_sw2[1])
_t_sw3 = line.new(startDay, Sw3, endDay, Sw3, xloc.bar_time, extend=extend.none,
style = line.style_solid, color=weeklyS, width=1)
line.delete(_t_sw3[1])
fill(plot1 = _TCw,plot2 = _BCw,color = color.new(color.yellow,85))

//_t_pp = line.new(startDay, PP, endDay, PP, xloc.bar_time, extend=extend.none,


style = line.style_solid, color=cprdaily, width=1)
//line.delete(_t_pp[1])
_t_hd = line.new(startDay, Hd, endDay, Hd, xloc.bar_time, extend=extend.none, style
= line.style_dotted, color=color.red, width=1)
line.delete(_t_hd[1])
_t_ld = line.new(startDay, Ld, endDay, Ld, xloc.bar_time, extend=extend.none, style
= line.style_dotted, color=color.green, width=1)
line.delete(_t_ld[1])
_t_cd = line.new(startDay, Cd, endDay, Cd, xloc.bar_time, extend=extend.none, style
= line.style_dotted, color=color.green, width=1)
line.delete(_t_cd[1])
_t_r1 = line.new(startDay, R1, endDay, R1, xloc.bar_time, extend=extend.none, style
= line.style_solid, color=dailyR, width=1)
line.delete(_t_r1[1])
_t_r2 = line.new(startDay, R2, endDay, R2, xloc.bar_time, extend=extend.none, style
= line.style_solid, color=dailyR, width=1)
line.delete(_t_r2[1])
_t_r3 = line.new(startDay, R3, endDay, R3, xloc.bar_time, extend=extend.none, style
= line.style_solid, color=dailyR, width=1)
line.delete(_t_r3[1])
_t_s1 = line.new(startDay, S1, endDay, S1, xloc.bar_time, extend=extend.none, style
= line.style_solid, color=dailyS, width=1)
line.delete(_t_s1[1])
_t_s2 = line.new(startDay, S2, endDay, S2, xloc.bar_time, extend=extend.none, style
= line.style_solid, color=dailyS, width=1)
line.delete(_t_s2[1])
_t_s3 = line.new(startDay, S3, endDay, S3, xloc.bar_time, extend=extend.none, style
= line.style_solid, color=dailyS, width=1)
line.delete(_t_s3[1])
_t_bc = line.new(startDay, BC, endDay, BC, xloc.bar_time, extend=extend.none, style
= line.style_solid, color=cprdaily, width=3)
line.delete(_t_bc[1])
_t_tc = line.new(startDay, TC, endDay, TC, xloc.bar_time, extend=extend.none, style
= line.style_solid, color=cprdaily, width=3)
line.delete(_t_tc[1])
_t_tp = line.new(startDay, PP, endDay, PP, xloc.bar_time, extend=extend.none, style
= line.style_solid, color=cprdaily, width=3)
line.delete(_t_tp[1])
_t_bcw = line.new(startDay, BCw, endDay, BCw, xloc.bar_time, extend=extend.none,
style = line.style_solid, color=cprweekly, width=3)
line.delete(_t_bcw[1])
_t_tcw = line.new(startDay, TCw, endDay, TCw, xloc.bar_time, extend=extend.none,
style = line.style_solid, color=cprweekly, width=3)
line.delete(_t_tcw[1])
_t_tpw = line.new(startDay, Pw, endDay, Pw, xloc.bar_time, extend=extend.none,
style = line.style_solid, color=cprweekly, width=3)
line.delete(_t_tpw[1])
linefill.new(_t_hd,_t_r1,color = color.new(color.red,85))
linefill.new(_t_ld,_t_s1,color = color.new(color.red,85))
//linefill.new(_t_tc,_t_bc,color = color.new(color.red,90))
//labels daily
var line R1Line = na
var line PPLine = na
var line S1Line = na
var line S2Line = na
var line S3Line = na
var line R2Line = na
var line R3Line = na
var line HdLine = na
var line LdLine = na
var line CdLine = na
var line TCLine = na
var line BCLine = na
if PP[1] != PP
line.set_x2(R1Line, bar_index)
line.set_xy2(PPLine, bar_index,bar_index)
line.set_x2(S1Line, bar_index)
line.set_x2(S2Line, bar_index)
line.set_x2(S3Line, bar_index)
line.set_x2(R2Line, bar_index)
line.set_x2(R3Line, bar_index)
label.new(bar_index, R1, "R1", style=label.style_none,textcolor = dailyR,size
= size.small)
label.new(bar_index, R2, "R2", style=label.style_none,textcolor = dailyR,size
= size.small)
label.new(bar_index, R3, "R3", style=label.style_none,textcolor = dailyR,size
= size.small)
label.new(bar_index, PP, "P", style=label.style_none,textcolor =
cprdaily,size = size.small)
label.new(bar_index, S1, "S1", style=label.style_none,textcolor = dailyS,size
= size.small)
label.new(bar_index, S2, "S2", style=label.style_none,textcolor =
dailyS,size=size.small)
label.new(bar_index, S3, "S3", style=label.style_none,textcolor = dailyS,size
= size.small)
label.new(bar_index, Hd, "PDH", style=label.style_none,textcolor =
color.green,size = size.small)
label.new(bar_index, Ld, "PDL", style=label.style_none,textcolor =
color.red,size = size.small)
label.new(bar_index, Cd, "PDClose", style=label.style_none,textcolor =
color.green,size = size.small)
label.new(bar_index, TC, "TC", style=label.style_none,textcolor = cprdaily,size
= size.small)
label.new(bar_index, BC, "BC", style=label.style_none,textcolor = cprdaily,size
= size.small)
if not na(PPLine) and line.get_x2(PPLine) != bar_index
line.set_x2(R1Line, bar_index)
line.set_x2(PPLine, bar_index)
line.set_x2(S1Line, bar_index)
//end of daily labels

//box
cprbox_d = box.new(startDay,TC,endDay,BC,border_color = color.new( cprdaily,
100),border_width = 1,extend = extend.none,xloc = xloc.bar_time,bgcolor =
color.new(color.red,90),text="Daily CPR",text_halign = text.align_left,text_valign
= text.align_center,text_wrap=text.wrap_none)
box.delete(cprbox_d[1])
cprbox_w = box.new(startDay,TCw,endDay,BCw,border_color =
color.new( cprweekly,100),border_width = 1,extend = extend.none,xloc =
xloc.bar_time,bgcolor = color.new(color.yellow,90),text="Weekly CPR",text_halign =
text.align_left,text_valign = text.align_center,text_wrap=text.wrap_none)
box.delete(cprbox_w[1])
//end of box
//labels weekly
var line Rw1Line = na
var line Rw2Line = na
var line Rw3Line = na
var line Sw1Line = na
var line Sw2Line = na
var line Sw3Line = na
var line PwLine = na
var line HwLine = na
var line LwLine = na
if Pw[1] != Pw
line.set_x2(Rw1Line, bar_index)
line.set_x2(Rw2Line, bar_index)
line.set_x2(Rw3Line, bar_index)
line.set_x2(Sw1Line, bar_index)
line.set_x2(Sw2Line, bar_index)
line.set_x2(Sw3Line, bar_index)
line.set_x2(HwLine, bar_index)
line.set_x2(LwLine, bar_index)

label.new(bar_index, Rw1, "Rw1", style=label.style_none,textcolor =


weeklyR,size=size.small,textalign = text.align_right)
label.new(bar_index, Rw2, "Rw2", style=label.style_none,textcolor =
weeklyR,size=size.small,textalign = text.align_right)
label.new(bar_index, Rw3, "Rw3", style=label.style_none,textcolor =
weeklyR,size=size.small,textalign = text.align_right)
label.new(bar_index, Sw1, "Sw1", style=label.style_none,textcolor =
weeklyS,size=size.small,textalign = text.align_right)
label.new(bar_index, Sw2, "Sw2", style=label.style_none,textcolor =
weeklyS,size=size.small,textalign = text.align_right)
label.new(bar_index, Sw3, "Sw3", style=label.style_none,textcolor =
weeklyS,size=size.small,textalign = text.align_right)
label.new(bar_index, Hw, "PWH", style=label.style_none,textcolor =
weeklyR,size=size.small,textalign = text.align_right)
label.new(bar_index, Lw, "PWL", style=label.style_none,textcolor =
weeklyR,size=size.small,textalign = text.align_right)

//end of labels weekly

You might also like