PureBytes Links
Trading Reference Links
|
Does any one know how to exit from a position partially
after it rises a certain % in relation to the
available portfolio equity?
For example, if I initially start with $50,000,then
open 10 positions each holding $10,000. That is 20% of
the total equity for each position.
Now, I would have a trailing stop to exit say 7%. But
also I would not allow a position to comprise more
than 30% of the total portfolio equity. Once the
position reaches 30% of folio I sell 10% and keep the
value that is equivalent to the original 20%.
So the question is how do I exit partially. It seems
this has to be done within portfolio backtester.
I know the following:
1- total equity:
CurrentPortfolioEquity = bo.Equity;
2- The value of each open position
nInvestedValue = 0;
for(openpos = bo.GetFirstOpenPos(); openpos; openpos =
bo.GetNextOpenPos()) {
nInvestedValue = nInvestedValue +
openpos.GetPositionValue();
nOpenPositions++;
}
Now you there is something similar as shown in the code
bellow. But, this is at the system level and generic
for all positions.
I am not sure we can link this with "bo.Equity".
Can anyone help by pointing me the way.
Thanks,
Rashid
==================
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( exit == 1 AND
High[ i ] >= ( 1 + SecondProfitTarget * 0.01
) * priceatbuy )
{
// second profit target hit - exit
exit = 2;
SellPrice[ i ] = Max( Open[ i ], ( 1 +
SecondProfitTarget * 0.01 ) * priceatbuy );
}
if( Low[ i ] <= ( 1 - TrailingStop * 0.01 ) *
highsincebuy )
{
// trailing stop hit - exit
exit = 3;
SellPrice[ i ] = Min( Open[ i ], ( 1 -
TrailingStop * 0.01 ) * highsincebuy );
}
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 ) ); // scale out 50% of position
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 NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
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/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/amibroker/join
(Yahoo! ID required)
<*> To change settings via email:
mailto:amibroker-digest@xxxxxxxxxxxxxxx
mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx
<*> To unsubscribe from this group, send an email to:
amibroker-unsubscribe@xxxxxxxxxxxxxxx
<*> Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/
|