Wednesday, July 15, 2015
Pin Bar AFL
_SECTION_BEGIN("Pin Bar AFL");
SetBarsRequired(100000,0);
GraphXSpace = 15;
SetChartOptions(0,chartShowArrows|chartShowDates);
SetChartBkColor(ParamColor("bkcolor",colorBlack));
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(80)+ Title = Name() + " " + EncodeColor(32) + Date() +
" " + EncodeColor(5) + "{{INTERVAL}} " +
EncodeColor(99)+ " Open = "+ EncodeColor(99)+ WriteVal(O,dec) +
EncodeColor(99)+ " High = "+ EncodeColor(5) + WriteVal(H,dec) +
EncodeColor(99)+ " Low = "+ EncodeColor(32)+ WriteVal(L,dec) +
EncodeColor(99)+ " Close = "+ EncodeColor(99)+ WriteVal(C,dec)+
EncodeColor(99)+ " Volume = "+ EncodeColor(99)+ 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= Blpin OR brpin;
AddColumn(blpin,"bull pin",1.2);
Addcolumn(brpin,"bear pin",1.2);
AddColumn(Close,"Close",1.2);
_SECTION_END();
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment