[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [SPAM] - Re: [amibroker] Acceleration Bands - Email found insubject



PureBytes Links

Trading Reference Links




Nice code Herman, thank you for sharing 
it.
 
Sjaak
<BLOCKQUOTE 
>
  ----- Original Message ----- 
  <DIV 
  >From: 
  Herman van den 
  Bergen 
  To: <A title=amibroker@xxxxxxxxxxxxxxx 
  href="">amibroker@xxxxxxxxxxxxxxx 
  Sent: Sunday, June 20, 2004 9:25 AM
  Subject: 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> 
  
  
  
   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 
  
  
  Deze e-mail is door E-mail VirusScanner van Planet Internet gecontroleerd op 
  virussen. Op <A 
  href='"http://www.planet.nl/evs";'>http://www.planet.nl/evs staat een 
  verwijzing naar de actuele lijst waar op wordt gecontroleerd. 



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.