Stock Portfolio Organizer
The ultimate porfolio management solution.
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
Pin Bar Candlestick Pattern Detector for Amibroker (AFL)
A pin bar pattern consists of one price bar, typically a candlestick price bar, which represents a sharp reversal and rejection of price. The pin bar reversal as it is sometimes called, is defined by a long tail, the tail is also referred to as a “shadow” or “wick”. The area between the open and close of the pin bar is called its “real body”, and pin bars generally have small real bodies in comparison to their long tails.
The tail of the pin bar shows the area of price that was rejected, and the implication is that price will continue to move opposite to the direction the tail points. Thus, a bearish pin bar signal is one that has a long upper tail, showing rejection of higher prices with the implication that price will fall in the near-term. A bullish pin bar signal has a long lower tail, showing rejection of lower prices with the implication that price will rise in the near-term.
Read more here
Note: I am not the creator I have found this on the internet.
Indicator / Formula
_SECTION_BEGIN( "Pin Bar AFL" ); SetBarsRequired( 100000, 0 ); GraphXSpace = 15; SetChartOptions( 0, chartShowArrows | chartShowDates ); SetChartBkColor( ParamColor( "bkcolor", ColorRGB( 0, 0, 0 ) ) ); GfxSetBkMode( 0 ); GfxSetOverlayMode( 1 ); SetBarFillColor( IIf( C > O, ParamColor( "Candle UP Color", colorGreen ), IIf( C <= O, ParamColor( "Candle Down Color", colorRed ), colorLightGrey ) ) ); Plot( C, "\nPrice", IIf( C > O, ParamColor( "Wick UP Color", colorDarkGreen ), IIf( C <= O, ParamColor( "Wick Down Color", colorDarkRed ), colorLightGrey ) ), 64, 0, 0, 0, 0 ); dec = ( Param( "Decimals", 2, 0, 7, 1 ) / 10 ) + 1; Title = EncodeColor( 55 ) + Title = Name() + " " + EncodeColor( 32 ) + Date() + " " + EncodeColor( 5 ) + "{{INTERVAL}} " + EncodeColor( 55 ) + " Open = " + EncodeColor( 52 ) + WriteVal( O, dec ) + EncodeColor( 55 ) + " High = " + EncodeColor( 5 ) + WriteVal( H, dec ) + EncodeColor( 55 ) + " Low = " + EncodeColor( 32 ) + WriteVal( L, dec ) + EncodeColor( 55 ) + " Close = " + EncodeColor( 52 ) + WriteVal( C, dec ) + EncodeColor( 55 ) + " Volume = " + EncodeColor( 52 ) + WriteVal( V, 1 ); MaxNoseBodySize = 0.33; // Max. Body / Candle length ratio of the Nose Bar NoseBodyPosition = 0.4; // Body position in Nose Bar (e.g. top/bottom 40%) LeftEyeOppositeDirection = True; // true = Direction of Left Eye Bar should be opposite to pattern (bearish bar for bullish Pinbar pattern and vice versa) NoseSameDirection = False; // true = Direction of Nose Bar should be the same as of pattern (bullish bar for bullish Pinbar pattern and vice versa) NoseBodyInsideLeftEyeBody = False; // true = Nose Body should be contained inside Left Eye Body LeftEyeMinBodySize = 0.1; // Min. Body / Candle length ratio of the Left Eye Bar NoseProtruding = 0.5; // Minmum protrusion of Nose Bar compared to Nose Bar length NoseBodyToLeftEyeBody = 1; // Maximum relative size of the Nose Bar Body to Left Eye Bar Body NoseLengthToLeftEyeLength = 0; // Minimum relative size of the Nose Bar Length to Left Eye Bar Length LeftEyeDepth = 0.2; // Minimum relative depth of the Left Eye to its length; depth is difference with Nose's back up = down = 0; point = 0.1; blpin = brpin = False; for( i = 1; i < BarCount; i++ ) { NoseLength = High[i] - Low[i]; if( NoseLength == 0 ) NoseLength = Point; LeftEyeLength = High[i - 1] - Low[i - 1]; if( LeftEyeLength == 0 ) LeftEyeLength = Point; NoseBody = abs( Open[i] - Close[i] ); if( NoseBody == 0 ) NoseBody = point; LeftEyeBody = abs( Open[i - 1] - Close[i - 1] ); if( LeftEyeBody == 0 ) LeftEyeBody = point; // Bearish Pinbar if( High[i] - High[i - 1] >= NoseLength * NoseProtruding ) // Nose protrusion { if( NoseBody / NoseLength <= MaxNoseBodySize ) // Nose body to candle length ratio { if( 1 - ( High[i] - Max( Open[i], Close[i] ) ) / NoseLength < NoseBodyPosition ) // Nose body position in bottom part of the bar { if( ( !LeftEyeOppositeDirection ) || ( Close[i - 1] > Open[i - 1] ) ) // Left Eye bullish if required { if( ( !NoseSameDirection ) || ( Close[i] < Open[i] ) ) // Nose bearish if required { if( LeftEyeBody / LeftEyeLength >= LeftEyeMinBodySize ) // Left eye body to candle length ratio { if( ( Max( Open[i], Close[i] ) <= High[i - 1] ) && ( Min( Open[i], Close[i] ) >= Low[i - 1] ) ) // Nose body inside Left Eye bar { if( NoseBody / LeftEyeBody <= NoseBodyToLeftEyeBody ) // Nose body to Left Eye body ratio { if( NoseLength / LeftEyeLength >= NoseLengthToLeftEyeLength ) // Nose length to Left Eye length ratio { if( Low[i] - Low[i - 1] >= LeftEyeLength * LeftEyeDepth ) // Left Eye low is low enough { if( ( !NoseBodyInsideLeftEyeBody ) || ( ( Max( Open[i], Close[i] ) <= Max( Open[i - 1], Close[i - 1] ) ) && ( Min( Open[i], Close[i] ) >= Min( Open[i - 1], Close[i - 1] ) ) ) ) // Nose body inside Left Eye body if required { Down[i] = High[i] + 5 * Point + NoseLength / 5; brpin[i] = True; } } } } } } } } } } } // Bullish Pinbar if( Low[i - 1] - Low[i] >= NoseLength * NoseProtruding ) // Nose protrusion { if( NoseBody / NoseLength <= MaxNoseBodySize ) // Nose body to candle length ratio { if( 1 - ( Min( Open[i], Close[i] ) - Low[i] ) / NoseLength < NoseBodyPosition ) // Nose body position in top part of the bar { if( ( !LeftEyeOppositeDirection ) || ( Close[i - 1] < Open[i - 1] ) ) // Left Eye bearish if required { if( ( !NoseSameDirection ) || ( Close[i] > Open[i] ) ) // Nose bullish if required { if( LeftEyeBody / LeftEyeLength >= LeftEyeMinBodySize ) // Left eye body to candle length ratio { if( ( Max( Open[i], Close[i] ) <= High[i - 1] ) && ( Min( Open[i], Close[i] ) >= Low[i - 1] ) ) // Nose body inside Left Eye bar { if( NoseBody / LeftEyeBody <= NoseBodyToLeftEyeBody ) // Nose body to Left Eye body ratio { if( NoseLength / LeftEyeLength >= NoseLengthToLeftEyeLength ) // Nose length to Left Eye length ratio { if( High[i - 1] - High[i] >= LeftEyeLength * LeftEyeDepth ) // Left Eye high is high enough { if( ( !NoseBodyInsideLeftEyeBody ) || ( ( Max( Open[i], Close[i] ) <= Max( Open[i - 1], Close[i - 1] ) ) && ( Min( Open[i], Close[i] ) >= Min( Open[i - 1], Close[i - 1] ) ) ) ) // Nose body inside Left Eye body if required { Up[i] = Low[i] - 5 * Point - NoseLength / 5; blpin[i] = True; } } } } } } } } } } } } for( i = 1; i < BarCount; i++ ) { if( blpin[i] ) PlotText( "bull.pin " , i, L[ i ] - 2.5, colorLime ); if( brpin[i] ) PlotText( " bear pin" , i, H[ i ] + 2.5, colorOrange ); } PlotShapes( shapeHollowSmallSquare*brpin, 4, 0, H , 5 ); PlotShapes( shapeHollowSmallSquare*blpin, 5, 0, L , -5 ); Filter = brpin OR blpin; AddColumn( brpin, "Bearish Pin", 1.2 ); AddColumn( blpin, "Bullish Pin", 1.2 ); _SECTION_END();
0 comments
Leave Comment
Please login here to leave a comment.
Back