-
Notifications
You must be signed in to change notification settings - Fork 0
/
PriceAction.pine
116 lines (92 loc) · 6.83 KB
/
PriceAction.pine
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
//@version=2
//
// Name: Price Action Nice
// By: nrth
// Date: 07-Dec-2020
// Version: v0.2
//
study(title = "Price Action Nice", shorttitle="PA Nice", overlay = true)
//
sdc = input(true,title="Show Dark Cloud Cover")
spl = input(false,title="Show Piecing Line")
sdj = input(true,title="Show Doji")
pctDw = input(60,minval=0,maxval=90,title="Doji, Min % of Range of Candle for Wicks")
pipMin= input(15,minval=1,title="Doji, Previous Candle Min Pip Body Size")
sble = input(true,title="Show Bullish Engulfing")
sbre = input(true,title="Show Bearish Engulfing")
sosb = input(true,title="Show Outside Bars")
sisb = input(true,title="Show Inside Bars")
supp = input(true,title="Show Up Reject Green Pin Bar")
sdnp = input(true,title="Show Down Reject Red Pin Bar")
sbeppr = input(true,title="Show Bear Pin Bar")
sbuppr = input(true,title="Show Bull Pin Bar")
shmr = input(true,title="Show Red Hammer")
sihmr = input(true,title="Show Green Inverted Hammer")
pctP = input(70, minval=1, maxval=99, title="PinBar/Hammer, Min % of Range of Candle for Long Wick")
sname=input(true,title="Show Price Action Bar Names")
cbar = input(false,title="Colour Price Action Bars")
setalm = input(false, title="Generate Alert for Selected PA Candles")
//
pip = syminfo.mintick
range = high - low
darkCloud=sdc and (close[1]>open[1] and (close[1]-open[1])>pipMin*pip and abs(close[1]-open[1])/range[1]>=0.7 and close<open and abs(close-open)/range>=0.7 and open>=close[1] and close>open[1] and close<((open[1]+close[1])/2))? 1: 0
plotshape(darkCloud and sname,title="Dark Cloud Cover",text='D\nC\nC',color=red, style=shape.arrowdown,location=location.abovebar)
piecingLine=spl and (close[1]<open[1] and (open[1]-close[1])>pipMin*pip and abs(open[1]-close[1])/range[1]>=0.7 and close>open and abs(close-open)/range>=0.7 and open<=close[1] and close<open[1] and close>((open[1]+close[1])/2))? 1 : 0
plotshape(piecingLine and sname,title="Piercieng Line",text="P\nL",color=green, style=shape.arrowup,location=location.belowbar)
// Calculate Doji/Harami Candles
pctCDw = (pctDw/2) * 0.01
pctCDb = (100-pctDw) * 0.01
dojiBull=sdj and (open[1]>close[1] and (open[1]-close[1])>pipMin*pip and open[1] >= max(close,open) and close[1]<=min(close,open)) and (abs(close-open)/range<pctCDb and (high-max(close,open))>(pctCDw*range) and (min(close,open)-low)>(pctCDw*range))? 1 : 0
dojiBear=sdj and (open[1]<close[1] and (close[1]-open[1])>pipMin*pip and close[1] >= max(close,open) and open[1]<=min(close,open)) and (abs(close-open)/range<pctCDb and (high-max(close,open))>(pctCDw*range) and (min(close,open)-low)>(pctCDw*range))? 1 : 0
//
plotshape(dojiBear and sname?high:na,title="Bearish Doji",text='Be\nD',color=fuchsia, style=shape.arrowdown,location=location.abovebar)
plotshape(dojiBear and cbar?max(open,close):na,title="Bear Colour Doji",color=fuchsia, style=shape.circle,location=location.absolute,size=size.normal)
//
plotshape(dojiBull and sname?high:na,title="Bullish Doji",text='Bu\nD',color=fuchsia, style=shape.arrowup,location=location.belowbar)
plotshape(dojiBull and cbar?max(open,close):na,title="Bull Colour Doji",color=fuchsia, style=shape.circle,location=location.absolute,size=size.normal)
//
bullishEngulf=sble and (close[1]<open[1] and close>open and close>=high[1] and open<=close[1]) ? 1 : 0
plotshape(bullishEngulf and sname,title="Bullish Engulfing",text='Bu\nE',color=green, style=shape.arrowup,location=location.belowbar)
bearishEngulf=sbre and (close[1]>open[1] and close<open and close<=low[1] and open>=close[1]) ? 1 : 0
plotshape(bearishEngulf and sname,title="Bearish Engulfing",text='Be\nE',color=red, style=shape.arrowdown,location=location.abovebar)
//Inside Bars
insideBar = sisb and (high < high[1] and low > low[1]) ? 1 : 0
outsideBarBu= sosb and open[1]>close[1] and open<close and (high > high[1] and low < low[1]) ? 1 : 0
outsideBarBe= sosb and open[1]<close[1] and open>close and (high > high[1] and low < low[1]) ? 1 : 0
//Inside and Outside Bars
plotshape(insideBar and sname,title="Inside Bar",text="IB",color=green, style=shape.arrowup,location=location.belowbar)
plotshape(outsideBarBe and sname,title="Bearish Outside Bar",text="Be\nO\nB",color=red, style=shape.arrowdown,location=location.abovebar)
plotshape(outsideBarBu and sname,title="Bullish Outside Bar",text="Bu\nO\nB",color=green, style=shape.arrowup,location=location.belowbar)
//PBar Percentages
pctCp = pctP * .01
///PinBars Long Upper Shadow represent selling pressure
pBarUp = supp and (open>close and open < (high - (range * pctCp)) and close < (high - (range * pctCp))) ? 1 : 0
///PinBars with Long Lower Shadow represent buying pressure
pBarDn = sdnp and (open<close and open > (low + (range * pctCp)) and close > (low + (range * pctCp))) ? 1 : 0
plotshape(pBarUp and sname,title="Up Rejection Pin Bar",text='U\nR\nP\nB',color=red, style=shape.arrowdown,location=location.abovebar)
plotshape(pBarDn and sname,title="Down Rejection Pin Bar",text='D\nR\nP\nB',color=green, style=shape.arrowup,location=location.belowbar)
///PinBars Long Upper Shadow represent selling pressure
ihmr = shmr and (open<close and open < (high - (range * pctCp)) and close < (high - (range * pctCp))) ? 1 : 0
///PinBars with Long Lower Shadow represent buying pressure
hmr = sihmr and (open>close and open > (low + (range * pctCp)) and close > (low + (range * pctCp))) ? 1 : 0
plotshape(ihmr and sname,title="Inverted Hammer",text='I\nH',color=red, style=shape.arrowdown,location=location.abovebar)
plotshape(hmr and sname,title="Hammer",text='H',color=green, style=shape.arrowup,location=location.belowbar)
bcolor = dojiBull or dojiBear? 1 : insideBar? 2 : (ihmr or pBarUp or bearishEngulf or darkCloud or outsideBarBe)? 3: (hmr or pBarDn or bullishEngulf or piecingLine or outsideBarBu)? 4 : 0
//
barcolor(cbar?bcolor==2?orange:bcolor==3?yellow:bcolor==4?aqua:na:na)
baralert = setalm and bcolor>0
alertcondition(baralert,title="PACCDL Alert",message="PACCDL Alert")
//
plotshape(na(baralert[1])?na:baralert[1], transp=0,style=shape.circle,location=location.bottom, offset=-1,title="Bar Alert Confirmed",
color=bcolor[1]==1?fuchsia : bcolor[1]==2?orange: bcolor[1]==3?yellow:bcolor[1]==4?aqua : na)
//PIN BAR
body_pb = abs(close-open)
upshadow_pb = open>close?(high-open):(high-close)
downshadow_pb = open>close?(close-low):(open-low)
pinbar_h = close[1]>open[1]?(body_pb[1]>body_pb?(upshadow_pb>0.5*body_pb?(upshadow_pb>2*downshadow_pb?1:0):0):0):0
pinbar_l = open[1]>close[1]?(body_pb[1]>body_pb?(downshadow_pb>0.5*body_pb?(downshadow_pb>2*upshadow_pb?1:0):0):0):0
plotshape(sbeppr and pinbar_h,style=shape.triangledown,color=red)
plotshape(sbuppr and pinbar_l,style=shape.triangleup,color=lime,location=location.belowbar)
plotchar(sbeppr and pinbar_h,text="Be\nP\nB",char="",color=red)
plotchar(sbuppr and pinbar_l,text="Bu\nP\nB",char="",color=lime,location=location.belowbar)
//EOF