do you ever read replies?

  ----- Original Message ----- 
  From: gborrageiro 
  To: [email protected] 
  Sent: Thursday, June 25, 2009 6:36 PM
  Subject: [amibroker] pyramiding - problems with code





  hi,

  I am testing some scaling out strategies and can't get the backtester to go 
short. There's a prob with my code somewhere but I just can't see where. 

  Your help would be appreciated! thanks

  SetTradeDelays( 0, 0, 0, 0 );
  BuyPrice = Avg;
  ShortPrice = Avg;
  SetOption( "FuturesMode", True );
  SetOption( "InitialEquity", 100000 );

  fast = ema(avg,10);
  slow = ema(avg,100);

  Buy = Cross( fast, slow ) ;
  Short = Cross( slow, fast ) ;
  Sell = 0;
  Cover = 0;

  FirstProfitTarget = 0.02; 
  TrailingStop = 0.06; 
  StopLoss = 0.02;

  priceatbuy = 0;
  highsincebuy = 0;
  priceatshort = 0;
  lowsinceshort = 0;

  exit = 0;

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

  if ( priceatshort == 0 AND Short[ i ] )
  {
  priceatshort = ShortPrice[ 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( Avg[ i ], ( 1 - TrailingStop * 0.01 ) * highsincebuy );
  }

  if ( Low[ i ] <= ( 1 - StopLoss * 0.01 ) * priceatbuy )
  {
  // Stop Loss hit - exit
  exit = 3;
  SellPrice[ i ] = Min( Avg[ i ], ( 1 - StopLoss * 0.01 ) * priceatbuy );
  }

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

  if ( priceatshort > 0 )
  {
  lowsinceshort = Min( Low[ i ], lowsinceshort );

  if ( exit == 0 AND
  Low[ i ] <= ( 1 - FirstProfitTarget * 0.01 ) * priceatshort )
  {
  // first profit target hit - scale-out
  exit = 1;
  Short[ i ] = sigScaleOut;

  }

  if ( High[ i ] >= ( 1 + TrailingStop * 0.01 ) * lowsinceshort )
  {
  // trailing stop hit - exit
  exit = 2;
  CoverPrice[ i ] = Max( Avg[ i ], ( 1 + TrailingStop * 0.01 ) * lowsinceshort 
);
  }

  if ( High[ i ] >= ( 1 + StopLoss * 0.01 ) * priceatshort )
  {
  // Stop Loss hit - exit
  exit = 3;
  CoverPrice[ i ] = Max( Avg[ i ], ( 1 + StopLoss * 0.01 ) * priceatshort );
  }

  if ( exit >= 2 )
  {
  Short[ i ] = 0;
  Cover[ i ] = exit + 1; // mark appropriate exit code
  exit = 0;
  priceatshort = 0; // reset price
  lowsinceshort = 0;
  }
  }
  }

  SetPositionSize( 2, spsShares );

  SetPositionSize( 50, spsPercentOfPosition * ( Buy == sigScaleOut ) ); // 
scale out 50% of position
  //SetPositionSize( 50, spsPercentOfEquity );



  

Reply via email to