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

Re: [amibroker] pyramiding - problems with code



PureBytes Links

Trading Reference Links



do you ever read replies?
 
 
----- Original Message -----
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 );



__._,_.___


**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

TO GET TECHNICAL SUPPORT send an e-mail directly to
SUPPORT {at} amibroker.com

TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)

For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/





Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___