Ed 
Thanks but the attachments do not show up. Could you try again?
Larry

--- In [email protected], "Edward Pottasch" <empotta...@...> wrote:
>
> attached some code on scaling out. Test code for ES futures. What it does it 
> takes an initial position of 3 contracts when there is a long or short 
> signal. Then there are 3 targets. It will scale out of these 3 positions when 
> the targets are hit. However, if the trailing stop is hit it will sell all 
> positions that are left. Also when the endtime is hit all open positions are 
> closed. So situations may occur that it opens 3 long contracts and only the 
> first target is hit and it scales out of 1 position. 2 positions left and 
> then the endtime is hit and it will sell the remaining 2 contracts.
> 
> see example chart (5 minute timeframe): here you see a full long scale out 
> followed by a full short scale out.
> 
> 
> 
> 
> 
>   ----- Original Message ----- 
>   From: onelkm 
>   To: [email protected] 
>   Sent: Friday, July 03, 2009 6:37 PM
>   Subject: [amibroker] Re: pyramiding - problems with code
> 
> 
> 
> 
> 
> 
>   Could you please post the code that now runs? I am also interested in 
> pyramiding on the short side and would like to see how you programmed it.
>   Thanks
>   Larry
>   --- In [email protected], "Edward Pottasch" <empottasch@> wrote:
>   >
>   > the code is just an example and I believe I used your setup system:
>   > 
>   > Buy = ( Cross( MA( C, 10 ), MA( C, 50 ) ) ) * timearray;
>   > Buy = Ref(Buy,-1); BuyPrice = O;
>   > 
>   > in this case you use the Close price in the Buy statement. In real time 
> systems the Close price is equal to the Last price. So within the timeframe 
> you use (e.g. 1 minute bars) a signal may appear and disappear within the 
> bar. You are only interested in the true close price of that bar. This is 
> known only at the end of the bar. That's why when adding Buy = Ref(Buy,-1); 
> you shift the Buy array 1 element forward and use the signal of the previous 
> bar and you enter at the open. This way you avoid entering a trade of which 
> the signal disappears later in the bar.
>   > 
>   > Another reason is that I myself use it for my real time system is that 
> trading a cross is often not realistic in the practice unless you enter a 
> trade using Market (MKT) orders. For instance if you let the High cross a 
> certain level you avoid getting multiple signals and also the signal will not 
> disappear but often this is exacly the time that the price is running away 
> from you and often you will not be able to enter the trade at the cross 
> price. So I stopped fooling myself with these 20000% per year results and 
> wait for the bar to finish and enter at the open of the next bar.
>   > 
>   > regards, Ed
>   > 
>   > 
>   > 
>   > ----- Original Message ----- 
>   > From: gborrageiro 
>   > To: [email protected] 
>   > Sent: Friday, July 03, 2009 12:31 PM
>   > Subject: [amibroker] Re: pyramiding - problems with code
>   > 
>   > 
>   > 
>   > 
>   > 
>   > hi Edward,
>   > 
>   > Why do you utilize the buy and short price from the previous bar?
>   > Buy = Ref( Buy, -1 );
>   > Short = Ref( Short, -1 );
>   > 
>   > thx
>   > 
>   > --- In [email protected], "Edward Pottasch" <empottasch@> wrote:
>   > >
>   > > do you ever read replies?
>   > > 
>   > > 
>   > > ----- Original Message ----- 
>   > > From: gborrageiro 
>   > > To: [email protected] 
>   > > 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 );
>   > >
>   >
>


Reply via email to