PureBytes Links
Trading Reference Links
|
This is what was posted a while back regarding scaling out; hope
it helps
Larry
Re: [amibroker] Re: Scaling out example code does NOT work
Re: Scaling out example code does NOT work
Hi Howard,
Thanks for the reply. I have recently learned from Tomasz that trade
delays must
be all set to
ZERO in order for the scaling code to work. while it does NOT make
intuitive
sense why trade
delays should affect scaling, it works Now.
The values calculated for scaling conditions are probably based on the
initial & subsequent trade prices with a zero bar trade delay.
if your delay is one bar then you must change the code to accommodate
the altered trade prices to one bar after the Signal.
--- In amibroker@xxxxxxxxxxxxxxx, "Pete" <dryheat3@xxx> wrote:
>
> I give up. I tried for a couple hours to get the example in the help
> file of the scale out code to work for futures. I'm just not
getting it.
> I need a section of code to define the scale out strategy based not
on
> percent of position size but rather on points. For instance, I would
> like to scale out of a futures position after profit reaches 1 point
> and scale out further when profit reaches 3 points, allowing the 3rd
> and final contract to run out until the sell signal is triggered. I
> sure hope there is some code out there that does this.
>
> The example from the help file:
>
> Buy = Cross( MA( C, 10 ), MA( C, 50 ) );
> Sell = 0;
>
> // the system will exit
> // 50% of position if FIRST PROFIT TARGET stop is hit
> // 50% of position is SECOND PROFIT TARGET stop is hit
> // 100% of position if TRAILING STOP is hit
>
> FirstProfitTarget = 10; // profit
> SecondProfitTarget = 20; // in percent
> TrailingStop = 10; // also in percent
>
> 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( 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
>
------------------------------------
**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
*********************
TO GET TECHNICAL 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/
|