Stock Portfolio Organizer

The ultimate porfolio management solution.

Shares, Margin, CFD's, Futures and Forex
EOD and Realtime
Dividends and Trust Distributions
And Much More ....
For Portfolio Manager Click Here

WiseTrader Toolbox

#1 Selling Amibroker Plugin featuring:

Advanced Adaptive Indicators
Advanced Pattern Exploration
Neural Networks
And Much More ....
Find Out More Here

afl for Amibroker (AFL)

Copy & Paste Friendly


_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
_SECTION_END();



O1 = Ref(O,-1);O2 = Ref(O,-2);
H1 = Ref(H,-1);H2 = Ref(H,-2);
L1 = Ref(L,-1);L2 = Ref(L,-2);
C1 = Ref(C,-1);C2 = Ref(C,-2);

function CandlePattern(P)
	{
	global PatternName;
	if(P == 0) { PatternName = "NearDoji"; Pv = (abs(O-C)<= ((H-L)*0.1)); }
	else if(P == 1) { PatternName = "BlackCandle"; Pv = (O>C); }
	else if(P == 2) { PatternName = "LongBlackCandle"; Pv = (O>C AND
(O-C)/(.001+H-L)>.6); }
	else if(P == 3) { PatternName = "SmallBlackCandle"; Pv = ((O>C) AND
((H-L)>(3*(O-C)))); }
	else if(P == 4) { PatternName = "WhiteCandle"; Pv = (C>O); }
	else if(P == 5) { PatternName = "LongWhiteCandle"; Pv = ((C>O) AND
((C-O)/(.001+H-L)>.6)); }
	else if(P == 6) { PatternName = "SmallWhiteCandle"; Pv = ((C>O) AND
((H-L)>(3*(C-O)))); }
	else if(P == 7) { PatternName = "BlackMaubozu"; Pv = (O>C AND H==O AND C==L);
}
	else if(P == 8) { PatternName = "WhiteMaubozu"; Pv = (C>O AND H==C AND O==L);
}
	else if(P == 9) { PatternName = "BlackClosingMarubozu"; Pv = (O>C AND C==L);
}
	else if(P == 10) { PatternName = "WhiteClosingMarubozu"; Pv = (C>O AND C==H);
}
	else if(P == 11) { PatternName = "BlackOpeningMarubozu"; Pv = (O>C AND O==H);
}
	else if(P == 12) { PatternName = "WhiteOpeningMarubozu"; Pv = (C>O AND O==L);
}
	else if(P == 13) { PatternName = "HangingMan"; Pv = (((H-L)>4*(O-C)) AND
((C-L)/(.001+H-L)>= 0.75) AND ((O-L)/(.001+H-L)>= 0.75)); }
	else if(P == 14) { PatternName = "Hammer"; Pv = (((H-L)>3*(O-C)) AND
((C-L)/(.001+H-L)>0.6) AND ((O-L)/(.001+H-L)>0.6)); }
	else if(P == 15) { PatternName = "InvertedHammer"; Pv = (((H-L)>3*(O-C)) AND
((H-C)/(.001+H-L)>0.6) AND ((H-O)/(.001+H-L)>0.6)); }
	else if(P == 16) { PatternName = "ShootingStar"; Pv = (((H-L)>4*(O-C)) AND
((H-C)/(.001+H-L)>= 0.75) AND ((H-O)/(.001+H-L)>= 0.75)); }
	else if(P == 17) { PatternName = "BlackSpinningTop"; Pv = ((O>C) AND
((H-L)>(3*(O-C))) AND (((H-O)/(.001+H-L))<.4) AND (((C-L)/(.001+H-L))<.4)); }
	else if(P == 18) { PatternName = "WhiteSpinningTop"; Pv = ((C>O) AND
((H-L)>(3*(C-O))) AND (((H-C)/(.001+H-L))<.4) AND (((O-L)/(.001+H-L))<.4)); }
	else if(P == 19) { PatternName = "BearishAbandonedBaby"; Pv = ((C1 == O1) AND
(C2>O2) AND (O>C) AND (L1>H2) AND (L1>H)); }
	else if(P == 20) { PatternName = "BearishEveningDojiStar"; Pv = ((C2>O2) AND
((C2-O2)/(.001+H2-L2)>.6) AND (C2<O1) AND (C1>O1) AND ((H1-L1)>(3*(C1-O1))) AND
(O>C) AND (O<O1)); }
	else if(P == 21) { PatternName = "DarkCloudCover"; Pv = (C1>O1 AND
((C1+O1)/2)>C AND O>C AND O>C1 AND C>O1 AND (O-C)/(.001+(H-L)>0.6)); }
	else if(P == 22) { PatternName = "BearishEngulfing"; Pv = ((C1>O1) AND (O>C)
AND (O>= C1) AND (O1>= C) AND ((O-C)>(C1-O1))); }
	else if(P == 23) { PatternName = "ThreeOutsideDownPattern"; Pv = ((C2>O2) AND
(O1>C1) AND (O1>= C2) AND (O2>= C1) AND ((O1-C1)>(C2-O2)) AND (O>C) AND (C<C1));
}
	else if(P == 24) { PatternName = "BullishAbandonedBaby"; Pv = ((C1 == O1) AND
(O2>C2) AND (C>O) AND (L2>H1) AND (L>H1)); }
	else if(P == 25) { PatternName = "BullishMorningDojiStar"; Pv = ((O2>C2) AND
((O2-C2)/(.001+H2-L2)>.6) AND (C2>O1) AND (O1>C1) AND ((H1-L1)>(3*(C1-O1))) AND
(C>O) AND (O>O1)); }
	else if(P == 26) { PatternName = "BullishEngulfing"; Pv = ((O1>C1) AND (C>O)
AND (C>= O1) AND (C1>= O) AND ((C-O)>(O1-C1))); }
	else if(P == 27) { PatternName = "ThreeOutsideUpPattern"; Pv = ((O2>C2) AND
(C1>O1) AND (C1>= O2) AND (C2>= O1) AND ((C1-O1)>(O2-C2)) AND (C>O) AND (C>C1));
}
	else if(P == 28) { PatternName = "BullishHarami"; Pv = ((O1>C1) AND (C>O) AND
(C<= O1) AND (C1<= O) AND ((C-O)<(O1-C1))); }
	else if(P == 29) { PatternName = "ThreeInsideUpPattern"; Pv = ((O2>C2) AND
(C1>O1) AND (C1<= O2) AND (C2<= O1) AND ((C1-O1)<(O2-C2)) AND (C>O) AND (C>C1)
AND (O>O1)); }
	else if(P == 30) { PatternName = "PiercingLine"; Pv = ((C1<O1) AND
(((O1+C1)/2)<C) AND (O<C) AND (O<C1) AND (C<O1) AND ((C-O)/(.001+(H-L))>0.6));
}
	else if(P == 31) { PatternName = "BearishHarami"; Pv = ((C1>O1) AND (O>C) AND
(O<= C1) AND (O1<= C) AND ((O-C)<(C1-O1))); }
	else if(P == 32) { PatternName = "ThreeInsideDownPattern"; Pv = ((C2>O2) AND
(O1>C1) AND (O1<= C2) AND (O2<= C1) AND ((O1-C1)<(C2-O2)) AND (O>C) AND (C<C1)
AND (O<O1)); }
	else if(P == 33) { PatternName = "ThreeWhiteSoldiers"; Pv = (C>O*1.01) AND
(C1>O1*1.01) AND (C2>O2*1.01) AND (C>C1) AND (C1>C2) AND (O<C1) AND (O>O1) AND
(O1<C2) AND (O1>O2) AND (((H-C)/(H-L))<.2) AND (((H1-C1)/(H1-L1))<.2) AND
(((H2-C2)/(H2-L2))<.2); }
	else if(P == 34) { PatternName = "DarkCloudCover"; Pv = (C1>O1*1.01) AND (O>C)
AND (O>H1) AND (C>O1) AND (((C1+O1)/2)>C) AND (C>O1) AND
(MA(C,13)-Ref(MA(C,13),-4)>0); }
	else if(P == 35) { PatternName = "ThreeBlackCrows"; Pv = (O>C*1.01) AND
(O1>C1*1.01) AND (O2>C2*1.01) AND (C<C1) AND (C1<C2) AND (O>C1) AND (O<O1) AND
(O1>C2) AND (O1<O2) AND (((C-L)/(H-L))<.2) AND (((C1-L1)/(H1-L1))<.2) AND
(((C2-L2)/(H2-L2))<.2); }
	else if(P == 36) { PatternName = "doji"; Pv = (O == C); }
	else if(P == 37) { PatternName = "GapUp"; Pv = GapUp(); }
	else if(P == 38) { PatternName = "GapDown"; Pv = GapDown(); }
	else if(P == 39) { PatternName = "BigGapUp"; Pv = L>1.01*H1; }
	else if(P == 40) { PatternName = "BigGapDown"; Pv = H<0.99*L1; }
	else if(P == 41) { PatternName = "HugeGapUp"; Pv = L>1.02*H1; }
	else if(P == 42) { PatternName = "HugeGapDown"; Pv = H<0.98*L1; }
	else if(P == 43) { PatternName = "DoubleGapUp"; Pv = GapUp() AND
Ref(GapUp(),-1); }
	else if(P == 44) { PatternName = "DoubleGapDown"; Pv = GapDown() AND
Ref(GapDown(),-1); }
	return Pv;
	}


P 		= Param("CandlePattern#",20,0,44,1);

CandlePatternTrue = CandlePattern(P);
NextBar = Ref(CandlePatternTrue,-1);
Profit = IIf(NextBar,(C-O)/O*100,0);
SecondBar = BarIndex()==2;
SimpleProfit = LastValue(Cum(Profit));
CompoundedProfit = (LastValue(AMA2(1,(SecondBar==1),(SecondBar==0)*(1 +
Profit/100)))-1)*100;
Upday = IIf(NextBar, (C-O)>0,0);
downDay = IIf(NextBar, (C-O)<0,0);
PatternColor = IIf(CandlePatternTrue,2,1);
NumUpDays = LastValue(Cum(UpDay));
NumDownDays = LastValue(Cum(downDay));
NumPatterns = LastValue(Cum(CandlePatternTrue ));
LowestInDisplay = Lowest(ValueWhen(Status("barVisible"),L));
HighestInDisplay = Highest(ValueWhen(Status("Barvisible"),H));

Plot(C,"Close",colorBlack,64);
Plot(IIf(CandlePatternTrue,1,Null)*0.995*L,"",6,2|4);
PlotShapes(UpDay*shapeUpArrow,colorBrightGreen,0,L); 
PlotShapes(downDay*shapeDownArrow,colorRed,0,H);
//Title = "Open: "+NumToStr(O,1.2)+"High: "+NumToStr(H,1.2)+"Low: "+NumToStr(L,1.2)+"Close: "+NumToStr(C,1.2);

Minute5high1= TimeFrameGetPrice("H", in5Minute, 9); high1=LastValue (Minute5high1);
Minute5low1 = TimeFrameGetPrice("L", in5Minute, 9); low1=LastValue (Minute5low1);

 avd=IIf(C>Ref(High1,-1),1,IIf(C<Ref(Low1,-1),-1,0));
 avn=ValueWhen(avd!=0,avd,1);
 s5d=IIf(avn==1,High1,Low1);
 exitlong = Cross(s5d, H);
 //PlotShapes(exitlong * shapeNone, colorBlack,0,H,-10);
 exitshort = Cross(L, s5d);
 //PlotShapes(exitshort * shapeNone, colorBlack,0,L,-15);

Buy = exitshort;
Sell = exitlong;
 
 //Buy = ExRem(Buy,Sell);
 //Sell = ExRem(Sell,Buy);
Cond=0;
i=1;
TimeFrameSet(in5Minute);
n=TimeNum();
if (n[i]==100000)
{
 Cond=0;
Minute5high1= TimeFrameGetPrice("H", in5Minute, 9); high1=LastValue (Minute5high1,1);
Minute5low1 = TimeFrameGetPrice("L", in5Minute, 9); low1=LastValue (Minute5low1,1);
}
if (n[i]==102000)
{
 p= TimeFrameGetPrice("H", in5Minute, 4); high2=LastValue (p,1);
 r= TimeFrameGetPrice("L", in5Minute, 4); low2=LastValue (r,1);
 Cond=IIf(High1>High2,IIf(Low2>Low1,1,0),0);
}

if (Cond[i]==1)
{
 
avd=IIf(C>Ref(High1,-1),1,IIf(C<Ref(Low1,-1),-1,0));
 avn=ValueWhen(avd!=0,avd,1);
 s5d=IIf(avn==1,High1,Low1);
 exitlong = Cross(s5d, H);
 PlotShapes(exitlong * shapeNone, colorBlack,0,H,-10);
 exitshort = Cross(L, s5d);
 PlotShapes(exitshort * shapeNone, colorBlack,0,L,-15);

 Buy = exitshort;
 Sell = exitlong;
 
 Buy = ExRem(Buy,Sell);
 Sell = ExRem(Sell,Buy);

AlertIf( Buy, "", "BUY @ " + C, 1 );
AlertIf( Sell, "", "SELL @ " + C, 2 );

}
TimeFrameRestore();
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorGreen, 0, L, Offset=-40);
PlotShapes(IIf(Buy, shapeSquare, shapeNone),colorLime, 0,L, Offset=-50);                      
PlotShapes(IIf(Buy, shapeUpArrow, shapeNone),colorWhite, 0,L, Offset=-45);
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorRed, 0, H, Offset=40);
PlotShapes(IIf(Sell, shapeSquare, shapeNone),colorOrange, 0,H, Offset=50);                      
PlotShapes(IIf(Sell, shapeDownArrow, shapeNone),colorWhite, 0,H, Offset=-45);


for(i=BarCount-1;i>1;i--)
{
if(Buy[i] == 1)
{
entry = C[i];
sig = "BUY";
sl = entry+ (High1-Low1)* .60;
tar1 = entry + (High1-Low1)* .50;
tar2 =tar1+ (High1-Low1)*.50;
tar3 = tar2 + (High1-Low1)*.50;

bars = i;
i = 0;
}
if(Sell[i] == 1)
{
sig = "SELL";
entry = C[i];
sl =  entry- (High1-Low1)* .60;
tar1 = entry - (High1-Low1)* .50;
tar2 = tar1 - (High1-Low1)* .50;
tar3 =tar2- (High1-Low1)* .50;


bars = i;
i = 0;
}}
Offset = 20;
Clr = IIf(sig == "BUY", colorLime, colorRed);
ssl = IIf(bars == BarCount-1, s5d[BarCount-1], Ref(s5d, -1));
sl = ssl[BarCount-1];

messageboard = ParamToggle("Message Board","Show|Hide",0);
if (messageboard == 0 )
{
GfxSelectFont( "Tahoma", 14, 100 );
GfxSetBkMode( 1 );
GfxSetTextColor( colorWhite );
GfxSetBkMode(transparent=1);

if ( sig =="BUY")
{
GfxSelectSolidBrush( colorGreen ); // this is the box background color
}
else
{
GfxSelectSolidBrush( colorRed ); // this is the box background color
}
pxHeight = Status( "pxchartheight" ) ;
xx = Status( "pxchartwidth");
Left = 1100;
width = 310;
x = 5;
x2 = 290;

y = pxHeight;
GfxSetBkMode(transparent=1);
GfxSelectPen( colorGreen, 1); // broader color
GfxRoundRect( x, y - 163, x2, y , 7, 7 ) ;
GfxTextOut( ( " Auto Buy & Sell"),88,y-165);
GfxTextOut( (" "),27,y-160);
//GfxTextOut( ("Last " + sig + " Signal came " + (BarCount-bars-1) * Interval()/60 + " mins ago"), 13, y-140) ; // The text format location
GfxTextOut( ("" + WriteIf(sig =="BUY",sig + " @ ",sig + " @") + " : " + entry), 13, y-120);
GfxTextOut( ("Stop Loss : " + sl + " (" + WriteVal(IIf(sig == "SELL",entry-sl,sl-entry), 2.2) + ")"), 13, y-100);
GfxTextOut( ("TGT:1 : " + tar1), 13, y -80);
GfxTextOut( ("TGT:2 : " + tar2), 13,y-60);
GfxTextOut( ("TGT:3 : " + tar3), 13,y-40);
GfxTextOut( ("Current P/L : " + WriteVal(IIf(sig == "BUY",(C-entry),(entry-C)),2.2)), 88, y-22);;

}
Back