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" <empotta...@...> 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