I tried to solve the same problem few weeks ago. But I failed as well. EasyLanguage code is quite simple. Just define exit1 and exit2. Within amibroker I was not able to get similar results. If somebody have the code for:
Entry: 10 at price1 Exit1: 5 at price 2 Exit2: 5 at price 3 OR Exit: 10 at Stop price4 thanks --- 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 >
