| 
 Hello Anil, 
  
Its only a word wrap which has caused 
the problem. 
  
Attached is the code 
file. 
  
Cheers 
  
Prashanth 
  ----- Original Message -----  
  
  
  Sent: Tuesday, June 14, 2005 10:10 
  PM 
  Subject: Re: [amibroker] Complete AFL 
  code for "Flags and Pennants" Trading System 
  
  
  I am getting a syntex error on 
  R (underlined for identification) in the following 
  line. 
  What should I do.  
    
  LOWER FLAG TRENDLINE 
    
  Anil 
  
    ----- Original Message -----  
    
    
    Sent: Tuesday, June 14, 2005 6:42 
    PM 
    Subject: [amibroker] Complete AFL code 
    for "Flags and Pennants" Trading System 
    
  Below is the complete AFL code for Markos Katsano's 
    'Flags and  Pennants' Trading System.  Markos articles appeared in 
    the April and  May 2005 TASC issues.  The May 2005 issue had the 
    Metastock code for  the trading system.  I've simply translated the 
    Metastock code to  AFL.  To check for accuracy, I attempted to run 
    the AFL code against  the examples illustrated in the articles.  My 
    AFL translation DID NOT  pick up the 'flags and pennants' shown in the 
    examples.  That makes  me suspect that my translation is not 
    absolutely correct.  However, I  backtested the AFL code against a 
    small database of stocks (over a 5  year period) and the backtest/scan 
    was able to pick out 'flags and  pennants' breakouts with no 
    problems.  For e.g., LJPC went on to make  a 77% profit in a mth 
    after being identified as making a breakout by  the code.  Another 
    e.g is IDEV which went on to make 82% in less than  5 wks.......there are 
    many more.  Of course, some breakouts failed  but the AFL sell rules 
    quickly eliminated them.  This system works  best on small caps and 
    you would need more than 300 bars of data for  the trading rules to work 
    (one of the indicators, VFI, needs more  than a year of data).  
    Also, the 'flags and pennants' don't occur too  frequently so you would 
    need to scan a large database of stocks (at  least a 1000) to get a 
    decent number of buy signals or to get a large  sample size for valid 
    backtesting.  More signals are picked up during  overall market bull 
    periods.  Some small caps have 3-4 'flags and  pennants' occurring 
    over a period of 1-2 years. BOTTOM LINE - THE CODE WORKS AND IS A GREAT 
    SCAN FOR BREAKOUT STOCKS  BUT WOULD, PROBABLY, NEED TO BE TWEAKED BY AN 
    'METASTOCK TO AFL'  GURU.  I've included the Metastock code below 
    the AFL for  afficianados to find my errors, if any.  All comments 
    are welcome.
  Also - Markos Katsanos uses the FVE, VFI, Stoch and ADX 
    indicator  to 'strengthen' his system.  I don't believe its really 
    necessary to  include those to find 'flags and pennants'.  You can 
    remove the  sections - "FVE indicator code", "VFI indicator code" and Buy 
     Conditions 6 and 7 and still have a great system (call it 'F&P 
     Lite').  You would then need only 2 mths of data to run the 
    system.   Enough talk - here's the AFL code........  
    
  *****************************************************************
  // 
    Translation of Markos Katsanos Metastock Code for 'Flags and  Pennants' 
    Trading System
  ZZ = Zig(C,17); X = BarsSince(ZZ<Ref(ZZ,-1) AND 
    Ref(ZZ,-1)> Ref(ZZ,-2)); X1 = LastValue(X) + 1; X2 = X1 + 1; SD 
    = StDev(C,X2);
  // FVE indicator code
  PERIOD = 22; COEFF = 
    0.1; intRA = log(H) - log(L); VINTRA = StDev(intRA, PERIOD); intER 
    = log(Avg)-log(Ref(Avg,-1)); VINTER = StDev(intER,PERIOD); CUTOFF = 
    COEFF*(VINTER + VINTRA)*C; MF = C - (H+L)/2 + Avg - Ref(Avg,-1); MFV = 
    IIf(MF>CUTOFF,V,IIf(MF<-CUTOFF,-V,0)); FVE = 
    Sum(MFV,PERIOD)/MA(V,PERIOD)/PERIOD*100;
  // VFI indicator 
    code
  PERIOD1 = 130; COEF = 0.2; VCoef = 2.5; VINTER1 = 
    StDev(intER, 30); Cutoff1 = COEF * VINTER1 * C; VAVE = Ref(MA(V, 
    PERIOD1), -1); VMAX = VAVE * VCoef; Vc = Min (V, VMAX); MF1 = Avg - 
    Ref(Avg, -1); VCP = IIf( MF1 > Cutoff1, Vc, IIf (MF1 < -Cutoff1, 
    -Vc, 0)); VFI = Sum(VCP, PERIOD1)/VAVE; 
  // Buy 
    Conditions
  Buy = X1<21 AND X1>2 AND //CONDITION 
    1 Ref(LinRegSlope(C,13)/Ref(C,-13)*100, -X1)>2.2 //CONDITION 2 AND 
    Ref(LinRegSlope(C,X2)/Ref(C,-X2),-1)*100<.2 AND 
    LinRegSlope(C,X1)/Ref(C,-X1)>-1.2 //CONDITION 3 AND 
    Ref(LinRegSlope(V,X2)/Ref(V,-X2),-1)*100<-2 //CONDITION 4 AND 
    Ref(LinRegSlope(SD,X1),-1)<0 //CONDITION 5 AND StochK(20,3)>55 AND 
    ADX(10)>30 //CONDITION 6 AND FVE>10 AND VFI>-3 //CONDITION 
    7 AND C>Ref(C,-1) AND C>O; //CONDITION 8
  //SELL 
    ORDER
  D1 = ApplyStop(stopTypeNBar,stopModeBars, 24, True); D2 = 
    LastValue (D1); zz = Zig(Ref(C,-D2),17); X = 
    BarsSince(ZZ<Ref(ZZ,-1) AND Ref(ZZ,-1)> Ref(ZZ,-2)); X1 = 
    LastValue(X) + 1; //FLAG DURATION C1 = LLV(C,(D2+40)); //POLE BASE C2 
    = Ref(HHV(C,22),-D2); //POLE TOP
  BREAK1 = 
    ApplyStop(stopTypeNBar,stopModePercent, 45, True);  POLE = 
    (C2-C1)/C1*100; //POLE HEIGHT %
  // EXIT CONDITIONS
  Sell = 
    BREAK1 > 1.94*(POLE^0.724) //EXIT CONDITION 1 PROFIT TARGET OR 
    C<Ref(LLV(C,X1), -D2) //EXIT CONDITION 2 STOP LOSS ON BREAKING OF 
     LOWER FLAG TRENDLINE OR (D2>14 AND BREAK1<.25*POLE) //EXIT 
    CONDITION 3 - INACTIVITY OR (D2>3 AND C<.9*HHV(C,4)) //EXIT 
    CONDITION 4 - TRAILING STOP LOSS OR D2>24; //EXIT CONDITION 5 - TIME 
    EXIT
  **************************************************************** ****************************************************************
  //MARKOS 
    KATSANOS METASTOCK CODE FOR DETECTING BREAKOUTS IN FLAGS 
    AND PENNANTS//
  //Enter Long
  ZZ: = Zig(C,17,%); X: = 
    BarsSince(ZZ<Ref(ZZ,-1) AND Ref(ZZ,-1)> Ref(ZZ,-2)); X1: = 
    LastValue(X) + 1; //FLAG DURATION X2: = X1 + 1; SD: = 
    StDev(C,X2);
  PERIOD: = 22; COEFF: = 0.1; INTRA: = log(H) - 
    log(L); VINTRA: = StDev(INTRA, PERIOD); INTER: = 
    log(Typical())-log(Ref(Typical(),-1)); VINTER: = 
    StDev(INTER,PERIOD); CUTOFF: = COEFF*(VINTER + VINTRA)*C; MF = C - 
    (H+L)/2 + Typical() - Ref(Typical(),-1); FVE = 
    Sum(If(MF>CUTOFF,+V,IF(MF<-CUTOFF,-V,0)),PERIOD)/Mov (V,PERIOD,S)/PERIOD*100;
  X1<21 
    AND X1>2 AND //CONDITION 1 Ref(LinRegSlope(C,13)/Ref(C,-13)*100, 
    -X1)>2.2 //CONDITION 2 AND 
    Ref(LinRegSlope(C,X2)/Ref(C,-X2),-1)*100<.2 AND 
    LinRegSlope(C,X1)/Ref(C,-X1)>-1.2 //CONDITION 3 AND 
    Ref(LinRegSlope(V,X2)/Ref(V,-X2),-1)*100<-2 //CONDITION 4 AND 
    Ref(LinRegSlope(SD,X1),-1)<0 //CONDITION 5 AND Stoch(20,3)>55 AND 
    ADX(10)>30 //CONDITION 6
  AND FVE>10 AND Fml("VFI")>-3 
    //CONDITION 7 //AFL GURUS - CODE FOR VFI IS BELOW
  AND 
    C>Ref(C,-1) AND C>O; //CONDITION 8
  //SELL ORDER
  D1: = 
    Simulation.CurrentPositionAge; D2: = LastValue(D1); zz: = 
    Zig(Ref(C,-D2),17,%); X: = BarsSince(ZZ<Ref(ZZ,-1) AND Ref(ZZ,-1)> 
    Ref(ZZ,-2)); X1: = LastValue(X) + 1; //FLAG DURATION c1: = 
    LLV(C,(D2+40)); //POLE BASE c2: = Ref(HHV(C,22),-D2); //POLE 
    TOP
  BREAK1: = Simulation.CurrentPositionPerformance*100; POLE: = 
    (C2-C1)/C1*100; //POLE HEIGHT %
  //EXIT CONDITIONS
  BREAK1 > 
    1.94*Power(Pole,.724) //EXIT CONDITION 1 PROFIT TARGET - (in article he 
    has profit target as 1.94*pole^0.724)//
  OR C<Ref(LLV(C,X1), -D2) 
    //EXIT CONDITION 2 STOP LOSS ON BREAKING OF LOWER FLAG TRENDLINE OR 
    (D2>14 AND BREAK1<.25*POLE) //EXIT CONDITION 3 - INACTIVITY OR 
    (D2>3 AND C<.9*HHV(C,4)) //EXIT CONDITION 4 - TRAILING STOP LOSS OR 
    D2>24; //EXIT CONDITION 5 - TIME EXIT
  //METASTOCK CODE FOR VFI 
    FORMULA// PERIOD: = Input("PERIOD FOR VFI",5,1300,130); COEF: = 
    .2; VCOEF: = Input("MAX VOLUME CUTOFF",0,50,2.5); INTER: = 
    Log(Typical())-Log(Ref(Typical(),-1)); VINTER: = 
    Stdev(INTER,30); CUTOFF: = COEF*VINTER*C; VAVE: = 
    Ref(Mov(V,PERIOD,S),-1); VMAX: = VAVE*VCOEF; VC: = 
    If(V<VMAX,V,VMAX); MF: = Typical()-Ref(Typical(),-1); VFI: = 
    Sum(If(MF>CUTOFF,+VC,If(MF<-CUTOFF,-VC,0)),PERIOD)/VAVE; Mov(VFI,3,E);
 
 
 
 
 
 
  Please 
    note that this group is for discussion between users only.
  To get 
    support from AmiBroker please send an e-mail directly to  SUPPORT {at} 
    amibroker.com
  For other support material please check also: http://www.amibroker.com/support.html
 
 
 
 
  Please 
    note that this group is for discussion between users only.
  To get 
    support from AmiBroker please send an e-mail directly to  SUPPORT {at} 
    amibroker.com
  For other support material please check also: http://www.amibroker.com/support.html
 
 
 
   
  
Please note that this group is for discussion between users only. 
 
To get support from AmiBroker please send an e-mail directly to  
SUPPORT {at} amibroker.com 
 
For other support material please check also: 
http://www.amibroker.com/support.html 
 
  
 
 
Yahoo! Groups Links 
 |