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 [email protected], "Pete" <dryhe...@...> 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 >
