PureBytes Links
Trading Reference Links
|
This
was also posted about a week ago (search for "Candlestick"):
<FONT face=Tahoma
size=2>-----Original Message-----From: Herman van den Bergen
[mailto:psytek@xxxxxxxx]Sent: Sunday, June 20, 2004 3:25
AMTo: amibroker@xxxxxxxxxxxxxxxSubject: RE: [amibroker]
Candlestick code
[Ed] <FONT
face=Arial>I was wondering if there is code to search for a variety of
candlesticks (doji, hanging man...) or candlestick patterns (morning star,
bullish engulfing pattern...).
<FONT
face=Arial>
Hello Ed, below
some experimental code to identify and investigate Candle Patterns
on price charts. The patterns come from many sources, some of my own thrown
in, and you can add your own. Copy it to an indicator and open the
Param() window. As is you can select up to 44 candle patterns and see various
stats on your chart. Candle patterns have more meaning if they occur under the
right conditions, for example in an oversold or overbought condition. In the
code the RSI() is used as qualifier however you should experiment with
your own formula.
<FONT
face=Arial>
Candle patterns are
relative in short timeframes and you have to consider how many trades
were used to create the pattern and the fact that the patterns may be the
result of random price movements. The more samples (trades) are contained in
the candle pattern the more valid the pattern is (just my personal opinion).
<FONT
face=Arial>
Good
luck,
<FONT
face=Arial>herman
<FONT
face=Arial>
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);//////////////////////////////////////////////////////////////////ThH =
Param("Qualifier High Threshold",100,0,100,1);ThL = Param("Qualifier
Low Threshold",0,0,100,1);Pd = Param("Qualifier
Period",3,0,10,1);R = RSI(Pd); // Qualifier for candle pattern (substitute
your
own)//////////////////////////////////////////////////////////////////CandlePatternTrue
= CandlePattern(P) AND R>ThL AND R<ThH;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((HighestInDisplay-Lowestindisplay)+0.9*HighestIndisplay,"",1,styleNoLine|styleNoLabel);Plot(C,"Close",colorBlack,64);Plot(IIf(CandlePatternTrue,1,Null)*0.995*L,"",6,2|4);
<FONT
face=Arial>PlotShapes(UpDay*shapeUpArrow,colorBrightGreen,0,L);
PlotShapes(downDay*shapeDownArrow,colorRed,0,H);Title = "\nCANDLE
PATTERN
ANALYSIS\n\n"+"Open:
"+NumToStr(O,1.2)+"\n"+"High:
"+NumToStr(H,1.2)+"\n"+"Low:
"+NumToStr(L,1.2)+"\n"+"Close:
"+NumToStr(C,1.2)+"\n\n"+
"Candle
Pattern: "+PatternName+"\n"+"Candle
Pattern# "+NumToStr(P,1.0)+"\n"+"#Patterns
found: "+NumToStr(NumPatterns
,1.0)+"\n"+"#Updays:
"+NumToStr(NumUpDays,1.0,False)+ "
["+NumToStr(Nz(NumUpDays/NumPatterns*100),1.0,False)+"%]\n"+"#DownDays:
"+NumToStr(NumDownDays,1.0,False)+ "
["+NumToStr(Nz(NumDownDays/numpatterns*100),1.0,False)+"%]\n\n"+"Profit at
cursor:
"+NumToStr(Profit,1.4)+"%\n"+"Ave.Profit/Pattern:"+NumToStr(Nz(SimpleProfit/NumPatterns),1.4)+"%\n"+"Tot.Simple
profit: "+NumToStr(SimpleProfit,1.4)+"%\n"+"Tot.Comp. profit:
"+NumToStr(CompoundedProfit,1.4)+"%\n";
<FONT
face=Arial>
<SPAN
class=062514123-28062004>
<FONT face=Tahoma
size=2>-----Original Message-----From: mrdavis9
[mailto:mrdavis9@xxxxxxxxxx]Sent: Monday, June 28, 2004 6:44
PMTo: amibroker@xxxxxxxxxxxxxxxSubject: Re: [amibroker]
candle pattern screening???Importance: High
This is the only hit that came up when I searched the
library for "candle pattern". The search word of "candle" brought up
several but I did not look to see if they were candle searches. Ron
D
<A
href="">http://www.amibroker.com/library/detail.php?id=26
==================================
<BLOCKQUOTE dir=ltr
>
----- Original Message -----
<DIV
>From:
Herman van den
Bergen
To: <A title=amibroker@xxxxxxxxxxxxxxx
href="">amibroker@xxxxxxxxxxxxxxx
Sent: Monday, June 28, 2004 2:01
PM
Subject: RE: [amibroker] candle pattern
screening???
Do
a search for "candle" in the list archives, there were quite a few post
complete with all kinds of code a few weeks ago.
<SPAN
class=859015518-28062004><FONT face=Arial color=#0000ff
size=2>
<FONT face=Arial color=#0000ff
size=2>herman
<FONT face=Tahoma
size=2>-----Original Message-----From: jaredmann83
[mailto:jaredmann83@xxxxxxxxxxxx]Sent: Monday, June 28, 2004
9:56 AMTo: <A
href="">amibroker@xxxxxxxxxxxxxxxSubject:
[amibroker] candle pattern screening???Hi
there,I'm a newbie to Amibroker and programming, i read the manual
over and over, and asked elsewhere but I am stuck and in desperate
need;can someone PLEASE write me code to scan EOD data from my
watchlists for hammer and shooting star candle
formations???any help is greatly
appreciated!thanks.jared
mann.Check AmiBroker web page at:<A
href="">http://www.amibroker.com/Check
group FAQ at: <A
href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Check AmiBroker web page at:<A
href="">http://www.amibroker.com/Check
group FAQ at: <A
href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Check AmiBroker web page
at:<A
href="">http://www.amibroker.com/Check
group FAQ at: <A
href="">http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Check AmiBroker web page at:
http://www.amibroker.com/
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html
Yahoo! Groups Sponsor
ADVERTISEMENT
Yahoo! Groups Links
To visit your group on the web, go to:http://groups.yahoo.com/group/amibroker/
To unsubscribe from this group, send an email to:amibroker-unsubscribe@xxxxxxxxxxxxxxx
Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
|