This indicator is a complete candlesticks patterns recognizer indicator. It is a different one and more complete than the other you can find already in the library here.
This indicator recognizes about 40 candlestick patterns and draw their names with green and red arrows on chart (Windows, i.e. gaps, are drawn as “W”):
- Doji
- Evening star
- Morning star
- Shooting star
- Hammer
- Inverted hammer
- Bearish harami
- Bearish harami cross
- Bullish harami
- Bullish harami cross
- Bearish engulfing
- Bullish engulfing
- Piercing line
- Hanging man
- Dark cloud cover
- Abandoned baby bottom
- Three White soldiers
- Three Inside Up
- Three Outside Up
- Concealing Baby Swallow
- Dragonfly Doji Bottom
- Gravestone Doji Bottom
- Three Stars in the South
- Bullish Breakaway
- Rising Three Methods
- Bullish Three Line Strike
- Bullish Mathold
- Abandoned Baby Top
- Three Black Crows
- Three Inside Down
- Three Outside Down
- Upside Gap Two Crows
- Dragonfly Doji Top
- Gravestone Doji Top
- Advance Block
- Two Crows
- Bearish Breakaway
- Falling Three Methods
- Bearish Three Line Strike
- Bearish Mathold
- Windows (Gaps Up & Gaps Down)
Since Candlesticks have a meaning only if related to the underlying trend, at the beginning of the code there is also the possibility to change the method used to identify the “trend direction” (1=MACD, 2=SAR [default], 3=Directional Movement)
Original idea and discussions from this topic on forum:
https://www.prorealcode.com/topic/mt4-candlesticks-recognizer-to-be-converted-to-prt-code/
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 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 |
// Trend direction identification //TDS=2 //(choose 1=MACD, 2=SAR, 3=Directional Movement) //text color // white = 255,255,255 ; black = 0,0,0 r = 0 g = 0 b = 0 atr = averagetruerange[10](close)*0.5 body=close-open abody=abs(body) if range>0 then ratio=abody/range else ratio=0 endif middle=(open+close)/2 bodytop=max(open, close) bodybottom=min(open, close) shadowtop=high-bodytop shadowbottom=bodybottom-low longcandle= (ratio>0.6) DojiSize = 0.05 data=(abs(open - close) <= (high - low) * DojiSize) if data then DRAWTEXT("Doji", barindex, high+atr, Dialog, Standard, 12) COLOURED(R,G,B) endif if TDS=1 then TrendUp=(MACDline[12,26,9](close)>0 AND MACD[12,26,9](close)>0) TrendDown=(MACDline[12,26,9](close)<0 AND MACD[12,26,9](close)<0) else if TDS=2 then TrendUp=(SAR[0.02,0.02,0.2]<low) TrendDown=(SAR[0.02,0.02,0.2]>high) else if TDS=3 then TrendUp=(ADX[14]>23 AND DI[14](close)>0) TrendDown=(ADX[14]>23 AND DI[14](close)<0) endif endif endif //Bullish Signal MorningStar=(body[2]<0 and body>0 and longcandle[2] and open[1]<close[2] and open>close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and low[1]<low and low[1]<low[2] and high[1]<open[2] and high[1]<close) if TrendDown[3] AND MorningStar then DRAWTEXT("Morning Star", barindex, low[1]-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex-1,low[1]) COLOURED(0,155,10) endif PiercingLine=(body[1]<0 and body>0 and longcandle[1] and longcandle and open<low[1] and close>middle[1] and close<open[1]) if TrendDown[2] AND PiercingLine then DRAWTEXT("Piercing Line", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif AbandonedBabyBottom=(body[2]<0 and body>0 and longcandle[2] and ratio[1]<0.3 and high[1]<low[2] and high[1]<low) if TrendDown[3] AND AbandonedBabyBottom then DRAWTEXT("Abandoned Baby Bottom", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif ThreeInsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishHarami[1] and close>close[1]) if TrendDown[3] AND ThreeInsideUp then DRAWTEXT("Three Inside Up", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif ThreeOutsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishEngulfing[1] and close>close[1]) if TrendDown[3] AND ThreeOutsideUp then DRAWTEXT("Three Outside Up", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif ThreeWhiteSoldiers=(body[2]>0 and body[1]>0 and body>0 and high[1]>high[2] and high>high[1] and close[1]>close[2] and close>close[1] and open[1]>open[2] and open[1]<close[2] and open>open[1] and open<close[1]) if TrendDown[3] AND ThreeWhiteSoldiers then DRAWTEXT("Three White Soldiers", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif ConcealingBabySwallow=(body[3]<0 and body[2]<0 and body[1]<0 and body<0 and ratio[3]>0.8 and ratio[2]>0.8 and ratio>0.8 and open[1]<close[2] and high[1]>close[2] and shadowtop[1]>0.6*(abody[1]+shadowbottom[1]) and bodybottom<bodybottom[1] and bodytop>high[1]) if TrendDown[4] AND ConcealingBabySwallow then DRAWTEXT("Concealing Baby Swallow", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif BullishHarami=(body[1]<0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1]) if TrendDown[2] AND BullishHarami then DRAWTEXT("Bullish Harami", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif BullishEngulfing=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle) if TrendDown[2] AND BullishEngulfing then DRAWTEXT("Bullish Engulfing", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif DragonflyDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3) if TrendDown[2] AND DragonflyDojiBottom then DRAWTEXT("Dragonfly Doji", barindex, low-atr, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif GravestoneDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>3*abody and shadowbottom<shadowtop/3) if TrendDown[2] AND GravestoneDojiBottom then DRAWTEXT("Gravestone Doji", barindex, low-atr, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif DojiStarBottom=(body[1]<0 AND longcandle[1] AND low<low[1] AND open<close[1] AND ratio<0.3 AND range<0.3*range[1]) if TrendDown[2] AND DojiStarBottom then DRAWTEXT("Doji", barindex, low-atr, Dialog, Standard, 12) COLOURED(R,G,B) endif BullishHaramiCross=(body[1]<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1]) if TrendDown[2] AND BullishHaramiCross then DRAWTEXT("Bullish Harami Cross", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif ThreeStarsInTheSouth=(body[2]<0 and body[1]<0 and body<0 and shadowtop[2]<range[2]/4 and shadowbottom[2]>abody[2]/2 and low[1]>low[2] and high[1]<high[2] and abody[1]<abody[2] and shadowtop[1]<range[1]/4 and shadowbottom[1]>abody[1]/2 and low>low[1] and high<high[1] and abody<abody[1] and shadowtop<range/4 and shadowbottom<range/4) if TrendDown[3] AND ThreeStarsInTheSouth then DRAWTEXT("Three Stars In The South", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif BullishBreakaway=(body[4]<0 and body[3]<0 and body>0 and open[3]<close[4] and close[2]<close[3] and close[1]<close[2] and longcandle and close<close[4] and close>open[3]) if TrendDown[5] AND BullishBreakaway then DRAWTEXT("Bullish Breakaway", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif Hammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>2*abody and shadowtop<0.3*abody) if TrendDown[2] AND Hammer then DRAWTEXT("Hammer", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif InvertedHammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>2*abody and shadowbottom<0.3*abody) if TrendDown[2] AND InvertedHammer then DRAWTEXT("Inverted Hammer", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif RisingThreeMethods=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and longcandle and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1]) if TrendUp[5] AND RisingThreeMethods then DRAWTEXT("Rising Three Methods", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif BullishThreeLineStrike=(body[3]>0 and body[2]>0 and body[1]>0 and body<0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]>close[3] and close[1]>close[2] and open>close[1] and close<open[3]) if TrendUp[4] AND BullishThreeLineStrike then DRAWTEXT("Bullish Three Line Strike", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif BullishMatHold=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and close[3]>close[4] and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1]) if TrendUp[5] AND BullishMatHold then DRAWTEXT("Bullish Mat Hold", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10) DRAWARROWUP(barindex,low) COLOURED(0,155,10) endif //Bearish Signal EveningStar=(body[2]>0 AND body<0 and longcandle[2] and open[1]>close[2] and open<close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and high[1]>high and high[1]>high[2] and low[1]>open[2] and low[1]>close) if TrendUp[3] AND EveningStar then DRAWTEXT("Evening Star", barindex, high[1]+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex-1,high[1]) COLOURED(255,0,10) endif DarkCloudCover=(body[1]>0 and body<0 and longcandle[1] and longcandle and open>high[1] and close<middle[1] and close>open[1]) if TrendUp[2] AND DarkCloudCover then DRAWTEXT("Dark Cloud Cover", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif AbandonedBabyTop=(body[2]>0 and body<0 and longcandle[2] and ratio[1]<0.3 and low[1]>high[2] and low[1]>high) if TrendUp[3] AND AbandonedBabyTop then DRAWTEXT("Abandoned Baby Top", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif ThreeInsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishharami[1] and close<close[1]) if TrendUp[3] AND ThreeInsideDown then DRAWTEXT("Three Inside Down", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif ThreeOutsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishengulfing[1] and close<close[1]) if TrendUp[3] AND ThreeOutsideDown then DRAWTEXT("Three Outside Down", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif ThreeBlackCrows=(body[2]<0 and body[1]<0 and body<0 and longcandle[2] and longcandle[1] and longcandle and low[1]<low[2] and low<low[1] and close[1]<close[2] and close<close[1] and open[1]<open[2] and open[1]>close[2] and open<open[1] and open>close[1]) if TrendUp[3] AND ThreeBlackCrows then DRAWTEXT("Three Black Crows", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif UpsideGapTwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and bodytop>bodytop[1] and bodybottom<bodybottom[1] and close>close[2]) if TrendUp[3] AND UpsideGapTwoCrows then DRAWTEXT("Upside Gap Two Crows", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif BearishHarami=(body[1]>0 and body<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1]) if TrendUp[2] AND BearishHarami then DRAWTEXT("Bearish Harami", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif BearishEngulfing=(body[1]>0 and body<0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle) if TrendUp[2] AND BearishEngulfing then DRAWTEXT("Bearish Engulfing", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,20) endif DragonflyDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3) if TrendUp[2] AND DragonflyDojiTop then DRAWTEXT("Dragonfly Doji", barindex, high+atr, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif GravestoneDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>3*abody and shadowbottom<shadowtop/3) if TrendUp[2] AND GravestoneDojiTop then DRAWTEXT("Gravestone Doji", barindex, high+atr, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif DojiStarTop=(body[1]>0 AND longcandle[1] AND high>high[1] AND open>close[1] AND ratio<0.3 AND range<0.3*range[1]) if TrendUp[2] AND DojiStarTop then DRAWTEXT("Doji", barindex, high+atr, Dialog, Standard, 12) COLOURED(R,G,B) endif BearishHaramiCross=(body[1]>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1]) if TrendUp[2] AND BearishHaramiCross then DRAWTEXT("Bearish Harami Cross", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif AdvanceBlock=(body[2]>0 and body[1]>0 and body>0 and high[2]<high[1] and high[1]<high and open[1]>bodybottom[2] and open[1]<bodytop[2] and open>bodybottom[1] and open<bodytop[1] and abody[1]<abody[2] and abody<abody[1]) if TrendUp[3] AND AdvanceBlock then DRAWTEXT("Advance Block", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif TwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and close[1]>close[2] and open<bodytop[1] and open>bodybottom[1] and close<bodytop[2] and close>bodybottom[2]) if TrendUp[3] AND TwoCrows then DRAWTEXT("Two Crows", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif BearishBreakaway=(body[4]>0 and body[3]>0 and body<0 and open[3]>close[4] and close[2]>close[3] and close[1]>close[2] and longcandle and close>close[4] and close<open[3]) if TrendUp[5] AND BearishBreakaway then DRAWTEXT("Bearish Breakaway", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif ShootingStar=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>2*abody and shadowbottom<0.3*abody) if TrendUp[2] AND ShootingStar then DRAWTEXT("Shooting Star", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif HangingMan=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>2*abody and shadowtop<0.3*abody) if TrendUp[2] AND HangingMan then DRAWTEXT("Hanging Man", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif FallingThreeMethods=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and longcandle and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1]) if TrendDown[5] AND FallingThreeMethods then DRAWTEXT("Falling Three Methods", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif BearishThreeLineStrike=(body[3]<0 and body[2]<0 and body[1]<0 and body>0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]<close[3] and close[1]<close[2] and open<close[1] and close>open[3]) if TrendDown[4] AND BearishThreeLineStrike then DRAWTEXT("Bearish Three Line Strike", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif BearishMatHold=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and close[3]<close[4] and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1]) if TrendDown[5] AND BearishMatHold then DRAWTEXT("Bearish Mat Hold", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10) DRAWARROWDOWN(barindex,high) COLOURED(255,0,10) endif //Gaps GapUp=(low>high[1]) GapDown=(high<low[1]) if GapUp then DRAWTEXT("W", barindex, (high[1]+low)/2, Dialog, Bold, 12) COLOURED(0,0,255) else if GapDown then DRAWTEXT("W", barindex, (high+low[1])/2, Dialog, Bold, 12) COLOURED(255,0,255) endif endif RETURN |
Share this
No information on this site is investment advice or a solicitation to buy or sell any financial instrument. Past performance is not indicative of future results. Trading may expose you to risk of loss greater than your deposits and is only suitable for experienced investors who have sufficient financial means to bear such risk.
ProRealTime ITF files and other attachments :PRC is also on YouTube, subscribe to our channel for exclusive content and tutorials
wow!
Good Job !!! Ciccio
great! 🙂
Very comprehensive. Bravo
Slightly integrated
Added the possibilty to display all candles (with no reference to uptrend/downtrend, choose TDS=0) or by determining trend using moving averages (3 days/12 days, choose TDS=4)
Most important, at the end of the code I added some rare candlesticks used by Steve Nison in his DVD’s (Bull Sash, Bull Separating Line, Bullish Counter Attack, Bear Sash, Bear Separating Line, Bearish Counter Attack)… hoping I didn’t mistakes
// Trend direction identification
//(choose 0=No Trend check, 1=MACD, 2=SAR[default], 3=Directional Movement, 4=Moving Averages crossing)
//text color
// white = 255,255,255 ; black = 0,0,0
r = 0
g = 0
b = 0
atr = averagetruerange[10](close)*0.5
body=close-open
abody=abs(body)
if range>0 then
ratio=abody/range
else
ratio=0
endif
middle=(open+close)/2
bodytop=max(open, close)
bodybottom=min(open, close)
shadowtop=high-bodytop
shadowbottom=bodybottom-low
longcandle= (ratio>0.6)
DojiSize = 0.05
data=(abs(open - close) <= (high - low) * DojiSize)
if data then
DRAWTEXT(\"Doji\", barindex, high+atr, Dialog, Standard, 12) COLOURED(R,G,B)
endif
if TDS=0 then
TrendUp=1
TrendDown=1
else
if TDS=1 then
TrendUp=(MACDline[12,26,9](close)>0 AND MACD[12,26,9](close)>0)
TrendDown=(MACDline[12,26,9](close)<0 AND MACD[12,26,9](close)<0)
else
if TDS=2 then
TrendUp=(SAR[0.02,0.02,0.2]<low)
TrendDown=(SAR[0.02,0.02,0.2]>high)
else
if TDS=3 then
TrendUp=(ADX[14]>23 AND DI[14](close)>0)
TrendDown=(ADX[14]>23 AND DI[14](close)<0)
else
if TDS=4 then
TrendUp=(Average[3](close)>Average[12](close))
TrendDown=(Average[3](close)<Average[12](close))
endif
endif
endif
endif
endif
//Bullish Signal
MorningStar=(body[2]<0 and body>0 and longcandle[2] and open[1]<close[2] and open>close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and low[1]<low and low[1]<low[2] and high[1]<open[2] and high[1]<close)
if TrendDown[3] AND MorningStar then
DRAWTEXT(\"Morning Star\", barindex, low[1]-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex-1,low[1]) COLOURED(0,155,10)
endif
PiercingLine=(body[1]<0 and body>0 and longcandle[1] and longcandle and open<low[1] and close>middle[1] and close<open[1])
if TrendDown[2] AND PiercingLine then
DRAWTEXT(\"Piercing Line\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
AbandonedBabyBottom=(body[2]<0 and body>0 and longcandle[2] and ratio[1]<0.3 and high[1]<low[2] and high[1]<low)
if TrendDown[3] AND AbandonedBabyBottom then
DRAWTEXT(\"Abandoned Baby Bottom\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeInsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishHarami[1] and close>close[1])
if TrendDown[3] AND ThreeInsideUp then
DRAWTEXT(\"Three Inside Up\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeOutsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishEngulfing[1] and close>close[1])
if TrendDown[3] AND ThreeOutsideUp then
DRAWTEXT(\"Three Outside Up\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeWhiteSoldiers=(body[2]>0 and body[1]>0 and body>0 and high[1]>high[2] and high>high[1] and close[1]>close[2] and close>close[1] and open[1]>open[2] and open[1]<close[2] and open>open[1] and open<close[1])
if TrendDown[3] AND ThreeWhiteSoldiers then
DRAWTEXT(\"Three White Soldiers\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ConcealingBabySwallow=(body[3]<0 and body[2]<0 and body[1]<0 and body<0 and ratio[3]>0.8 and ratio[2]>0.8 and ratio>0.8 and open[1]<close[2] and high[1]>close[2] and shadowtop[1]>0.6*(abody[1]+shadowbottom[1]) and bodybottom<bodybottom[1] and bodytop>high[1])
if TrendDown[4] AND ConcealingBabySwallow then
DRAWTEXT(\"Concealing Baby Swallow\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishHarami=(body[1]<0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendDown[2] AND BullishHarami then
DRAWTEXT(\"Bullish Harami\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishEngulfing=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendDown[2] AND BullishEngulfing then
DRAWTEXT(\"Bullish Engulfing\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
DragonflyDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
if TrendDown[2] AND DragonflyDojiBottom then
DRAWTEXT(\"Dragonfly Doji\", barindex, low-atr, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
GravestoneDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
if TrendDown[2] AND GravestoneDojiBottom then
DRAWTEXT(\"Gravestone Doji\", barindex, low-atr, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
DojiStarBottom=(body[1]<0 AND longcandle[1] AND low<low[1] AND open<close[1] AND ratio<0.3 AND range<0.3*range[1])
if TrendDown[2] AND DojiStarBottom then
DRAWTEXT(\"Doji\", barindex, low-atr, Dialog, Standard, 12) COLOURED(R,G,B)
endif
BullishHaramiCross=(body[1]<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
if TrendDown[2] AND BullishHaramiCross then
DRAWTEXT(\"Bullish Harami Cross\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeStarsInTheSouth=(body[2]<0 and body[1]<0 and body<0 and shadowtop[2]<range[2]/4 and shadowbottom[2]>abody[2]/2 and low[1]>low[2] and high[1]<high[2] and abody[1]<abody[2] and shadowtop[1]<range[1]/4 and shadowbottom[1]>abody[1]/2 and low>low[1] and high<high[1] and abody<abody[1] and shadowtop<range/4 and shadowbottom<range/4)
if TrendDown[3] AND ThreeStarsInTheSouth then
DRAWTEXT(\"Three Stars In The South\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishBreakaway=(body[4]<0 and body[3]<0 and body>0 and open[3]<close[4] and close[2]<close[3] and close[1]<close[2] and longcandle and close<close[4] and close>open[3])
if TrendDown[5] AND BullishBreakaway then
DRAWTEXT(\"Bullish Breakaway\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
Hammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
if TrendDown[2] AND Hammer then
DRAWTEXT(\"Hammer\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
InvertedHammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
if TrendDown[2] AND InvertedHammer then
DRAWTEXT(\"Inverted Hammer\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
RisingThreeMethods=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and longcandle and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1])
if TrendUp[5] AND RisingThreeMethods then
DRAWTEXT(\"Rising Three Methods\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishThreeLineStrike=(body[3]>0 and body[2]>0 and body[1]>0 and body<0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]>close[3] and close[1]>close[2] and open>close[1] and close<open[3])
if TrendUp[4] AND BullishThreeLineStrike then
DRAWTEXT(\"Bullish Three Line Strike\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishMatHold=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and close[3]>close[4] and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1])
if TrendUp[5] AND BullishMatHold then
DRAWTEXT(\"Bullish Mat Hold\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//Bearish Signal
EveningStar=(body[2]>0 AND body<0 and longcandle[2] and open[1]>close[2] and open<close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and high[1]>high and high[1]>high[2] and low[1]>open[2] and low[1]>close)
if TrendUp[3] AND EveningStar then
DRAWTEXT(\"Evening Star\", barindex, high[1]+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex-1,high[1]) COLOURED(255,0,10)
endif
DarkCloudCover=(body[1]>0 and body<0 and longcandle[1] and longcandle and open>high[1] and close<middle[1] and close>open[1])
if TrendUp[2] AND DarkCloudCover then
DRAWTEXT(\"Dark Cloud Cover\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
AbandonedBabyTop=(body[2]>0 and body<0 and longcandle[2] and ratio[1]<0.3 and low[1]>high[2] and low[1]>high)
if TrendUp[3] AND AbandonedBabyTop then
DRAWTEXT(\"Abandoned Baby Top\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ThreeInsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishharami[1] and close<close[1])
if TrendUp[3] AND ThreeInsideDown then
DRAWTEXT(\"Three Inside Down\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ThreeOutsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishengulfing[1] and close<close[1])
if TrendUp[3] AND ThreeOutsideDown then
DRAWTEXT(\"Three Outside Down\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ThreeBlackCrows=(body[2]<0 and body[1]<0 and body<0 and longcandle[2] and longcandle[1] and longcandle and low[1]<low[2] and low<low[1] and close[1]<close[2] and close<close[1] and open[1]<open[2] and open[1]>close[2] and open<open[1] and open>close[1])
if TrendUp[3] AND ThreeBlackCrows then
DRAWTEXT(\"Three Black Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
UpsideGapTwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and bodytop>bodytop[1] and bodybottom<bodybottom[1] and close>close[2])
if TrendUp[3] AND UpsideGapTwoCrows then
DRAWTEXT(\"Upside Gap Two Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishHarami=(body[1]>0 and body<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendUp[2] AND BearishHarami then
DRAWTEXT(\"Bearish Harami\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishEngulfing=(body[1]>0 and body<0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendUp[2] AND BearishEngulfing then
DRAWTEXT(\"Bearish Engulfing\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,20)
endif
DragonflyDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
if TrendUp[2] AND DragonflyDojiTop then
DRAWTEXT(\"Dragonfly Doji\", barindex, high+atr, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
GravestoneDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
if TrendUp[2] AND GravestoneDojiTop then
DRAWTEXT(\"Gravestone Doji\", barindex, high+atr, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
DojiStarTop=(body[1]>0 AND longcandle[1] AND high>high[1] AND open>close[1] AND ratio<0.3 AND range<0.3*range[1])
if TrendUp[2] AND DojiStarTop then
DRAWTEXT(\"Doji\", barindex, high+atr, Dialog, Standard, 12) COLOURED(R,G,B)
endif
BearishHaramiCross=(body[1]>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
if TrendUp[2] AND BearishHaramiCross then
DRAWTEXT(\"Bearish Harami Cross\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
AdvanceBlock=(body[2]>0 and body[1]>0 and body>0 and high[2]<high[1] and high[1]<high and open[1]>bodybottom[2] and open[1]<bodytop[2] and open>bodybottom[1] and open<bodytop[1] and abody[1]<abody[2] and abody<abody[1])
if TrendUp[3] AND AdvanceBlock then
DRAWTEXT(\"Advance Block\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
TwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and close[1]>close[2] and open<bodytop[1] and open>bodybottom[1] and close<bodytop[2] and close>bodybottom[2])
if TrendUp[3] AND TwoCrows then
DRAWTEXT(\"Two Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishBreakaway=(body[4]>0 and body[3]>0 and body<0 and open[3]>close[4] and close[2]>close[3] and close[1]>close[2] and longcandle and close>close[4] and close<open[3])
if TrendUp[5] AND BearishBreakaway then
DRAWTEXT(\"Bearish Breakaway\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ShootingStar=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
if TrendUp[2] AND ShootingStar then
DRAWTEXT(\"Shooting Star\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
HangingMan=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
if TrendUp[2] AND HangingMan then
DRAWTEXT(\"Hanging Man\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
FallingThreeMethods=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and longcandle and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
if TrendDown[5] AND FallingThreeMethods then
DRAWTEXT(\"Falling Three Methods\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishThreeLineStrike=(body[3]<0 and body[2]<0 and body[1]<0 and body>0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]<close[3] and close[1]<close[2] and open<close[1] and close>open[3])
if TrendDown[4] AND BearishThreeLineStrike then
DRAWTEXT(\"Bearish Three Line Strike\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishMatHold=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and close[3]<close[4] and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
if TrendDown[5] AND BearishMatHold then
DRAWTEXT(\"Bearish Mat Hold\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//Gaps
GapUp=(low>high[1])
GapDown=(high<low[1])
if GapUp then
DRAWTEXT(\"w\", barindex, (high[1]+low)/2, Dialog, Bold, 12) COLOURED(0,0,255)
else
if GapDown then
DRAWTEXT(\"w\", barindex, (high+low[1])/2, Dialog, Bold, 12) COLOURED(255,0,255)
endif
endif
//Steve Nison Candles
BullSash=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>close[1] AND close>open[1] AND shadowtop<0.1*abody)
if BullSash then
DRAWTEXT(\"Bull Sash\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullSeparatingLine=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>=open[1] AND shadowtop<0.1*abody)
if BullSeparatingLine then
DRAWTEXT(\"Bull Separating Line\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishCounterAttack=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND close<=close[1])
if TrendDown[2] AND BullishCounterAttack then
DRAWTEXT(\"Bullish Counter Attack\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BearSash=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open>open[1] AND close<open[1] AND shadowbottom<0.1*abody)
if BearSash then
DRAWTEXT(\"Bear Sash\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearSeparatingLine=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open<=open[1] AND shadowbottom<0.1*abody)
if BearSeparatingLine then
DRAWTEXT(\"Bear Separating Line\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishCounterAttack=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND close>=close[1])
if TrendUp[2] AND BearishCounterAttack then
DRAWTEXT(\"Bearish Counter Attack\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
RETURN
bonjour Ciccio,
encore bravo pour ton travail et partage !
j’aurai aimer savoir si il etait possible d’entourer par un cercle ou un rectangle simplement le ou les chandelier reconnu et de preciser en haut du graphique ce à quoi la figure correspond.
surtout dans un souci de ne pas encombrer les écrans.
dans l’attente de te lire.
cordialement
Final version (so far 🙂 )
A small integration Added the possibility to show all candles (with no reference to the trend) and choose Moving Averages crossing to determine uptrend/downtrend
Added also Tweezers Top/Bottom and 6 more candles (Bull Sash, Bear Sash, Bull Separating Line, Bear Separating, Line, Bullish Counter Attack, Bear Counter Attack)
50 in total
This indicator recognizes 50 candlestick patterns and draw their names with green and red arrows on chart:•Doji•Evening star•Morning star•Shooting star•Hammer•Inverted hammer•Bearish harami•Bearish harami cross•Bullish harami•Bullish harami cross•Bearish engulfing•Bullish engulfing•Piercing line•Hanging man•Dark cloud cover•Abandoned baby bottom•Three White soldiers•Three Inside Up•Three Outside Up•Concealing Baby Swallow•Dragonfly Doji Bottom•Gravestone Doji Bottom•Three Stars in the South•Bullish Breakaway•Rising Three Methods•Bullish Three Line Strike•Bullish Mathold•Abandoned Baby Top•Three Black Crows•Three Inside Down•Three Outside Down•Upside Gap Two Crows•Dragonfly Doji Top•Gravestone Doji Top•Advance Block•Two Crows•Bearish Breakaway•Falling Three Methods•Bearish Three Line Strike•Bearish Mathold•Windows (Gaps Up & Gaps Down)•Bull Sash•Bull Separating Line•Bullish Counter Attack•Bear Sash•Bear Separating Line•Bearish Counter Attack•Tweezers Top•Tweezers Bottom
Since Candlesticks have a meaning only if related to the underlying trend, at the beginning of the code there is also the possibility to change the method used to identify the “trend direction”(0=No Trend check, 1=MACD, 2=SAR [default], 3=Directional Movement, 4=Moving Averages crossing)
// Trend direction identification
//(choose 0=No Trend check, 1=MACD, 2=SAR[default], 3=Directional Movement, 4=Moving Averagea crossing)
// TDS=2
//text color
// white = 255,255,255 ; black = 0,0,0
r = 0
g = 0
b = 0
atr = averagetruerange[10](close)*0.5
body=close-open
abody=abs(body)
if range>0 then
ratio=abody/range
else
ratio=0
endif
middle=(open+close)/2
bodytop=max(open, close)
bodybottom=min(open, close)
shadowtop=high-bodytop
shadowbottom=bodybottom-low
longcandle= (ratio>0.6)
DojiSize = 0.05
data=(abs(open - close) <= (high - low) * DojiSize)
if data then
DRAWTEXT(\"Doji\", barindex, high+atr, Dialog, Standard, 12) COLOURED(R,G,B)
endif
//Trend Detection
if TDS=0 then
TrendUp=1
TrendDown=1
else
if TDS=1 then
TrendUp=(MACDline[12,26,9](close)>0 AND MACD[12,26,9](close)>0)
TrendDown=(MACDline[12,26,9](close)<0 AND MACD[12,26,9](close)<0)
else
if TDS=2 then
TrendUp=(SAR[0.02,0.02,0.2]<low)
TrendDown=(SAR[0.02,0.02,0.2]>high)
else
if TDS=3 then
TrendUp=(ADX[14]>23 AND DI[14](close)>0)
TrendDown=(ADX[14]>23 AND DI[14](close)<0)
else
if TDS=4 then
TrendUp=(Average[3](close)>Average[12](close))
TrendDown=(Average[3](close)<Average[12](close))
endif
endif
endif
endif
endif
//Bullish Signal
MorningStar=(body[2]<0 and body>0 and longcandle[2] and open[1]<close[2] and open>close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and low[1]<low and low[1]<low[2] and high[1]<open[2] and high[1]<close)
if TrendDown[3] AND MorningStar then
DRAWTEXT(\"Morning Star\", barindex, low[1]-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex-1,low[1]) COLOURED(0,155,10)
endif
PiercingLine=(body[1]<0 and body>0 and longcandle[1] and longcandle and open<low[1] and close>middle[1] and close<open[1])
if TrendDown[2] AND PiercingLine then
DRAWTEXT(\"Piercing Line\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
AbandonedBabyBottom=(body[2]<0 and body>0 and longcandle[2] and ratio[1]<0.3 and high[1]<low[2] and high[1]<low)
if TrendDown[3] AND AbandonedBabyBottom then
DRAWTEXT(\"Abandoned Baby Bottom\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeInsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishHarami[1] and close>close[1])
if TrendDown[3] AND ThreeInsideUp then
DRAWTEXT(\"Three Inside Up\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeOutsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishEngulfing[1] and close>close[1])
if TrendDown[3] AND ThreeOutsideUp then
DRAWTEXT(\"Three Outside Up\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeWhiteSoldiers=(body[2]>0 and body[1]>0 and body>0 and high[1]>high[2] and high>high[1] and close[1]>close[2] and close>close[1] and open[1]>open[2] and open[1]<close[2] and open>open[1] and open<close[1])
if TrendDown[3] AND ThreeWhiteSoldiers then
DRAWTEXT(\"Three White Soldiers\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ConcealingBabySwallow=(body[3]<0 and body[2]<0 and body[1]<0 and body<0 and ratio[3]>0.8 and ratio[2]>0.8 and ratio>0.8 and open[1]<close[2] and high[1]>close[2] and shadowtop[1]>0.6*(abody[1]+shadowbottom[1]) and bodybottom<bodybottom[1] and bodytop>high[1])
if TrendDown[4] AND ConcealingBabySwallow then
DRAWTEXT(\"Concealing Baby Swallow\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishHarami=(body[1]<0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendDown[2] AND BullishHarami then
DRAWTEXT(\"Bullish Harami\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishEngulfing=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendDown[2] AND BullishEngulfing then
DRAWTEXT(\"Bullish Engulfing\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
DragonflyDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
if TrendDown[2] AND DragonflyDojiBottom then
DRAWTEXT(\"Dragonfly Doji\", barindex, low-atr, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
GravestoneDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
if TrendDown[2] AND GravestoneDojiBottom then
DRAWTEXT(\"Gravestone Doji\", barindex, low-atr, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
DojiStarBottom=(body[1]<0 AND longcandle[1] AND low<low[1] AND open<close[1] AND ratio<0.3 AND range<0.3*range[1])
if TrendDown[2] AND DojiStarBottom then
DRAWTEXT(\"Doji\", barindex, low-atr, Dialog, Standard, 12) COLOURED(R,G,B)
endif
BullishHaramiCross=(body[1]<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
if TrendDown[2] AND BullishHaramiCross then
DRAWTEXT(\"Bullish Harami Cross\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeStarsInTheSouth=(body[2]<0 and body[1]<0 and body<0 and shadowtop[2]<range[2]/4 and shadowbottom[2]>abody[2]/2 and low[1]>low[2] and high[1]<high[2] and abody[1]<abody[2] and shadowtop[1]<range[1]/4 and shadowbottom[1]>abody[1]/2 and low>low[1] and high<high[1] and abody<abody[1] and shadowtop<range/4 and shadowbottom<range/4)
if TrendDown[3] AND ThreeStarsInTheSouth then
DRAWTEXT(\"Three Stars In The South\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishBreakaway=(body[4]<0 and body[3]<0 and body>0 and open[3]<close[4] and close[2]<close[3] and close[1]<close[2] and longcandle and close<close[4] and close>open[3])
if TrendDown[5] AND BullishBreakaway then
DRAWTEXT(\"Bullish Breakaway\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
Hammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
if TrendDown[2] AND Hammer then
DRAWTEXT(\"Hammer\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
InvertedHammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
if TrendDown[2] AND InvertedHammer then
DRAWTEXT(\"Inverted Hammer\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
RisingThreeMethods=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and longcandle and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1])
if TrendUp[5] AND RisingThreeMethods then
DRAWTEXT(\"Rising Three Methods\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishThreeLineStrike=(body[3]>0 and body[2]>0 and body[1]>0 and body<0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]>close[3] and close[1]>close[2] and open>close[1] and close<open[3])
if TrendUp[4] AND BullishThreeLineStrike then
DRAWTEXT(\"Bullish Three Line Strike\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishMatHold=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and close[3]>close[4] and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1])
if TrendUp[5] AND BullishMatHold then
DRAWTEXT(\"Bullish Mat Hold\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//Bearish Signal
EveningStar=(body[2]>0 AND body<0 and longcandle[2] and open[1]>close[2] and open<close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and high[1]>high and high[1]>high[2] and low[1]>open[2] and low[1]>close)
if TrendUp[3] AND EveningStar then
DRAWTEXT(\"Evening Star\", barindex, high[1]+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex-1,high[1]) COLOURED(255,0,10)
endif
DarkCloudCover=(body[1]>0 and body<0 and longcandle[1] and longcandle and open>high[1] and close<middle[1] and close>open[1])
if TrendUp[2] AND DarkCloudCover then
DRAWTEXT(\"Dark Cloud Cover\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
AbandonedBabyTop=(body[2]>0 and body<0 and longcandle[2] and ratio[1]<0.3 and low[1]>high[2] and low[1]>high)
if TrendUp[3] AND AbandonedBabyTop then
DRAWTEXT(\"Abandoned Baby Top\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ThreeInsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishharami[1] and close<close[1])
if TrendUp[3] AND ThreeInsideDown then
DRAWTEXT(\"Three Inside Down\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ThreeOutsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishengulfing[1] and close<close[1])
if TrendUp[3] AND ThreeOutsideDown then
DRAWTEXT(\"Three Outside Down\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ThreeBlackCrows=(body[2]<0 and body[1]<0 and body<0 and longcandle[2] and longcandle[1] and longcandle and low[1]<low[2] and low<low[1] and close[1]<close[2] and close<close[1] and open[1]<open[2] and open[1]>close[2] and open<open[1] and open>close[1])
if TrendUp[3] AND ThreeBlackCrows then
DRAWTEXT(\"Three Black Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
UpsideGapTwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and bodytop>bodytop[1] and bodybottom<bodybottom[1] and close>close[2])
if TrendUp[3] AND UpsideGapTwoCrows then
DRAWTEXT(\"Upside Gap Two Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishHarami=(body[1]>0 and body<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendUp[2] AND BearishHarami then
DRAWTEXT(\"Bearish Harami\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishEngulfing=(body[1]>0 and body<0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendUp[2] AND BearishEngulfing then
DRAWTEXT(\"Bearish Engulfing\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,20)
endif
DragonflyDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
if TrendUp[2] AND DragonflyDojiTop then
DRAWTEXT(\"Dragonfly Doji\", barindex, high+atr, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
GravestoneDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
if TrendUp[2] AND GravestoneDojiTop then
DRAWTEXT(\"Gravestone Doji\", barindex, high+atr, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
DojiStarTop=(body[1]>0 AND longcandle[1] AND high>high[1] AND open>close[1] AND ratio<0.3 AND range<0.3*range[1])
if TrendUp[2] AND DojiStarTop then
DRAWTEXT(\"Doji\", barindex, high+atr, Dialog, Standard, 12) COLOURED(R,G,B)
endif
BearishHaramiCross=(body[1]>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
if TrendUp[2] AND BearishHaramiCross then
DRAWTEXT(\"Bearish Harami Cross\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
AdvanceBlock=(body[2]>0 and body[1]>0 and body>0 and high[2]<high[1] and high[1]<high and open[1]>bodybottom[2] and open[1]<bodytop[2] and open>bodybottom[1] and open<bodytop[1] and abody[1]<abody[2] and abody<abody[1])
if TrendUp[3] AND AdvanceBlock then
DRAWTEXT(\"Advance Block\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
TwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and close[1]>close[2] and open<bodytop[1] and open>bodybottom[1] and close<bodytop[2] and close>bodybottom[2])
if TrendUp[3] AND TwoCrows then
DRAWTEXT(\"Two Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishBreakaway=(body[4]>0 and body[3]>0 and body<0 and open[3]>close[4] and close[2]>close[3] and close[1]>close[2] and longcandle and close>close[4] and close<open[3])
if TrendUp[5] AND BearishBreakaway then
DRAWTEXT(\"Bearish Breakaway\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ShootingStar=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
if TrendUp[2] AND ShootingStar then
DRAWTEXT(\"Shooting Star\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
HangingMan=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
if TrendUp[2] AND HangingMan then
DRAWTEXT(\"Hanging Man\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
FallingThreeMethods=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and longcandle and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
if TrendDown[5] AND FallingThreeMethods then
DRAWTEXT(\"Falling Three Methods\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishThreeLineStrike=(body[3]<0 and body[2]<0 and body[1]<0 and body>0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]<close[3] and close[1]<close[2] and open<close[1] and close>open[3])
if TrendDown[4] AND BearishThreeLineStrike then
DRAWTEXT(\"Bearish Three Line Strike\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishMatHold=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and close[3]<close[4] and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
if TrendDown[5] AND BearishMatHold then
DRAWTEXT(\"Bearish Mat Hold\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//Gaps
GapUp=(low>high[1])
GapDown=(high<low[1])
if GapUp then
DRAWTEXT(\"w\", barindex, (high[1]+low)/2, Dialog, Bold, 12) COLOURED(0,0,255)
else
if GapDown then
DRAWTEXT(\"w\", barindex, (high+low[1])/2, Dialog, Bold, 12) COLOURED(255,0,255)
endif
endif
//Steve Nison Candles
BullSash=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>close[1] AND open<open[1] AND close>open[1] AND shadowtop<0.1*abody)
if BullSash then
DRAWTEXT(\"Bull Sash\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullSeparatingLine=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>=open[1] AND shadowtop<0.1*abody)
if BullSeparatingLine then
DRAWTEXT(\"Bull Separating Line\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishCounterAttack=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND close<=close[1])
if TrendDown[2] AND BullishCounterAttack then
DRAWTEXT(\"Bullish Counter Attack\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BearSash=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open>open[1] AND open<close[1] AND close<open[1] AND shadowbottom<0.1*abody)
if BearSash then
DRAWTEXT(\"Bear Sash\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearSeparatingLine=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open<=open[1] AND shadowbottom<0.1*abody)
if BearSeparatingLine then
DRAWTEXT(\"Bear Separating Line\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishCounterAttack=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND close>=close[1])
if TrendUp[2] AND BearishCounterAttack then
DRAWTEXT(\"Bearish Counter Attack\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//Tweezers Top and Bottom
TweezersTop=(body[1]>0 AND longcandle[1] AND body<=0 AND high=high[1])
if TrendUp[2] AND TweezersTop then
DRAWTEXT(\"Tweezers Top\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
TweezersBottom=(body[1]<0 AND longcandle[1] AND body>=0 AND low=low[1])
if TrendDown[2] AND TweezersBottom then
DRAWTEXT(\"Tweezers Bottom\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
RETURN
Wow, amazing job Ciccio, thanks. Patterns are supposed to be more stable and robust than indicators which need optimising. According to Earik Beann (William Tell Bonds system and his Mechanical Trading Systems book) such optimised indicator systems will fail after about 40 to 50% of the length of time used in the backtest. eg: Backtest on 10 years of data and the system will start to fail after about 4 to 5 years of live trading.
Bonjour, lorsque je rentre le code cela m’indique:
Erreur de syntaxe
veuillez définir la variable suivante tds
Auriez-vous une piste ?
Merci François
ligne 3 enlève \\ devant tds =3, et essaie encore, salut, Ste
Merci beaucoup cela fonctionne a merveille !
Joli travail, merci beaucoup.
Bravo !
See Thomas Bulkowski’s site for Statistical Significance of Candlestick Patterns:http://thepatternsite.com/CandleEntry.html For Chart Patterns: http://thepatternsite.com/chartpatterns.html(Sorry I cant use the insert URL link fucntion due to some tech issues)
i downloaded and added the indicator to prorealtime but the indicator isnt displaying anything …please give us some step by step instructions on how to set the indicator up..thanks in advance
Please add it on price chart using the wrench on the left upper side of the price window.
Nicolas,
could you please put in the first post the “final release” (and its final decription and .itf file)?
As in my latest post
Thanks in advance
i have set this indicator up and it works very well, is it possible to enter trades based on a candle of your selection, using simplified creation ? or will that type of trade entry need to be coded?
Does not work with me. I imported the itf file but instead of writing candlestick information in the price field, it only opened one of these indicator fields below the price field. And it is empty-… what´s wrong here?
It was my fault, it is working now as I installed it via the upper side of the price window. I copied the code that Ciccio posted • 13 days ago, because I want only to see all candles, without uptrend/downtrend, but it gives me a syntax error. Where can I find the .itf file of the last version? The original itf file shows only dojis when set to zero.
Unfortunately it gives me “http error” when I try to upload the new itf file
Anyway that’s the final cose… maybe your error is due to the fact that you don’t delete the two // at line 4 (you have to uncomment that line and manually set TDS=0, otherwise you have to set TDS variable in the window)
Unfortunately it gives me “http error” when I try to upload the new itf file
Anyway that’s the final code… maybe your error is due to the fact that you don’t delete the two // at line 4 (you have to uncomment that line and manually set TDS=0, otherwise you have to set TDS variable in the window)
Bonsoir, après avoir consulté le lien:
http://thepatternsite.com/CandleEntry.html%C2%A0
Les taux de réussite de chaque configuration sont exprimé en % au-dessus de chaque condition; j’ai neutralisé ceux qui étaient inférieurs à 65% avec ” //”:
//Bullish Signal
//78
MorningStar=(body[2]<0 and body>0 and longcandle[2] and open[1]<close[2] and open>close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and low[1]<low and low[1]<low[2] and high[1]<open[2] and high[1]<close)
if TrendDown[3] AND MorningStar then
DRAWTEXT(\"Morning Star\", barindex, low[1]-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex-1,low[1]) COLOURED(0,155,10)
endif
//64
PiercingLine=(body[1]<0 and body>0 and longcandle[1] and longcandle and open<low[1] and close>middle[1] and close<open[1])
if TrendDown[2] AND PiercingLine then
//DRAWTEXT(\"Piercing Line\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
//DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//70
AbandonedBabyBottom=(body[2]<0 and body>0 and longcandle[2] and ratio[1]<0.3 and high[1]<low[2] and high[1]<low)
if TrendDown[3] AND AbandonedBabyBottom then
DRAWTEXT(\"Abandoned Baby Bottom\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//65
ThreeInsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishHarami[1] and close>close[1])
if TrendDown[3] AND ThreeInsideUp then
//DRAWTEXT(\"Three Inside Up\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
//DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//75
ThreeOutsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishEngulfing[1] and close>close[1])
if TrendDown[3] AND ThreeOutsideUp then
DRAWTEXT(\"Three Outside Up\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//82
ThreeWhiteSoldiers=(body[2]>0 and body[1]>0 and body>0 and high[1]>high[2] and high>high[1] and close[1]>close[2] and close>close[1] and open[1]>open[2] and open[1]<close[2] and open>open[1] and open<close[1])
if TrendDown[3] AND ThreeWhiteSoldiers then
DRAWTEXT(\"Three White Soldiers\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//75
ConcealingBabySwallow=(body[3]<0 and body[2]<0 and body[1]<0 and body<0 and ratio[3]>0.8 and ratio[2]>0.8 and ratio>0.8 and open[1]<close[2] and high[1]>close[2] and shadowtop[1]>0.6*(abody[1]+shadowbottom[1]) and bodybottom<bodybottom[1] and bodytop>high[1])
if TrendDown[4] AND ConcealingBabySwallow then
DRAWTEXT(\"Concealing Baby Swallow\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//53
BullishHarami=(body[1]<0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendDown[2] AND BullishHarami then
//DRAWTEXT(\"Bullish Harami\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
//DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//63
BullishEngulfing=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendDown[2] AND BullishEngulfing then
//DRAWTEXT(\"Bullish Engulfing\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
//DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//50
DragonflyDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
if TrendDown[2] AND DragonflyDojiBottom then
//DRAWTEXT(\"Dragonfly Doji\", barindex, low-atr, Dialog, Standard, 12) COLOURED(0,155,10)
//DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//51
GravestoneDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
if TrendDown[2] AND GravestoneDojiBottom then
//DRAWTEXT(\"Gravestone Doji\", barindex, low-atr, Dialog, Standard, 12) COLOURED(0,155,10)
//DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//64
DojiStarBottom=(body[1]<0 AND longcandle[1] AND low<low[1] AND open<close[1] AND ratio<0.3 AND range<0.3*range[1])
if TrendDown[2] AND DojiStarBottom then
//DRAWTEXT(\"Doji\", barindex, low-atr, Dialog, Standard, 12) COLOURED(R,G,B)
endif
//55
BullishHaramiCross=(body[1]<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
if TrendDown[2] AND BullishHaramiCross then
//DRAWTEXT(\"Bullish Harami Cross\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
//DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//86
ThreeStarsInTheSouth=(body[2]<0 and body[1]<0 and body<0 and shadowtop[2]<range[2]/4 and shadowbottom[2]>abody[2]/2 and low[1]>low[2] and high[1]<high[2] and abody[1]<abody[2] and shadowtop[1]<range[1]/4 and shadowbottom[1]>abody[1]/2 and low>low[1] and high<high[1] and abody<abody[1] and shadowtop<range/4 and shadowbottom<range/4)
if TrendDown[3] AND ThreeStarsInTheSouth then
DRAWTEXT(\"Three Stars In The South\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//59
BullishBreakaway=(body[4]<0 and body[3]<0 and body>0 and open[3]<close[4] and close[2]<close[3] and close[1]<close[2] and longcandle and close<close[4] and close>open[3])
if TrendDown[5] AND BullishBreakaway then
//DRAWTEXT(\"Bullish Breakaway\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
//DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//60
Hammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
if TrendDown[2] AND Hammer then
//DRAWTEXT(\"Hammer\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
//DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//65
InvertedHammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
if TrendDown[2] AND InvertedHammer then
//DRAWTEXT(\"Inverted Hammer\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
//DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//74
RisingThreeMethods=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and longcandle and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1])
if TrendUp[5] AND RisingThreeMethods then
DRAWTEXT(\"Rising Three Methods\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//65
BullishThreeLineStrike=(body[3]>0 and body[2]>0 and body[1]>0 and body<0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]>close[3] and close[1]>close[2] and open>close[1] and close<open[3])
if TrendUp[4] AND BullishThreeLineStrike then
//DRAWTEXT(\"Bullish Three Line Strike\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
//DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishMatHold=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and close[3]>close[4] and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1])
if TrendUp[5] AND BullishMatHold then
//DRAWTEXT(\"Bullish Mat Hold\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
//DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//Bearish Signal
//72
EveningStar=(body[2]>0 AND body<0 and longcandle[2] and open[1]>close[2] and open<close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and high[1]>high and high[1]>high[2] and low[1]>open[2] and low[1]>close)
if TrendUp[3] AND EveningStar then
DRAWTEXT(\"Evening Star\", barindex, high[1]+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex-1,high[1]) COLOURED(255,0,10)
endif
//60
DarkCloudCover=(body[1]>0 and body<0 and longcandle[1] and longcandle and open>high[1] and close<middle[1] and close>open[1])
if TrendUp[2] AND DarkCloudCover then
DRAWTEXT(\"Dark Cloud Cover\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//69
AbandonedBabyTop=(body[2]>0 and body<0 and longcandle[2] and ratio[1]<0.3 and low[1]>high[2] and low[1]>high)
if TrendUp[3] AND AbandonedBabyTop then
DRAWTEXT(\"Abandoned Baby Top\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//60
ThreeInsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishharami[1] and close<close[1])
if TrendUp[3] AND ThreeInsideDown then
DRAWTEXT(\"Three Inside Down\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//69
ThreeOutsideDown=v and(body[2]>0 and body[1]<0 and body<0 and bearishengulfing[1] and close<close[1])
if TrendUp[3] AND ThreeOutsideDown then
DRAWTEXT(\"Three Outside Down\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//78
ThreeBlackCrows=(body[2]<0 and body[1]<0 and body<0 and longcandle[2] and longcandle[1] and longcandle and low[1]<low[2] and low<low[1] and close[1]<close[2] and close<close[1] and open[1]<open[2] and open[1]>close[2] and open<open[1] and open>close[1])
if TrendUp[3] AND ThreeBlackCrows then
DRAWTEXT(\"Three Black Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//60
UpsideGapTwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and bodytop>bodytop[1] and bodybottom<bodybottom[1] and close>close[2])
if TrendUp[3] AND UpsideGapTwoCrows then
//DRAWTEXT(\"Upside Gap Two Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
//DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//53
BearishHarami=(body[1]>0 and body<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendUp[2] AND BearishHarami then
//DRAWTEXT(\"Bearish Harami\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
//DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//79
BearishEngulfing=(body[1]>0 and body<0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendUp[2] AND BearishEngulfing then
DRAWTEXT(\"Bearish Engulfing\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,20)
endif
//50
DragonflyDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
if TrendUp[2] AND DragonflyDojiTop then
//DRAWTEXT(\"Dragonfly Doji\", barindex, high+atr, Dialog, Standard, 12) COLOURED(255,0,10)
//DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//51
GravestoneDojiTop=v and(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
if TrendUp[2] AND GravestoneDojiTop then
//DRAWTEXT(\"Gravestone Doji\", barindex, high+atr, Dialog, Standard, 12) COLOURED(255,0,10)
//DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//69
DojiStarTop=(body[1]>0 AND longcandle[1] AND high>high[1] AND open>close[1] AND ratio<0.3 AND range<0.3*range[1])
if TrendUp[2] AND DojiStarTop then
DRAWTEXT(\"Doji\", barindex, high+atr, Dialog, Standard, 12) COLOURED(R,G,B)
endif
//57
BearishHaramiCross=(body[1]>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
if TrendUp[2] AND BearishHaramiCross then
//DRAWTEXT(\"Bearish Harami Cross\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
//DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//64
AdvanceBlock=(body[2]>0 and body[1]>0 and body>0 and high[2]<high[1] and high[1]<high and open[1]>bodybottom[2] and open[1]<bodytop[2] and open>bodybottom[1] and open<bodytop[1] and abody[1]<abody[2] and abody<abody[1])
if TrendUp[3] AND AdvanceBlock then
//DRAWTEXT(\"Advance Block\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
//DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//54
TwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and close[1]>close[2] and open<bodytop[1] and open>bodybottom[1] and close<bodytop[2] and close>bodybottom[2])
if TrendUp[3] AND TwoCrows then
//DRAWTEXT(\"Two Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
//DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//63
BearishBreakaway=(body[4]>0 and body[3]>0 and body<0 and open[3]>close[4] and close[2]>close[3] and close[1]>close[2] and longcandle and close>close[4] and close<open[3])
if TrendUp[5] AND BearishBreakaway then
//DRAWTEXT(\"Bearish Breakaway\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
//DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//60
ShootingStar=v and(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
if TrendUp[2] AND ShootingStar then
//DRAWTEXT(\"Shooting Star\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
//DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//59
HangingMan=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
if TrendUp[2] AND HangingMan then
//DRAWTEXT(\"Hanging Man\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
//DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//71
FallingThreeMethods=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and longcandle and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
if TrendDown[5] AND FallingThreeMethods then
DRAWTEXT(\"Falling Three Methods\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//84
BearishThreeLineStrike=(body[3]<0 and body[2]<0 and body[1]<0 and body>0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]<close[3] and close[1]<close[2] and open<close[1] and close>open[3])
if TrendDown[4] AND BearishThreeLineStrike then
DRAWTEXT(\"Bearish Three Line Strike\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishMatHold=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and close[3]<close[4] and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
if TrendDown[5] AND BearishMatHold then
//DRAWTEXT(\"Bearish Mat Hold\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
//DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//Gaps
GapUp=(low>high[1])
GapDown=(high<low[1])
if GapUp then
DRAWTEXT(\"w\", barindex, (high[1]+low)/2, Dialog, Bold, 12) COLOURED(0,0,255)
else
if GapDown then
DRAWTEXT(\"w\", barindex, (high+low[1])/2, Dialog, Bold, 12) COLOURED(255,0,255)
endif
endif
Ciccio,
This is amazing, great work, much respect.
I do have one question/wish : Is there a possibility for you to add the Stochastic indicator as TDS as #5
That would really make it 100% for me !
Thanks for all your hard work
rgds
JOhn
Sorry to be late, but I didn’t have any notification so far.
Which would be the rule to determine if Trend Up/Down using stochastic?
Done
Take into account that I also added 4 more candlestick patterns
•Descending Hawk•Homing Pigeon
•Last engulfing bottom•Last engulfing top
This indicator recognizes 54 candlestick patterns and draw their names with green and red arrows on chart:•Doji•Evening star•Morning star•Shooting star•Hammer•Inverted hammer•Bearish harami•Bearish harami cross•Bullish harami•Bullish harami cross•Descending Hawk•Homing Pigeon•Bearish engulfing•Bullish engulfing•Last engulfing bottom•Last engulfing top•Piercing line•Hanging man•Dark cloud cover•Abandoned baby bottom•Three White soldiers•Three Inside Up•Three Outside Up•Concealing Baby Swallow•Dragonfly Doji Bottom•Gravestone Doji Bottom•Three Stars in the South•Bullish Breakaway•Rising Three Methods•Bullish Three Line Strike•Bullish Mathold•Abandoned Baby Top•Three Black Crows•Three Inside Down•Three Outside Down•Upside Gap Two Crows•Dragonfly Doji Top•Gravestone Doji Top•Advance Block•Two Crows•Bearish Breakaway•Falling Three Methods•Bearish Three Line Strike•Bearish Mathold•Windows (Gaps Up & Gaps Down)•Bull Sash•Bull Separating Line•Bullish Counter Attack•Bear Sash•Bear Separating Line•Bearish Counter Attack•Tweezers Top•Tweezers Bottom
Since Candlesticks have a meaning only if related to the underlying trend, at the beginning of the code there is also the possibility to change the method used to identify the “trend direction”(0=No Trend check, 1=MACD, 2=SAR [default], 3=Directional Movement, 4=Moving Averages crossing, 5=Stochastic)
// Trend direction identification
//(choose 0=No Trend check, 1=MACD, 2=SAR[default], 3=Directional Movement, 4=Moving Averagea crossing, 5=Stochastic)
// TDS=2
//text color
// white = 255,255,255 ; black = 0,0,0
r = 0
g = 0
b = 0
atr = averagetruerange[10](close)*0.5
body=close-open
abody=abs(body)
if range>0 then
ratio=abody/range
else
ratio=0
endif
middle=(open+close)/2
bodytop=max(open, close)
bodybottom=min(open, close)
shadowtop=high-bodytop
shadowbottom=bodybottom-low
longcandle= (ratio>0.6)
DojiSize = 0.05
data=(abs(open - close) <= (high - low) * DojiSize)
if data then
DRAWTEXT(\"Doji\", barindex, high+atr*0.75, Dialog, Standard, 12) COLOURED(R,G,B)
endif
//Trend Detection
if TDS=0 then
TrendUp=1
TrendDown=1
else
if TDS=1 then
TrendUp=(MACDline[12,26,9](close)>0 AND MACD[12,26,9](close)>0)
TrendDown=(MACDline[12,26,9](close)<0 AND MACD[12,26,9](close)<0)
else
if TDS=2 then
TrendUp=(SAR[0.02,0.02,0.2]<low)
TrendDown=(SAR[0.02,0.02,0.2]>high)
else
if TDS=3 then
TrendUp=(ADX[14]>23 AND DI[14](close)>0)
TrendDown=(ADX[14]>23 AND DI[14](close)<0)
else
if TDS=4 then
TrendUp=(Average[3](close)>Average[12](close))
TrendDown=(Average[3](close)<Average[12](close))
else
if TDS=5 then
TrendUp=(Stochastic[14,3](close)>Average[5](Stochastic[14,3](close)))
TrendDown=(Stochastic[14,3](close)<Average[5](Stochastic[14,3](close)))
endif
endif
endif
endif
endif
endif
//Bullish Signal
MorningStar=(body[2]<0 and body>0 and longcandle[2] and open[1]<close[2] and open>close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and low[1]<low and low[1]<low[2] and high[1]<open[2] and high[1]<close)
if TrendDown[3] AND MorningStar then
DRAWTEXT(\"Morning Star\", barindex, low[1]-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex-1,low[1]) COLOURED(0,155,10)
endif
PiercingLine=(body[1]<0 and body>0 and longcandle[1] and longcandle and open<low[1] and close>middle[1] and close<open[1])
if TrendDown[2] AND PiercingLine then
DRAWTEXT(\"Piercing Line\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
AbandonedBabyBottom=(body[2]<0 and body>0 and longcandle[2] and ratio[1]<0.3 and high[1]<low[2] and high[1]<low)
if TrendDown[3] AND AbandonedBabyBottom then
DRAWTEXT(\"Abandoned Baby Bottom\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeInsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishHarami[1] and close>close[1])
if TrendDown[3] AND ThreeInsideUp then
DRAWTEXT(\"Three Inside Up\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeOutsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishEngulfing[1] and close>close[1])
if TrendDown[3] AND ThreeOutsideUp then
DRAWTEXT(\"Three Outside Up\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeWhiteSoldiers=(body[2]>0 and body[1]>0 and body>0 and high[1]>high[2] and high>high[1] and close[1]>close[2] and close>close[1] and open[1]>open[2] and open[1]<close[2] and open>open[1] and open<close[1])
if TrendDown[3] AND ThreeWhiteSoldiers then
DRAWTEXT(\"Three White Soldiers\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ConcealingBabySwallow=(body[3]<0 and body[2]<0 and body[1]<0 and body<0 and ratio[3]>0.8 and ratio[2]>0.8 and ratio>0.8 and open[1]<close[2] and high[1]>close[2] and shadowtop[1]>0.6*(abody[1]+shadowbottom[1]) and bodybottom<bodybottom[1] and bodytop>high[1])
if TrendDown[4] AND ConcealingBabySwallow then
DRAWTEXT(\"Concealing Baby Swallow\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishHarami=(body[1]<0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendDown[2] AND BullishHarami then
DRAWTEXT(\"Bullish Harami\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
HomingPigeon=(body[1]<0 and body<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendDown[2] AND HomingPigeon then
DRAWTEXT(\"Homing Pigeon\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishEngulfing=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendDown[2] AND BullishEngulfing then
DRAWTEXT(\"Bullish Engulfing\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
LastEngulfingBottom=(body[1]>0 and body<0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendDown[2] AND LastEngulfingBottom then
DRAWTEXT(\"Last Engulfing Bottom\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
DragonflyDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
if TrendDown[2] AND DragonflyDojiBottom then
DRAWTEXT(\"Dragonfly Doji\", barindex, low-atr, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
GravestoneDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
if TrendDown[2] AND GravestoneDojiBottom then
DRAWTEXT(\"Gravestone Doji\", barindex, low-atr, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
DojiStarBottom=(body[1]<0 AND longcandle[1] AND low<low[1] AND open<close[1] AND ratio<0.3 AND range<0.3*range[1])
if TrendDown[2] AND DojiStarBottom then
DRAWTEXT(\"Doji\", barindex, low-atr*0.75, Dialog, Standard, 12) COLOURED(R,G,B)
endif
BullishHaramiCross=(body[1]<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
if TrendDown[2] AND BullishHaramiCross then
DRAWTEXT(\"Bullish Harami Cross\", barindex, low-atr*1.20, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeStarsInTheSouth=(body[2]<0 and body[1]<0 and body<0 and shadowtop[2]<range[2]/4 and shadowbottom[2]>abody[2]/2 and low[1]>low[2] and high[1]<high[2] and abody[1]<abody[2] and shadowtop[1]<range[1]/4 and shadowbottom[1]>abody[1]/2 and low>low[1] and high<high[1] and abody<abody[1] and shadowtop<range/4 and shadowbottom<range/4)
if TrendDown[3] AND ThreeStarsInTheSouth then
DRAWTEXT(\"Three Stars In The South\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishBreakaway=(body[4]<0 and body[3]<0 and body>0 and open[3]<close[4] and close[2]<close[3] and close[1]<close[2] and longcandle and close<close[4] and close>open[3])
if TrendDown[5] AND BullishBreakaway then
DRAWTEXT(\"Bullish Breakaway\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
Hammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
if TrendDown[2] AND Hammer then
DRAWTEXT(\"Hammer\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
InvertedHammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
if TrendDown[2] AND InvertedHammer then
DRAWTEXT(\"Inverted Hammer\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
RisingThreeMethods=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and longcandle and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1])
if TrendUp[5] AND RisingThreeMethods then
DRAWTEXT(\"Rising Three Methods\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishThreeLineStrike=(body[3]>0 and body[2]>0 and body[1]>0 and body<0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]>close[3] and close[1]>close[2] and open>close[1] and close<open[3])
if TrendUp[4] AND BullishThreeLineStrike then
DRAWTEXT(\"Bullish Three Line Strike\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishMatHold=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and close[3]>close[4] and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1])
if TrendUp[5] AND BullishMatHold then
DRAWTEXT(\"Bullish Mat Hold\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//Bearish Signal
EveningStar=(body[2]>0 AND body<0 and longcandle[2] and open[1]>close[2] and open<close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and high[1]>high and high[1]>high[2] and low[1]>open[2] and low[1]>close)
if TrendUp[3] AND EveningStar then
DRAWTEXT(\"Evening Star\", barindex, high[1]+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex-1,high[1]) COLOURED(255,0,10)
endif
DarkCloudCover=(body[1]>0 and body<0 and longcandle[1] and longcandle and open>high[1] and close<middle[1] and close>open[1])
if TrendUp[2] AND DarkCloudCover then
DRAWTEXT(\"Dark Cloud Cover\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
AbandonedBabyTop=(body[2]>0 and body<0 and longcandle[2] and ratio[1]<0.3 and low[1]>high[2] and low[1]>high)
if TrendUp[3] AND AbandonedBabyTop then
DRAWTEXT(\"Abandoned Baby Top\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ThreeInsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishharami[1] and close<close[1])
if TrendUp[3] AND ThreeInsideDown then
DRAWTEXT(\"Three Inside Down\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ThreeOutsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishengulfing[1] and close<close[1])
if TrendUp[3] AND ThreeOutsideDown then
DRAWTEXT(\"Three Outside Down\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ThreeBlackCrows=(body[2]<0 and body[1]<0 and body<0 and longcandle[2] and longcandle[1] and longcandle and low[1]<low[2] and low<low[1] and close[1]<close[2] and close<close[1] and open[1]<open[2] and open[1]>close[2] and open<open[1] and open>close[1])
if TrendUp[3] AND ThreeBlackCrows then
DRAWTEXT(\"Three Black Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
UpsideGapTwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and bodytop>bodytop[1] and bodybottom<bodybottom[1] and close>close[2])
if TrendUp[3] AND UpsideGapTwoCrows then
DRAWTEXT(\"Upside Gap Two Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishHarami=(body[1]>0 and body<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendUp[2] AND BearishHarami then
DRAWTEXT(\"Bearish Harami\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
DescendingHawk=(body[1]>0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendUp[2] AND DescendingHawk then
DRAWTEXT(\"Descending Hawk\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishEngulfing=(body[1]>0 and body<0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendUp[2] AND BearishEngulfing then
DRAWTEXT(\"Bearish Engulfing\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,20)
endif
LastEngulfingTop=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendUp[2] AND LastEngulfingTop then
DRAWTEXT(\"Last Engulfing Top\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,20)
endif
DragonflyDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
if TrendUp[2] AND DragonflyDojiTop then
DRAWTEXT(\"Dragonfly Doji\", barindex, high+atr, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
GravestoneDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
if TrendUp[2] AND GravestoneDojiTop then
DRAWTEXT(\"Gravestone Doji\", barindex, high+atr, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
DojiStarTop=(body[1]>0 AND longcandle[1] AND high>high[1] AND open>close[1] AND ratio<0.3 AND range<0.3*range[1])
if TrendUp[2] AND DojiStarTop then
DRAWTEXT(\"Doji\", barindex, high+atr*0.75, Dialog, Standard, 12) COLOURED(R,G,B)
endif
BearishHaramiCross=(body[1]>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
if TrendUp[2] AND BearishHaramiCross then
DRAWTEXT(\"Bearish Harami Cross\", barindex, high+atr*1.20, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
AdvanceBlock=(body[2]>0 and body[1]>0 and body>0 and high[2]<high[1] and high[1]<high and open[1]>bodybottom[2] and open[1]<bodytop[2] and open>bodybottom[1] and open<bodytop[1] and abody[1]<abody[2] and abody<abody[1])
if TrendUp[3] AND AdvanceBlock then
DRAWTEXT(\"Advance Block\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
TwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and close[1]>close[2] and open<bodytop[1] and open>bodybottom[1] and close<bodytop[2] and close>bodybottom[2])
if TrendUp[3] AND TwoCrows then
DRAWTEXT(\"Two Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishBreakaway=(body[4]>0 and body[3]>0 and body<0 and open[3]>close[4] and close[2]>close[3] and close[1]>close[2] and longcandle and close>close[4] and close<open[3])
if TrendUp[5] AND BearishBreakaway then
DRAWTEXT(\"Bearish Breakaway\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ShootingStar=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
if TrendUp[2] AND ShootingStar then
DRAWTEXT(\"Shooting Star\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
HangingMan=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
if TrendUp[2] AND HangingMan then
DRAWTEXT(\"Hanging Man\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
FallingThreeMethods=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and longcandle and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
if TrendDown[5] AND FallingThreeMethods then
DRAWTEXT(\"Falling Three Methods\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishThreeLineStrike=(body[3]<0 and body[2]<0 and body[1]<0 and body>0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]<close[3] and close[1]<close[2] and open<close[1] and close>open[3])
if TrendDown[4] AND BearishThreeLineStrike then
DRAWTEXT(\"Bearish Three Line Strike\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishMatHold=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and close[3]<close[4] and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
if TrendDown[5] AND BearishMatHold then
DRAWTEXT(\"Bearish Mat Hold\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//Gaps
GapUp=(low>high[1])
GapDown=(high<low[1])
if GapUp then
DRAWTEXT(\"w\", barindex, (high[1]+low)/2, Dialog, Bold, 12) COLOURED(0,0,255)
else
if GapDown then
DRAWTEXT(\"w\", barindex, (high+low[1])/2, Dialog, Bold, 12) COLOURED(255,0,255)
endif
endif
//Steve Nison Candles
BullSash=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>close[1] AND open<open[1] AND close>open[1] AND shadowtop<0.1*abody)
if BullSash then
DRAWTEXT(\"Bull Sash\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullSeparatingLine=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>=open[1] AND shadowtop<0.1*abody)
if BullSeparatingLine then
DRAWTEXT(\"Bull Separating Line\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishCounterAttack=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND close<=close[1])
if TrendDown[2] AND BullishCounterAttack then
DRAWTEXT(\"Bullish Counter Attack\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BearSash=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open>open[1] AND open<close[1] AND close<open[1] AND shadowbottom<0.1*abody)
if BearSash then
DRAWTEXT(\"Bear Sash\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearSeparatingLine=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open<=open[1] AND shadowbottom<0.1*abody)
if BearSeparatingLine then
DRAWTEXT(\"Bear Separating Line\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishCounterAttack=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND close>=close[1])
if TrendUp[2] AND BearishCounterAttack then
DRAWTEXT(\"Bearish Counter Attack\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//Tweezers Top and Bottom
TweezersTop=(body[1]>0 AND longcandle[1] AND body<=0 AND high=high[1])
if TrendUp[2] AND TweezersTop then
DRAWTEXT(\"Tweezers Top\", barindex, high+atr*1.20, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
TweezersBottom=(body[1]<0 AND longcandle[1] AND body>=0 AND low=low[1])
if TrendDown[2] AND TweezersBottom then
DRAWTEXT(\"Tweezers Bottom\", barindex, low-atr*1.20, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
RETURN
Excellent – congrats and thank you fot putting in the efford!
Ciccio, this is really great!
As said much respect for you making this. saves a lot of time studying the charts 🙂
Thank you very much !
rgds
John
Hi Ciccio,
Would it possible for you to add this signal to the code ?
It’s the kicker signal
would be great
thx in advance
rgds
John
DescriptionThe kicker signal, as stated above, is the most powerful signal of all and it works equally well in both directions whether bullish or bearish. Its relevance is magnified when it occurs in overbought or oversold areas and it is formed by two candles. The first candle opens and moves in the direction of the current trend and the second candle opens at the same open of the previous day (a gap open), and then heads in the opposite direction of the previous day’s candle. The bodies of the candles are opposite colors and this formation is indicative of a dramatic change in investor sentiment. The candlesticks really do visually depict the magnitude of the change.
I think they are already there as
-Bull Separating Line
http://candlecharts.com/candlestick-patterns/separating-line-bullish-pattern/
-Bear Separating Line
http://candlecharts.com/candlestick-patterns/separating-line-bearish-pattern/
Check if it is what you mean 😉
Anyway this is the version I am using now
I only changed:
Default is TDS=4 (Moving Averages Crossing)
Moving Averages are now 2 days and 4 days, because in my opinion previous 3 and 6 days are too slow to identify an Uptrend or a Downtrend (anyway you can tweak those numbers at your leisure)
Here is the listing
// Trend direction identification
//(choose 0=No Trend check, 1=MACD, 2=SAR, 3=Directional Movement, 4=Moving Averages crossing [default], 5=Stochastic)
// TDS=4
//text color
// white = 255,255,255 ; black = 0,0,0
r = 0
g = 0
b = 0
atr = averagetruerange[10](close)*0.5
body=close-open
abody=abs(body)
if range>0 then
ratio=abody/range
else
ratio=0
endif
middle=(open+close)/2
bodytop=max(open, close)
bodybottom=min(open, close)
shadowtop=high-bodytop
shadowbottom=bodybottom-low
longcandle= (ratio>0.6)
DojiSize = 0.05
data=(abs(open - close) <= (high - low) * DojiSize)
if data then
DRAWTEXT(\"Doji\", barindex, high+atr*0.75, Dialog, Standard, 12) COLOURED(R,G,B)
endif
//Trend Detection
if TDS=0 then
TrendUp=1
TrendDown=1
else
if TDS=1 then
TrendUp=(MACDline[12,26,9](close)>0 AND MACD[12,26,9](close)>0)
TrendDown=(MACDline[12,26,9](close)<0 AND MACD[12,26,9](close)<0)
else
if TDS=2 then
TrendUp=(SAR[0.02,0.02,0.2]<low)
TrendDown=(SAR[0.02,0.02,0.2]>high)
else
if TDS=3 then
TrendUp=(ADX[14]>23 AND DI[14](close)>0)
TrendDown=(ADX[14]>23 AND DI[14](close)<0)
else
if TDS=4 then
TrendUp=(Average[2](close)>Average[4](close))
TrendDown=(Average[2](close)<Average[4](close))
else
if TDS=5 then
TrendUp=(Stochastic[14,3](close)>Average[5](Stochastic[14,3](close)))
TrendDown=(Stochastic[14,3](close)<Average[5](Stochastic[14,3](close)))
endif
endif
endif
endif
endif
endif
//Bullish Signal
MorningStar=(body[2]<0 and body>0 and longcandle[2] and open[1]<close[2] and open>close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and low[1]<low and low[1]<low[2] and high[1]<open[2] and high[1]<close)
if TrendDown[3] AND MorningStar then
DRAWTEXT(\"Morning Star\", barindex, low[1]-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex-1,low[1]) COLOURED(0,155,10)
endif
PiercingLine=(body[1]<0 and body>0 and longcandle[1] and longcandle and open<low[1] and close>middle[1] and close<open[1])
if TrendDown[2] AND PiercingLine then
DRAWTEXT(\"Piercing Line\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
AbandonedBabyBottom=(body[2]<0 and body>0 and longcandle[2] and ratio[1]<0.3 and high[1]<low[2] and high[1]<low)
if TrendDown[3] AND AbandonedBabyBottom then
DRAWTEXT(\"Abandoned Baby Bottom\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeInsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishHarami[1] and close>close[1])
if TrendDown[3] AND ThreeInsideUp then
DRAWTEXT(\"Three Inside Up\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeOutsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishEngulfing[1] and close>close[1])
if TrendDown[3] AND ThreeOutsideUp then
DRAWTEXT(\"Three Outside Up\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeWhiteSoldiers=(body[2]>0 and body[1]>0 and body>0 and high[1]>high[2] and high>high[1] and close[1]>close[2] and close>close[1] and open[1]>open[2] and open[1]<close[2] and open>open[1] and open<close[1])
if TrendDown[3] AND ThreeWhiteSoldiers then
DRAWTEXT(\"Three White Soldiers\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ConcealingBabySwallow=(body[3]<0 and body[2]<0 and body[1]<0 and body<0 and ratio[3]>0.8 and ratio[2]>0.8 and ratio>0.8 and open[1]<close[2] and high[1]>close[2] and shadowtop[1]>0.6*(abody[1]+shadowbottom[1]) and bodybottom<bodybottom[1] and bodytop>high[1])
if TrendDown[4] AND ConcealingBabySwallow then
DRAWTEXT(\"Concealing Baby Swallow\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishHarami=(body[1]<0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendDown[2] AND BullishHarami then
DRAWTEXT(\"Bullish Harami\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
HomingPigeon=(body[1]<0 and body<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendDown[2] AND HomingPigeon then
DRAWTEXT(\"Homing Pigeon\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishEngulfing=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendDown[2] AND BullishEngulfing then
DRAWTEXT(\"Bullish Engulfing\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
LastEngulfingBottom=(body[1]>0 and body<0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendDown[2] AND LastEngulfingBottom then
DRAWTEXT(\"Last Engulfing Bottom\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
DragonflyDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
if TrendDown[2] AND DragonflyDojiBottom then
DRAWTEXT(\"Dragonfly Doji\", barindex, low-atr, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
GravestoneDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
if TrendDown[2] AND GravestoneDojiBottom then
DRAWTEXT(\"Gravestone Doji\", barindex, low-atr, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
DojiStarBottom=(body[1]<0 AND longcandle[1] AND low<low[1] AND open<close[1] AND ratio<0.3 AND range<0.3*range[1])
if TrendDown[2] AND DojiStarBottom then
DRAWTEXT(\"Doji\", barindex, low-atr*0.75, Dialog, Standard, 12) COLOURED(R,G,B)
endif
BullishHaramiCross=(body[1]<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
if TrendDown[2] AND BullishHaramiCross then
DRAWTEXT(\"Bullish Harami Cross\", barindex, low-atr*1.20, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeStarsInTheSouth=(body[2]<0 and body[1]<0 and body<0 and shadowtop[2]<range[2]/4 and shadowbottom[2]>abody[2]/2 and low[1]>low[2] and high[1]<high[2] and abody[1]<abody[2] and shadowtop[1]<range[1]/4 and shadowbottom[1]>abody[1]/2 and low>low[1] and high<high[1] and abody<abody[1] and shadowtop<range/4 and shadowbottom<range/4)
if TrendDown[3] AND ThreeStarsInTheSouth then
DRAWTEXT(\"Three Stars In The South\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishBreakaway=(body[4]<0 and body[3]<0 and body>0 and open[3]<close[4] and close[2]<close[3] and close[1]<close[2] and longcandle and close<close[4] and close>open[3])
if TrendDown[5] AND BullishBreakaway then
DRAWTEXT(\"Bullish Breakaway\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
Hammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
if TrendDown[2] AND Hammer then
DRAWTEXT(\"Hammer\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
InvertedHammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
if TrendDown[2] AND InvertedHammer then
DRAWTEXT(\"Inverted Hammer\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
RisingThreeMethods=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and longcandle and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1])
if TrendUp[5] AND RisingThreeMethods then
DRAWTEXT(\"Rising Three Methods\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishThreeLineStrike=(body[3]>0 and body[2]>0 and body[1]>0 and body<0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]>close[3] and close[1]>close[2] and open>close[1] and close<open[3])
if TrendUp[4] AND BullishThreeLineStrike then
DRAWTEXT(\"Bullish Three Line Strike\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishMatHold=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and close[3]>close[4] and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1])
if TrendUp[5] AND BullishMatHold then
DRAWTEXT(\"Bullish Mat Hold\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//Bearish Signal
EveningStar=(body[2]>0 AND body<0 and longcandle[2] and open[1]>close[2] and open<close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and high[1]>high and high[1]>high[2] and low[1]>open[2] and low[1]>close)
if TrendUp[3] AND EveningStar then
DRAWTEXT(\"Evening Star\", barindex, high[1]+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex-1,high[1]) COLOURED(255,0,10)
endif
DarkCloudCover=(body[1]>0 and body<0 and longcandle[1] and longcandle and open>high[1] and close<middle[1] and close>open[1])
if TrendUp[2] AND DarkCloudCover then
DRAWTEXT(\"Dark Cloud Cover\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
AbandonedBabyTop=(body[2]>0 and body<0 and longcandle[2] and ratio[1]<0.3 and low[1]>high[2] and low[1]>high)
if TrendUp[3] AND AbandonedBabyTop then
DRAWTEXT(\"Abandoned Baby Top\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ThreeInsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishharami[1] and close<close[1])
if TrendUp[3] AND ThreeInsideDown then
DRAWTEXT(\"Three Inside Down\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ThreeOutsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishengulfing[1] and close<close[1])
if TrendUp[3] AND ThreeOutsideDown then
DRAWTEXT(\"Three Outside Down\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ThreeBlackCrows=(body[2]<0 and body[1]<0 and body<0 and longcandle[2] and longcandle[1] and longcandle and low[1]<low[2] and low<low[1] and close[1]<close[2] and close<close[1] and open[1]<open[2] and open[1]>close[2] and open<open[1] and open>close[1])
if TrendUp[3] AND ThreeBlackCrows then
DRAWTEXT(\"Three Black Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
UpsideGapTwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and bodytop>bodytop[1] and bodybottom<bodybottom[1] and close>close[2])
if TrendUp[3] AND UpsideGapTwoCrows then
DRAWTEXT(\"Upside Gap Two Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishHarami=(body[1]>0 and body<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendUp[2] AND BearishHarami then
DRAWTEXT(\"Bearish Harami\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
DescendingHawk=(body[1]>0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendUp[2] AND DescendingHawk then
DRAWTEXT(\"Descending Hawk\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishEngulfing=(body[1]>0 and body<0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendUp[2] AND BearishEngulfing then
DRAWTEXT(\"Bearish Engulfing\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,20)
endif
LastEngulfingTop=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendUp[2] AND LastEngulfingTop then
DRAWTEXT(\"Last Engulfing Top\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,20)
endif
DragonflyDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
if TrendUp[2] AND DragonflyDojiTop then
DRAWTEXT(\"Dragonfly Doji\", barindex, high+atr, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
GravestoneDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
if TrendUp[2] AND GravestoneDojiTop then
DRAWTEXT(\"Gravestone Doji\", barindex, high+atr, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
DojiStarTop=(body[1]>0 AND longcandle[1] AND high>high[1] AND open>close[1] AND ratio<0.3 AND range<0.3*range[1])
if TrendUp[2] AND DojiStarTop then
DRAWTEXT(\"Doji\", barindex, high+atr*0.75, Dialog, Standard, 12) COLOURED(R,G,B)
endif
BearishHaramiCross=(body[1]>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
if TrendUp[2] AND BearishHaramiCross then
DRAWTEXT(\"Bearish Harami Cross\", barindex, high+atr*1.20, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
AdvanceBlock=(body[2]>0 and body[1]>0 and body>0 and high[2]<high[1] and high[1]<high and open[1]>bodybottom[2] and open[1]<bodytop[2] and open>bodybottom[1] and open<bodytop[1] and abody[1]<abody[2] and abody<abody[1])
if TrendUp[3] AND AdvanceBlock then
DRAWTEXT(\"Advance Block\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
TwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and close[1]>close[2] and open<bodytop[1] and open>bodybottom[1] and close<bodytop[2] and close>bodybottom[2])
if TrendUp[3] AND TwoCrows then
DRAWTEXT(\"Two Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishBreakaway=(body[4]>0 and body[3]>0 and body<0 and open[3]>close[4] and close[2]>close[3] and close[1]>close[2] and longcandle and close>close[4] and close<open[3])
if TrendUp[5] AND BearishBreakaway then
DRAWTEXT(\"Bearish Breakaway\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ShootingStar=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
if TrendUp[2] AND ShootingStar then
DRAWTEXT(\"Shooting Star\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
HangingMan=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
if TrendUp[2] AND HangingMan then
DRAWTEXT(\"Hanging Man\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
FallingThreeMethods=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and longcandle and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
if TrendDown[5] AND FallingThreeMethods then
DRAWTEXT(\"Falling Three Methods\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishThreeLineStrike=(body[3]<0 and body[2]<0 and body[1]<0 and body>0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]<close[3] and close[1]<close[2] and open<close[1] and close>open[3])
if TrendDown[4] AND BearishThreeLineStrike then
DRAWTEXT(\"Bearish Three Line Strike\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishMatHold=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and close[3]<close[4] and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
if TrendDown[5] AND BearishMatHold then
DRAWTEXT(\"Bearish Mat Hold\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//Gaps
GapUp=(low>high[1])
GapDown=(high<low[1])
if GapUp then
DRAWTEXT(\"w\", barindex, (high[1]+low)/2, Dialog, Bold, 12) COLOURED(0,0,255)
else
if GapDown then
DRAWTEXT(\"w\", barindex, (high+low[1])/2, Dialog, Bold, 12) COLOURED(255,0,255)
endif
endif
//Steve Nison Candles
BullSash=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>close[1] AND open<open[1] AND close>open[1] AND shadowtop<0.1*abody)
if BullSash then
DRAWTEXT(\"Bull Sash\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullSeparatingLine=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>=open[1] AND shadowtop<0.1*abody)
if BullSeparatingLine then
DRAWTEXT(\"Bull Separating Line\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishCounterAttack=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND close<=close[1])
if TrendDown[2] AND BullishCounterAttack then
DRAWTEXT(\"Bullish Counter Attack\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BearSash=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open>open[1] AND open<close[1] AND close<open[1] AND shadowbottom<0.1*abody)
if BearSash then
DRAWTEXT(\"Bear Sash\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearSeparatingLine=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open<=open[1] AND shadowbottom<0.1*abody)
if BearSeparatingLine then
DRAWTEXT(\"Bear Separating Line\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishCounterAttack=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND close>=close[1])
if TrendUp[2] AND BearishCounterAttack then
DRAWTEXT(\"Bearish Counter Attack\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//Tweezers Top and Bottom
TweezersTop=(body[1]>0 AND longcandle[1] AND body<=0 AND high=high[1])
if TrendUp[2] AND TweezersTop then
DRAWTEXT(\"Tweezers Top\", barindex, high+atr*1.20, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
TweezersBottom=(body[1]<0 AND longcandle[1] AND body>=0 AND low=low[1])
if TrendDown[2] AND TweezersBottom then
DRAWTEXT(\"Tweezers Bottom\", barindex, low-atr*1.20, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
RETURN
Hi ciccio,
Those patterns do not look the same to me.
The bearish one is a few ups and then 1 down opening starting at or lower then last days open
The bullish one is a few downs and then an UP cadle opening at previous day opening
Hope u see what i mean 🙂
rgds
John
Well… the code for Bull Separating Line (like Steve Nison calls it) is this
BullSeparatingLine=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>=open[1] AND shadowtop<0.1*abody)
if BullSeparatingLine then
DRAWTEXT(\"Bull Separating Line\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
that means that
first candle is black and long
second candle is white and long
second candle opens at a price greater than or equal to the previous candle and its shadow is very little (0.1 times white body)
trend is not important
if we read kicker’s description here
http://stephenbigalow.com/blog/kicker-signals/
The first day’s open and the second day’s open are the same.
The price movement is in opposite directions from the opening price.
The trend has no relevance in a kicker situation.
The signal is usually formed by surprise news before or after market hours.
The price never retraces into the previous day’s trading range.
the only difference I see is the latest criterium (price never retraces….)
If we read here
http://www.candlescanner.com/candlestick-patterns/kicking-up-bullish-kicking/
and use the “marubozu” criterium it seems a very very rare candlestick pattern
All this to say that the “kicker” seems to me just a sub-set of the “separating line” and if we create this rule, both descriptions will appear.
Anyway, if you want, you can add by yourself these lines at the Indicator listing
BullishKicking=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>=open[1] AND shadowtop=0 AND shadowbottom=0)
if BullishKicking then
DRAWTEXT(\"BullishKicking\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BearishKicking=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open<=open[1] AND shadowtop=0 AND shadowbottom=0)
if BearishKicking then
DRAWTEXT(\"Bearish Kicking\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
Hear from you 🙂
… anyway here you are 🙂
This indicator recognizes 56 candlestick patterns and draw their names with green and red arrows on chart:•Doji•Evening star•Morning star•Shooting star•Hammer•Inverted hammer•Bearish harami•Bearish harami cross•Bullish harami•Bullish harami cross•Descending Hawk•Homing Pigeon•Bearish engulfing•Bullish engulfing•Last engulfing bottom•Last engulfing top•Piercing line•Hanging man•Dark cloud cover•Abandoned baby bottom•Three White soldiers•Three Inside Up•Three Outside Up•Concealing Baby Swallow•Dragonfly Doji Bottom•Gravestone Doji Bottom•Three Stars in the South•Bullish Breakaway•Rising Three Methods•Bullish Three Line Strike•Bullish Mathold•Abandoned Baby Top•Three Black Crows•Three Inside Down•Three Outside Down•Upside Gap Two Crows•Dragonfly Doji Top•Gravestone Doji Top•Advance Block•Two Crows•Bearish Breakaway•Falling Three Methods•Bearish Three Line Strike•Bearish Mathold•Windows (Gaps Up & Gaps Down)•Bull Sash•Bull Separating Line•Bullish Counter Attack•Bear Sash•Bear Separating Line•Bearish Counter Attack•Tweezers Top•Tweezers Bottom•Bullish Kicker•Bearish Kicker
Since Candlesticks have a meaning only if related to the underlying trend, at the beginning of the code there is also the possibility to change the method used to identify the “trend direction”(0=No Trend check, 1=MACD, 2=SAR, 3=Directional Movement, 4=Moving Averages crossing [default], 5=Stochastic)
// Trend direction identification
//(choose 0=No Trend check, 1=MACD, 2=SAR, 3=Directional Movement, 4=Moving Averages crossing [default], 5=Stochastic)
// TDS=4
//text color
// white = 255,255,255 ; black = 0,0,0
r = 0
g = 0
b = 0
atr = averagetruerange[10](close)*0.5
body=close-open
abody=abs(body)
if range>0 then
ratio=abody/range
else
ratio=0
endif
middle=(open+close)/2
bodytop=max(open, close)
bodybottom=min(open, close)
shadowtop=high-bodytop
shadowbottom=bodybottom-low
longcandle= (ratio>0.6)
DojiSize = 0.05
data=(abs(open - close) <= (high - low) * DojiSize)
if data then
DRAWTEXT(\"Doji\", barindex, high+atr*0.75, Dialog, Standard, 12) COLOURED(R,G,B)
endif
//Trend Detection
if TDS=0 then
TrendUp=1
TrendDown=1
else
if TDS=1 then
TrendUp=(MACDline[12,26,9](close)>0 AND MACD[12,26,9](close)>0)
TrendDown=(MACDline[12,26,9](close)<0 AND MACD[12,26,9](close)<0)
else
if TDS=2 then
TrendUp=(SAR[0.02,0.02,0.2]<low)
TrendDown=(SAR[0.02,0.02,0.2]>high)
else
if TDS=3 then
TrendUp=(ADX[14]>23 AND DI[14](close)>0)
TrendDown=(ADX[14]>23 AND DI[14](close)<0)
else
if TDS=4 then
TrendUp=(Average[2](close)>Average[4](close))
TrendDown=(Average[2](close)<Average[4](close))
else
if TDS=5 then
TrendUp=(Stochastic[14,3](close)>Average[5](Stochastic[14,3](close)))
TrendDown=(Stochastic[14,3](close)<Average[5](Stochastic[14,3](close)))
endif
endif
endif
endif
endif
endif
//Bullish Signal
MorningStar=(body[2]<0 and body>0 and longcandle[2] and open[1]<close[2] and open>close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and low[1]<low and low[1]<low[2] and high[1]<open[2] and high[1]<close)
if TrendDown[3] AND MorningStar then
DRAWTEXT(\"Morning Star\", barindex, low[1]-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex-1,low[1]) COLOURED(0,155,10)
endif
PiercingLine=(body[1]<0 and body>0 and longcandle[1] and longcandle and open<low[1] and close>middle[1] and close<open[1])
if TrendDown[2] AND PiercingLine then
DRAWTEXT(\"Piercing Line\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
AbandonedBabyBottom=(body[2]<0 and body>0 and longcandle[2] and ratio[1]<0.3 and high[1]<low[2] and high[1]<low)
if TrendDown[3] AND AbandonedBabyBottom then
DRAWTEXT(\"Abandoned Baby Bottom\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeInsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishHarami[1] and close>close[1])
if TrendDown[3] AND ThreeInsideUp then
DRAWTEXT(\"Three Inside Up\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeOutsideUp=(body[2]<0 and body[1]>0 and body>0 and BullishEngulfing[1] and close>close[1])
if TrendDown[3] AND ThreeOutsideUp then
DRAWTEXT(\"Three Outside Up\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeWhiteSoldiers=(body[2]>0 and body[1]>0 and body>0 and high[1]>high[2] and high>high[1] and close[1]>close[2] and close>close[1] and open[1]>open[2] and open[1]<close[2] and open>open[1] and open<close[1])
if TrendDown[3] AND ThreeWhiteSoldiers then
DRAWTEXT(\"Three White Soldiers\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ConcealingBabySwallow=(body[3]<0 and body[2]<0 and body[1]<0 and body<0 and ratio[3]>0.8 and ratio[2]>0.8 and ratio>0.8 and open[1]<close[2] and high[1]>close[2] and shadowtop[1]>0.6*(abody[1]+shadowbottom[1]) and bodybottom<bodybottom[1] and bodytop>high[1])
if TrendDown[4] AND ConcealingBabySwallow then
DRAWTEXT(\"Concealing Baby Swallow\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishHarami=(body[1]<0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendDown[2] AND BullishHarami then
DRAWTEXT(\"Bullish Harami\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
HomingPigeon=(body[1]<0 and body<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendDown[2] AND HomingPigeon then
DRAWTEXT(\"Homing Pigeon\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishEngulfing=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendDown[2] AND BullishEngulfing then
DRAWTEXT(\"Bullish Engulfing\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
LastEngulfingBottom=(body[1]>0 and body<0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendDown[2] AND LastEngulfingBottom then
DRAWTEXT(\"Last Engulfing Bottom\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
DragonflyDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
if TrendDown[2] AND DragonflyDojiBottom then
DRAWTEXT(\"Dragonfly Doji\", barindex, low-atr, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
GravestoneDojiBottom=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
if TrendDown[2] AND GravestoneDojiBottom then
DRAWTEXT(\"Gravestone Doji\", barindex, low-atr, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
DojiStarBottom=(body[1]<0 AND longcandle[1] AND low<low[1] AND open<close[1] AND ratio<0.3 AND range<0.3*range[1])
if TrendDown[2] AND DojiStarBottom then
DRAWTEXT(\"Doji\", barindex, low-atr*0.75, Dialog, Standard, 12) COLOURED(R,G,B)
endif
BullishHaramiCross=(body[1]<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
if TrendDown[2] AND BullishHaramiCross then
DRAWTEXT(\"Bullish Harami Cross\", barindex, low-atr*1.20, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
ThreeStarsInTheSouth=(body[2]<0 and body[1]<0 and body<0 and shadowtop[2]<range[2]/4 and shadowbottom[2]>abody[2]/2 and low[1]>low[2] and high[1]<high[2] and abody[1]<abody[2] and shadowtop[1]<range[1]/4 and shadowbottom[1]>abody[1]/2 and low>low[1] and high<high[1] and abody<abody[1] and shadowtop<range/4 and shadowbottom<range/4)
if TrendDown[3] AND ThreeStarsInTheSouth then
DRAWTEXT(\"Three Stars In The South\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishBreakaway=(body[4]<0 and body[3]<0 and body>0 and open[3]<close[4] and close[2]<close[3] and close[1]<close[2] and longcandle and close<close[4] and close>open[3])
if TrendDown[5] AND BullishBreakaway then
DRAWTEXT(\"Bullish Breakaway\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
Hammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
if TrendDown[2] AND Hammer then
DRAWTEXT(\"Hammer\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
InvertedHammer=(body[1]<0 and longcandle[1] and low<low[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
if TrendDown[2] AND InvertedHammer then
DRAWTEXT(\"Inverted Hammer\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
RisingThreeMethods=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and longcandle and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1])
if TrendUp[5] AND RisingThreeMethods then
DRAWTEXT(\"Rising Three Methods\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishThreeLineStrike=(body[3]>0 and body[2]>0 and body[1]>0 and body<0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]>close[3] and close[1]>close[2] and open>close[1] and close<open[3])
if TrendUp[4] AND BullishThreeLineStrike then
DRAWTEXT(\"Bullish Three Line Strike\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishMatHold=(body[4]>0 and body[3]<0 and body[1]<0 and body>0 and longcandle[4] and close[3]>close[4] and close[2]<close[3] and close[1]<close[2] and high[2]<high[3] and high[1]<high[2] and low[1]>low[4] and open>close[1] and close>high[4] and close>high[3] and close>high[2] and close>high[1])
if TrendUp[5] AND BullishMatHold then
DRAWTEXT(\"Bullish Mat Hold\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//Bearish Signal
EveningStar=(body[2]>0 AND body<0 and longcandle[2] and open[1]>close[2] and open<close[1] and ratio[1]<0.3 and abody[1]<abody[2] and abody[1]<abody and high[1]>high and high[1]>high[2] and low[1]>open[2] and low[1]>close)
if TrendUp[3] AND EveningStar then
DRAWTEXT(\"Evening Star\", barindex, high[1]+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex-1,high[1]) COLOURED(255,0,10)
endif
DarkCloudCover=(body[1]>0 and body<0 and longcandle[1] and longcandle and open>high[1] and close<middle[1] and close>open[1])
if TrendUp[2] AND DarkCloudCover then
DRAWTEXT(\"Dark Cloud Cover\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
AbandonedBabyTop=(body[2]>0 and body<0 and longcandle[2] and ratio[1]<0.3 and low[1]>high[2] and low[1]>high)
if TrendUp[3] AND AbandonedBabyTop then
DRAWTEXT(\"Abandoned Baby Top\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ThreeInsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishharami[1] and close<close[1])
if TrendUp[3] AND ThreeInsideDown then
DRAWTEXT(\"Three Inside Down\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ThreeOutsideDown=(body[2]>0 and body[1]<0 and body<0 and bearishengulfing[1] and close<close[1])
if TrendUp[3] AND ThreeOutsideDown then
DRAWTEXT(\"Three Outside Down\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ThreeBlackCrows=(body[2]<0 and body[1]<0 and body<0 and longcandle[2] and longcandle[1] and longcandle and low[1]<low[2] and low<low[1] and close[1]<close[2] and close<close[1] and open[1]<open[2] and open[1]>close[2] and open<open[1] and open>close[1])
if TrendUp[3] AND ThreeBlackCrows then
DRAWTEXT(\"Three Black Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
UpsideGapTwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and bodytop>bodytop[1] and bodybottom<bodybottom[1] and close>close[2])
if TrendUp[3] AND UpsideGapTwoCrows then
DRAWTEXT(\"Upside Gap Two Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishHarami=(body[1]>0 and body<0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendUp[2] AND BearishHarami then
DRAWTEXT(\"Bearish Harami\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
DescendingHawk=(body[1]>0 and body>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1])
if TrendUp[2] AND DescendingHawk then
DRAWTEXT(\"Descending Hawk\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishEngulfing=(body[1]>0 and body<0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendUp[2] AND BearishEngulfing then
DRAWTEXT(\"Bearish Engulfing\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,20)
endif
LastEngulfingTop=(body[1]<0 and body>0 and bodybottom<bodybottom[1] and bodytop>bodytop[1] and longcandle)
if TrendUp[2] AND LastEngulfingTop then
DRAWTEXT(\"Last Engulfing Top\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,20)
endif
DragonflyDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>3*abody and shadowtop<shadowbottom/3)
if TrendUp[2] AND DragonflyDojiTop then
DRAWTEXT(\"Dragonfly Doji\", barindex, high+atr, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
GravestoneDojiTop=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>3*abody and shadowbottom<shadowtop/3)
if TrendUp[2] AND GravestoneDojiTop then
DRAWTEXT(\"Gravestone Doji\", barindex, high+atr, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
DojiStarTop=(body[1]>0 AND longcandle[1] AND high>high[1] AND open>close[1] AND ratio<0.3 AND range<0.3*range[1])
if TrendUp[2] AND DojiStarTop then
DRAWTEXT(\"Doji\", barindex, high+atr*0.75, Dialog, Standard, 12) COLOURED(R,G,B)
endif
BearishHaramiCross=(body[1]>0 and longcandle[1] and bodybottom>bodybottom[1] and bodytop<bodytop[1] and ratio<0.3 and range<0.3*range[1])
if TrendUp[2] AND BearishHaramiCross then
DRAWTEXT(\"Bearish Harami Cross\", barindex, high+atr*1.20, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
AdvanceBlock=(body[2]>0 and body[1]>0 and body>0 and high[2]<high[1] and high[1]<high and open[1]>bodybottom[2] and open[1]<bodytop[2] and open>bodybottom[1] and open<bodytop[1] and abody[1]<abody[2] and abody<abody[1])
if TrendUp[3] AND AdvanceBlock then
DRAWTEXT(\"Advance Block\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
TwoCrows=(body[2]>0 and body[1]<0 and body<0 and longcandle[2] and open[1]>close[2] and close[1]>close[2] and open<bodytop[1] and open>bodybottom[1] and close<bodytop[2] and close>bodybottom[2])
if TrendUp[3] AND TwoCrows then
DRAWTEXT(\"Two Crows\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishBreakaway=(body[4]>0 and body[3]>0 and body<0 and open[3]>close[4] and close[2]>close[3] and close[1]>close[2] and longcandle and close>close[4] and close<open[3])
if TrendUp[5] AND BearishBreakaway then
DRAWTEXT(\"Bearish Breakaway\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
ShootingStar=(body[1]>0 and longcandle[1] and high>high[1] and shadowtop>2*abody and shadowbottom<0.3*abody)
if TrendUp[2] AND ShootingStar then
DRAWTEXT(\"Shooting Star\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
HangingMan=(body[1]>0 and longcandle[1] and high>high[1] and shadowbottom>2*abody and shadowtop<0.3*abody)
if TrendUp[2] AND HangingMan then
DRAWTEXT(\"Hanging Man\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
FallingThreeMethods=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and longcandle and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
if TrendDown[5] AND FallingThreeMethods then
DRAWTEXT(\"Falling Three Methods\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishThreeLineStrike=(body[3]<0 and body[2]<0 and body[1]<0 and body>0 and longcandle[3] and longcandle[2] and longcandle[1] and close[2]<close[3] and close[1]<close[2] and open<close[1] and close>open[3])
if TrendDown[4] AND BearishThreeLineStrike then
DRAWTEXT(\"Bearish Three Line Strike\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishMatHold=(body[4]<0 and body[3]>0 and body[1]>0 and body<0 and longcandle[4] and close[3]<close[4] and close[2]>close[3] and close[1]>close[2] and low[2]>low[3] and low[1]>low[2] and high[1]<high[4] and open<close[1] and close<low[4] and close<low[3] and close<low[2] and close<low[1])
if TrendDown[5] AND BearishMatHold then
DRAWTEXT(\"Bearish Mat Hold\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//Gaps
GapUp=(low>high[1])
GapDown=(high<low[1])
if GapUp then
DRAWTEXT(\"w\", barindex, (high[1]+low)/2, Dialog, Bold, 12) COLOURED(0,0,255)
else
if GapDown then
DRAWTEXT(\"w\", barindex, (high+low[1])/2, Dialog, Bold, 12) COLOURED(255,0,255)
endif
endif
//Steve Nison Candles
BullSash=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>close[1] AND open<open[1] AND close>open[1] AND shadowtop<0.1*abody)
if BullSash then
DRAWTEXT(\"Bull Sash\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullSeparatingLine=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>=open[1] AND shadowtop<0.1*abody)
if BullSeparatingLine then
DRAWTEXT(\"Bull Separating Line\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BullishCounterAttack=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND close<=close[1])
if TrendDown[2] AND BullishCounterAttack then
DRAWTEXT(\"Bullish Counter Attack\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BearSash=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open>open[1] AND open<close[1] AND close<open[1] AND shadowbottom<0.1*abody)
if BearSash then
DRAWTEXT(\"Bear Sash\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearSeparatingLine=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open<=open[1] AND shadowbottom<0.1*abody)
if BearSeparatingLine then
DRAWTEXT(\"Bear Separating Line\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
BearishCounterAttack=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND close>=close[1])
if TrendUp[2] AND BearishCounterAttack then
DRAWTEXT(\"Bearish Counter Attack\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
//Tweezers Top and Bottom
TweezersTop=(body[1]>0 AND longcandle[1] AND body<=0 AND high=high[1])
if TrendUp[2] AND TweezersTop then
DRAWTEXT(\"Tweezers Top\", barindex, high+atr*1.20, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
TweezersBottom=(body[1]<0 AND longcandle[1] AND body>=0 AND low=low[1])
if TrendDown[2] AND TweezersBottom then
DRAWTEXT(\"Tweezers Bottom\", barindex, low-atr*1.20, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
//kicker candlestick patterns
BullishKicking=(body[1]<0 AND longcandle[1] AND body>0 AND longcandle AND open>=open[1] AND shadowtop=0 AND shadowbottom=0)
if BullishKicking then
DRAWTEXT(\"Bullish Kicking\", barindex, low-atr*1.5, Dialog, Standard, 12) COLOURED(0,155,10)
DRAWARROWUP(barindex,low) COLOURED(0,155,10)
endif
BearishKicking=(body[1]>0 AND longcandle[1] AND body<0 AND longcandle AND open<=open[1] AND shadowtop=0 AND shadowbottom=0)
if BearishKicking then
DRAWTEXT(\"Bearish Kicking\", barindex, high+atr*1.5, Dialog, Standard, 12) COLOURED(255,0,10)
DRAWARROWDOWN(barindex,high) COLOURED(255,0,10)
endif
RETURN
Bravo pour ce travail hallucinant. Il me faudra un peu de patience pour mettre ces codes en Heiken Ashi.
Rechercher /remplacer les open high low et close par les noms de tes variables heikin ashi te prendra 2 minutes 🙂
merci.
Hi Ciccio, you made a great job here, warm thanks again for your sharing spirit!
Bravo pour tout ce travail !!
HiCan someone instruct me how to install this code?Thank you
Hi’ guys,
Brilliant code. I’ve been looking for the candlestick for a while.
However, when I add it as an indicator, it doesn’t work. I get a separate blank window. No markings on the price window.
Any suggestions?
Thanks.
Regards,
Mubashar
You have to add it by clicking on the wrench at the top left of each stock chart
Thanks Ciccio! It works the way you suggested it.
Qué bueno!!! felicidades.
Es posible hacer screener de velas de suelo tipo hammer, envolventes bullish engulfing, además de doble suelo o una divergencia alcista?
Saludos
Luis
Hi , very good
Do you try to program Fry pan bottom pattern?
Best regards
Hello Ciccio, thanks for the sharing. Which time unit would be best to use candles ? Day ? Hour ? Minute ?
Thanks!
programme dont work with me
Would love to get these. I tried to import them via .itf file but got a error message and it sent it to prorealtime.I was using quite a bit of RAM when doing the .itf import. the copy and paste didnt work. error message said , Drawtext is only used for indicator programming,{Probuilder}. any sugestions Thanks
Buongiorno Ciccio , mi chiamo Gianluigi , sono di Biella , mi piacerebbe contattarLa per il codice che ha fatto , lo trovo interessante , l’ho visto e però mi serve un consiglio
Meglio che chiedi direttamente sul Forum (inglese, che è frequentato da più persone)
Ho solo tradotto il codice da uno mq4.
Better to ask directly in the English Forum
I only translated the code from an original mq4
Ciccio! Good afternoon I tried to code in mt4 and this error is appearing in your code, can you help me please!
‘r’ – declaration without type trendeclander.mq4
Hi, our website is dedicated to ProRealTime trading platform programming. This is not MT4 code!
Hi, I have one question in the form of candles, source code and I do not know the number of range.
Hi ,I tried adding this to the indicator list keeps popping up with syntax error that tds is undefined. Could you kindly help me please
There is a new version that I posted in the library
Here
https://www.prorealcode.com/prorealtime-indicators/candlestick-pattern-indicator-2-0/
Thanks Ciccio, very much appreciated.
thinks very much for your job!!! how an i integrate a double/triple bottom or a double/triple top?
They have nothing to do with candlesticks, so I don’t know.
Anyway take into account that I posted an upgrade of this pattern indicator here https://www.prorealcode.com/prorealtime-indicators/candlestick-pattern-indicator-2-0/
ok merci
Could someone please confirm if attachment above contains all the code changes discussed in comments? That is, is the attachmentlatest version or do I need to copy from comments?
Awesome, Ciccio.
I tend to have the same question as kaq52, (however I can work with the itf attached), could you confirm that the latest version after all the discussions/request is attached in the itf above ?
Thanks a lot, the candlestick patterns in combination with the trends give lots of new trading ideas .
As written some posts above, there is an update here
https://www.prorealcode.com/prorealtime-indicators/candlestick-pattern-indicator-2-0/
that adds some new candles
Hi Admin, I can’t plug this indicator on my metatrader 4 on my laptop. When I add it on my indicators it doesn’t wanna appear. What can I do Please help me.
Sorry but we do not provide any help for mt4 users. Our website is dedicated to ProRealTime trading platform only.
Bonjour Messieurs et félicitations pour votre travail.
De mon coté, lorsque je souhaite enregistrer ce screener sur ma plateforme pro real time, j’ai une erreur concernant la ligne :
“middle=(open+close)/2”
Voici le message d’erreur qui s’affiche (en francais) :
“caractères manquants”. Suggestions : fin de code”
Constatez vous le même probleme de votre coté ?
Connaissez vous le probleme pour le résoudre ?
Merci pour votre aide et bonne journée
Régis
Bonjour, il s’agit d’un code d’indicateur et non d’un screener. Cet autre code par exemple est un screener pour la détection de figures de chandeliers: https://www.prorealcode.com/prorealtime-market-screeners/chartist-figures-detector/