Hi all,

I am still working on my looping skills and just when I thought I 
had it down,I run into a brick AFL looping wall...here is the code I 
worked with from the users manual for the stock  NUHC,backtested 
from 6/20/06-8/25

---------------------------------------------------------------------
Buytemp = Cross(C, MA( C,21) ); 
Selltemp = Cross(MA(C,200),C);
 
 
Buy=Buytemp;
Sell=Selltemp;
//Buy=ExRem(Buy,Sell); // my code change
//Sell=ExRem(Sell,Buy);// my code change

Filter=1; //exploration

AddColumn(BuyTemp,"All Buy Signals");//exploration

AddColumn(Buy,"BUY SIGNAL");//exploration

AddColumn(SellTemp,"All Sell Signals");//exploration

AddColumn(Sell,"SELL SIGNAL");//exploration


FirstProfitTarget = 50; // profit ..purposely left high
TrailingStop = 34; // also in percent 
Maxstop=9;//also in percent

//FirstProfitTarget = Optimize("FirstProfitTarget",15,5, 50,5); 
//TrailingStop = Optimize("TrailingStop",34,5,25,1); 
//Maxstop = Optimize("maxstop",8,2,15,1); 
 
priceatbuy=0;
highsincebuy = 0;

exit = 0; 

for( i = 0; i < BarCount; i++ ) 
{ 
   if( priceatbuy == 0 AND Buy[ i ] ) 
    { 
       priceatbuy = BuyPrice[ i ]; 
    } 

   if( priceatbuy > 0 ) 
    { 
       highsincebuy = Max( High[ i ], highsincebuy ); 
       

       

      if( exit == 0 AND 
         High[ i ] >= ( 1 + FirstProfitTarget * 0.01 ) * 
priceatbuy ) 
       { 
         //first profit target hit - scale-out 
       exit = 1; 
         Buy[ i ] = sigScaleOut; 
       } 

      if(Low[ i ] <= ( 1 - TrailingStop * 0.01 ) * highsincebuy ) 
      
      
       {

        
         // trailing stop hit - exit  
         exit = 2;    
         SellPrice[ i ] = Min( Open[ i ], ( 1 - TrailingStop * 
0.01 ) * highsincebuy ); 
       } 

     if (Low[i]<=(1-Maxstop*.01)*priceatbuy)
        {
        exit = 3;
         SellPrice[i]=Min(Open[i],(1-Maxstop*.01)*priceatbuy);
         //My attempt to code in a Max stop loss-appears to work as 
coded
       }

      if( exit >= 2 ) 
       { 
         Buy[ i ] = 0; 
         Sell[ i ] = exit + 1; // mark appropriate exit code 
         exit = 0; 
         priceatbuy = 0; // reset price 
         highsincebuy = 0;
          
       } 
    } 
  }

SetPositionSize( 50, spsPercentOfEquity ); 

SetPositionSize( 50, spsPercentOfPosition * ( Buy == 
sigScaleOut ) ); 
-------------------------------------------------------------------

On 6/20/06,  NUHC crossed above its 21 day moving average.When I  
code a  simple formula in AFL
Buy=Cross(C, MA( C,21) ); 
Everything works as expected.I can set the BuyPrice and delay in 
settings and entrydate may change,but it still signals a BUY.This 
holds true regardless of any stops I apply...
 
Here is the problem.
If I run the above looping code example and set the BuyPrice to 
Close, Delays to 0 ,trailing stop of 35 or higher OR maxstop 10 or 
greater,everything tests as expected.I get the buy signal,and the 
arrows for raw signals and trades are as expected..The important 
thing is I am using a trailing stop of 35 or greater OR a maxstop of 
10 or greater..I do verify the signals in explorer as well.
 
If I should keep those exact same settings,but change the Trailing 
stop to 34(from 35),or max stop to 9 or less,the 6/20 MA21 is 
ignored and the system doesnt show a buy till 8/09.Not only that,but 
when I look at the raw arrows the Buy arrow that I had on 6/20 is 
now a SELL arrow.If I look at the arrow for actual trades,there are 
no arrows.What is more interesting is that if I run EXPLORE,All Buy 
Signals and Buy signals show a 1 for 6/20/2006,yet I am getting a 
sell arrow on 6/20/2006 for raw signals.Is there something unusual 
about raw signals that would cause a buy arrow to become a sell 
arrow??What could I be missing??

Am I correct that if i dont use Exrem,the first all signals will 
fire as soon as they occur??

I have to assume it must be something in the stop levels,but i can 
not verify it.I dont understand how a clear buy signal would be 
ignored and show up with a sell arrow for raw signals..Can anyone 
please assist me on this??

Thanks in advance

Allan
 

 

 







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

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 



Reply via email to