ZigZag Based on price oscilation.
added pattern recognition, also added recognition of head and shoulders and contracting/expanding triangles to previous list of patterns :p
added pattern recognition, also added recognition of head and shoulders and contracting/expanding triangles to previous list of patterns :p
- Use Alt Timeframe: enables optional timeframes, use higher timeframes to reduce noise.
- Timeframe: said Alt Timeframe.
- Show Patterns: toggles Pattern Recognition on.
study("[RS]ZigZag PA V1", overlay=true) useAltTF = input(true, title='Use Alt Timeframe') tf = input('15', title='Alt Timeframe') showPatterns = input(true, title='Show Patterns') zigzag() => _isUp = close >= open _isDown = close <= open _direction = _isUp[1] and _isDown ? -1 : _isDown[1] and _isUp ? 1 : nz(_direction[1]) _zigzag = _isUp[1] and _isDown and _direction[1] != -1 ? highest(2) : _isDown[1] and _isUp and _direction[1] != 1 ? lowest(2) : na sz = useAltTF ? (change(time(tf)) != 0 ? security(tickerid, tf, zigzag()) : na) : zigzag() plot(sz, title='zigzag', color=black, linewidth=2) // ||--- Pattern Recognition: x = valuewhen(sz, sz, 4) a = valuewhen(sz, sz, 3) b = valuewhen(sz, sz, 2) c = valuewhen(sz, sz, 1) d = valuewhen(sz, sz, 0) xab = (abs(b-a)/abs(x-a)) xad = (abs(a-d)/abs(x-a)) abc = (abs(b-c)/abs(a-b)) bcd = (abs(c-d)/abs(b-c)) // ||--> Functions: isBat(_mode)=> _xab = xab >= 0.382 and xab <= 0.5 _abc = abc >= 0.382 and abc <= 0.886 _bcd = bcd >= 1.618 and bcd <= 2.618 _xad = xad <= 0.886 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c) isAltBat(_mode)=> _xab = xab <= 0.382 _abc = abc >= 0.382 and abc <= 0.886 _bcd = bcd >= 2.0 and bcd <= 3.618 _xad = xad <= 1.13 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c) isButterfly(_mode)=> _xab = xab <= 0.786 _abc = abc >= 0.382 and abc <= 0.886 _bcd = bcd >= 1.618 and bcd <= 2.618 _xad = xad >= 1.27 and xad <= 1.618 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c) isABCD(_mode)=> _abc = abc >= 0.382 and abc <= 0.886 _bcd = bcd >= 1.13 and bcd <= 2.618 _abc and _bcd and (_mode == 1 ? d < c : d > c) isGartley(_mode)=> _xab = xab >= 0.5 and xab <= 0.618 // 0.618 _abc = abc >= 0.382 and abc <= 0.886 _bcd = bcd >= 1.13 and bcd <= 2.618 _xad = xad >= 0.75 and xad <= 0.875 // 0.786 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c) isCrab(_mode)=> _xab = xab >= 0.75 and xab <= 0.875 // 0.886 _abc = abc >= 0.382 and abc <= 0.886 _bcd = bcd >= 2.0 and bcd <= 3.618 _xad = xad >= 1.5 and xad <= 1.625 // 1.618 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c) isShark(_mode)=> _xab = xab >= 0.5 and xab <= 0.875 // 0.886 _abc = abc >= 1.13 and abc <= 1.618 _bcd = bcd >= 1.27 and bcd <= 2.24 _xad = xad >= 0.88 and xad <= 1.13 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c) is5o(_mode)=> _xab = xab >= 1.13 and xab <= 1.618 _abc = abc >= 1.618 and abc <= 2.24 _bcd = bcd >= 0.5 and bcd <= 0.625 // 0.5 _xad = xad >= 0.0 and xad <= 0.236 // negative? _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c) isWolf(_mode)=> _xab = xab >= 1.27 and xab <= 1.618 _abc = abc >= 0 and abc <= 5 _bcd = bcd >= 1.27 and bcd <= 1.618 _xad = xad >= 0.0 and xad <= 5 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c) isHnS(_mode)=> _xab = xab >= 2.0 and xab <= 10 _abc = abc >= 0.90 and abc <= 1.1 _bcd = bcd >= 0.236 and bcd <= 0.88 _xad = xad >= 0.90 and xad <= 1.1 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c) isConTria(_mode)=> _xab = xab >= 0.382 and xab <= 0.618 _abc = abc >= 0.382 and abc <= 0.618 _bcd = bcd >= 0.382 and bcd <= 0.618 _xad = xad >= 0.236 and xad <= 0.764 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c) isExpTria(_mode)=> _xab = xab >= 1.236 and xab <= 1.618 _abc = abc >= 1.000 and abc <= 1.618 _bcd = bcd >= 1.236 and bcd <= 2.000 _xad = xad >= 2.000 and xad <= 2.236 _xab and _abc and _bcd and _xad and (_mode == 1 ? d < c : d > c) plotshape(not showPatterns ? na : isABCD(-1) and not isABCD(-1)[1], text="\nAB=CD", style=shape.labeldown, color=maroon, textcolor=white, location=location.top, transp=0, offset=-2) plotshape(not showPatterns ? na : isBat(-1) and not isBat(-1)[1], text="Bat", style=shape.labeldown, color=maroon, textcolor=white, location=location.top, transp=0, offset=-2) plotshape(not showPatterns ? na : isAltBat(-1) and not isAltBat(-1)[1], text="Alt Bat", style=shape.labeldown, color=maroon, textcolor=white, location=location.top, transp=0) plotshape(not showPatterns ? na : isButterfly(-1) and not isButterfly(-1)[1], text="Butterfly", style=shape.labeldown, color=maroon, textcolor=white, location=location.top, transp=0) plotshape(not showPatterns ? na : isGartley(-1) and not isGartley(-1)[1], text="Gartley", style=shape.labeldown, color=maroon, textcolor=white, location=location.top, transp=0) plotshape(not showPatterns ? na : isCrab(-1) and not isCrab(-1)[1], text="Crab", style=shape.labeldown, color=maroon, textcolor=white, location=location.top, transp=0) plotshape(not showPatterns ? na : isShark(-1) and not isShark(-1)[1], text="Shark", style=shape.labeldown, color=maroon, textcolor=white, location=location.top, transp=0) plotshape(not showPatterns ? na : is5o(-1) and not is5o(-1)[1], text="5-O", style=shape.labeldown, color=maroon, textcolor=white, location=location.top, transp=0) plotshape(not showPatterns ? na : isWolf(-1) and not isWolf(-1)[1], text="Wolf Wave", style=shape.labeldown, color=maroon, textcolor=white, location=location.top, transp=0) plotshape(not showPatterns ? na : isHnS(-1) and not isHnS(-1)[1], text="Head and Shoulders", style=shape.labeldown, color=maroon, textcolor=white, location=location.top, transp=0) plotshape(not showPatterns ? na : isConTria(-1) and not isConTria(-1)[1], text="Contracting Triangle", style=shape.labeldown, color=maroon, textcolor=white, location=location.top, transp=0) plotshape(not showPatterns ? na : isExpTria(-1) and not isExpTria(-1)[1], text="Expanding Triangle", style=shape.labeldown, color=maroon, textcolor=white, location=location.top, transp=0) plotshape(not showPatterns ? na : isABCD(1) and not isABCD(1)[1], text="AB=CD\n", style=shape.labelup, color=green, textcolor=white, location=location.bottom, transp=0) plotshape(not showPatterns ? na : isBat(1) and not isBat(1)[1], text="Bat", style=shape.labelup, color=green, textcolor=white, location=location.bottom, transp=0) plotshape(not showPatterns ? na : isAltBat(1) and not isAltBat(1)[1], text="Alt Bat", style=shape.labelup, color=green, textcolor=white, location=location.bottom, transp=0) plotshape(not showPatterns ? na : isButterfly(1) and not isButterfly(1)[1], text="Butterfly", style=shape.labelup, color=green, textcolor=white, location=location.bottom, transp=0) plotshape(not showPatterns ? na : isGartley(1) and not isGartley(1)[1], text="Gartley", style=shape.labelup, color=green, textcolor=white, location=location.bottom, transp=0) plotshape(not showPatterns ? na : isCrab(1) and not isCrab(1)[1], text="Crab", style=shape.labelup, color=green, textcolor=white, location=location.bottom, transp=0) plotshape(not showPatterns ? na : isShark(1) and not isShark(1)[1], text="Shark", style=shape.labelup, color=green, textcolor=white, location=location.bottom, transp=0) plotshape(not showPatterns ? na : is5o(1) and not is5o(1)[1], text="5-O", style=shape.labelup, color=green, textcolor=white, location=location.bottom, transp=0) plotshape(not showPatterns ? na : isWolf(1) and not isWolf(1)[1], text="Wolf Wave", style=shape.labelup, color=green, textcolor=white, location=location.bottom, transp=0) plotshape(not showPatterns ? na : isHnS(1) and not isHnS(1)[1], text="Head and Shoulders", style=shape.labelup, color=green, textcolor=white, location=location.bottom, transp=0) plotshape(not showPatterns ? na : isConTria(1) and not isConTria(1)[1], text="Contracting Triangle", style=shape.labelup, color=green, textcolor=white, location=location.bottom, transp=0) plotshape(not showPatterns ? na : isExpTria(1) and not isExpTria(1)[1], text="Expanding Triangle", style=shape.labelup, color=green, textcolor=white, location=location.bottom, transp=0)