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

RE: [amibroker] chart



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.