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