Thanks Ed! I am sure I will learn a lot after studying your code. Thanks for sharing. Best regards Larry
--- In [email protected], "Edward Pottasch" <empotta...@...> wrote: > > hi, > > attached again. Changed little thing with chart. > > should be able to see it at www.yahoo.com groups > > rgds, Ed > > > > ----- Original Message ----- > From: onelkm > To: [email protected] > Sent: Saturday, July 04, 2009 4:19 PM > Subject: [amibroker] Re: pyramiding - problems with code > > > > > > Ed > Thanks but the attachments do not show up. Could you try again? > Larry > > --- In [email protected], "Edward Pottasch" <empottasch@> 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 ); > > > > > > > > > >
