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

Re: [amibroker] Candle identification for Selected bar



PureBytes Links

Trading Reference Links

Hi Herman,

Both P=34 and P=21 refer to DarkCloudCover.
Which do you prefer? 


Thanks,
Corey Saxe


  ----- Original Message ----- 
  From: Herman van den Bergen 
  To: AmiBroker YahooGroups 
  Sent: Saturday, September 25, 2004 12:28 AM
  Subject: [amibroker] Candle identification for Selected bar


  Somebody asked me to modify the candle code posted earlier so that it would
  identify candle patterns for the selected bar, see code below. The
  CandlePattern() was posted before and is just repeated to make the code
  functional. The added pattern extraction loops are at the bottom of the code
  (watch for line wraps).

  best regards,
  herman.

  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;
     }

  PatternNameList = "";
  for(Cp=0; Cp<=44; Cp++)
        {
        VarSet("Pattern"+NumToStr(Cp,1.0),CandlePattern(cP));
        PatternNameList = PatternNameList +PatternName+",";
        }

  SelectedBar = SelectedValue(BarIndex());
  PStr="";
  for(Cp=0; Cp<=44; Cp++)
        {
        Temp = VarGet("Pattern"+NumToStr(Cp,1.0));
        if(temp[SelectedBar]) Pstr=Pstr+"#"+NumToStr(Cp,1.0)+" -
  "+StrExtract(PatternNameList,Cp)+"\n";
        }

  Plot(C,"Close",1,64);
  Title = Pstr;




  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

    a.. To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/
      
    b.. To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx
      
    c.. Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service. 



[Non-text portions of this message have been removed]



------------------------ Yahoo! Groups Sponsor --------------------~--> 
$9.95 domain names from Yahoo!. Register anything.
http://us.click.yahoo.com/J8kdrA/y20IAA/yQLSAA/GHeqlB/TM
--------------------------------------------------------------------~-> 

Check AmiBroker web page at:
http://www.amibroker.com/

Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
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:
    http://docs.yahoo.com/info/terms/