Thanks - Will do.  Hopefully, there's an answer out there.  Selling all at once 
cuts down on my expected returns.

--- In [email protected], "Mike" <sfclimb...@...> wrote:
>
> Play around a little and see what happens. The sell all behavior might have 
> been just when having used sigScaleIn, or it might apply for all conditions. 
> I haven't checked.
> 
> If it is the case, then sigScaleOut would likely be easier than custom 
> backtesting. Keep your fingers crossed, and someone else may jump in with a 
> simpler 3rd option :)
> 
> If you want to search the forum, look for posts regarding multiple strategies 
> from Howard Bandy. There have been a few threads in the not too distant past 
> in which Howard participated. I don't recall the outcome and am not free to 
> try and pinpoint the threads right now.
> 
> Mike
> 
> --- In [email protected], "graphman27" <steve@> wrote:
> >
> > Thanks as always - Although the solutions offered are a bit over my my 
> > limited programming abilities.  I'll tinker around with that and see if I 
> > can use it for a fix.  Otherwise, I may have to come up with a workaround 
> > or change the actual symbols being used.
> > 
> > Thanks again though - You're a walking Amibroker encyclopedia!
> > 
> > --- In [email protected], "Mike" <sfclimbers@> wrote:
> > >
> > > Ha ha,
> > > 
> > > I was waiting for that one.
> > > 
> > > Unfortunately, it's not that easy. I seem to recall that AmiBroker will 
> > > consider the multiple entries as a single positions, as far as Sell is 
> > > concerned, and will thus exit your entire position upon any Sell signal.
> > > 
> > > However, if my suspicion proves to be correct, two possible solutions 
> > > come to mind:
> > > 
> > > 1. Use sigScaleOut to partially exit.
> > > http://www.amibroker.com/guide/h_pyramid.html
> > > 
> > > 2. Write custom backtester code to control the exits.
> > > http://www.amibroker.org/userkb/2008/03/16/amibroker-custom-backtester-interface-2/
> > > 
> > > Mike 
> > > 
> > > --- In [email protected], "graphman27" <steve@> wrote:
> > > >
> > > > As I said previously, the buys are all working correctly, but all the 
> > > > sells are triggered simultaneously on the same day, which can't be 
> > > > right.  I must be missing something, but I'm close....
> > > > 
> > > > Strategy1_Buy = Buy = Cross(StochFinal,Trigger) AND (EMA( 
> > > > Close,EMAShort ) > EMA( Close,EMALong ));
> > > > 
> > > > Strategy1_Sell = Sell = Cross(Trigger,StochFinal) AND (EMA( 
> > > > Close,EMAShort ) < EMA( Close,EMALong ));
> > > > ........
> > > > 
> > > > Strategy2_Buy = Buy =   Cross(MA( Close,MAShortBuy ),MA( 
> > > > Close,MALongBuy ));
> > > > 
> > > > Strategy2_Sell = Sell = Cross(MA( Close,MALongSell ),MA( 
> > > > Close,MAshortSell ));
> > > > .......
> > > > 
> > > > Strategy3_Buy = Buy = Cross(fast,slow);
> > > > Strategy3_Sell = Sell = Cross(slow,fast) OR slow == fast;
> > > > ........
> > > > 
> > > > {
> > > > Buy = Strategy1_Buy OR Strategy2_Buy OR Strategy3_Buy;
> > > > Sell = Strategy1_Sell OR Strategy2_Sell OR Strategy3_Sell;
> > > > }
> > > > 
> > > > How can I be sure the trades are matched up properly, i.e. 
> > > > strategy1_Buys with strategy1_sells?
> > > > 
> > > > Steve.
> > > > 
> > > > --- In [email protected], "Mike" <sfclimbers@> wrote:
> > > > >
> > > > > Hi,
> > > > > You're problem is that you are doing exactly what I said not to do. 
> > > > > You
> > > > > must alter your code to produce an intermediate result for each case,
> > > > > then OR the results togeather.
> > > > > if ( n == "S&PEmrgMkts" ) {  ...  Strategy1_Buy = ...}
> > > > > if ( n == "S&PEmrgMkts" ) {  ...  Strategy2_Buy = ...}
> > > > > if ( n == "S&PEmrgMkts" ) {  ...  Strategy3_Buy = ...}
> > > > > if ( n == "S&PEmrgMkts" ) {  ...  Buy = Strategy1_Buy OR Strategy2_Buy
> > > > > OR Strategy3_Buy;}
> > > > > Alternatively, you could use the "|=" operator to OR the Buy with 
> > > > > itself
> > > > > and remove the final "if" case. But, if you are not familiar with the
> > > > > operator, it might just confuse you.
> > > > > 
> > > > > Buy = 0;
> > > > > if ( n == "S&PEmrgMkts" ) {  ...  Buy |= Cross(StochFinal,Trigger) AND
> > > > > (EMA( Close,EMAShort ) > EMA( Close,EMALong ));}
> > > > > if ( n == "S&PEmrgMkts" ) {  ...  Buy |=  Cross(MA( Close,MAShortBuy
> > > > > ),MA( Close,MALongBuy ));}
> > > > > if ( n == "S&PEmrgMkts" ) {  ...  Buy |=  Cross(fast,slow);}
> > > > > Mike
> > > > > --- In [email protected], "graphman27" <steve@> wrote:
> > > > > >
> > > > > > Here's is most of the code in question...
> > > > > >
> > > > > > SetBacktestMode( backtestRegularRawMulti );
> > > > > >
> > > > > > SetOption("MaxOpenPositions", 3 ); // This sets maximum number of 
> > > > > > open
> > > > > positions
> > > > > >
> > > > > > //PosQty = 3; // You can define here how many open positions you 
> > > > > > want
> > > > > > //SetOption("MaxOpenPositions", PosQty );
> > > > > > //PositionSize = -100/PosQty; // invest 100% of portfolio equity
> > > > > divided by max. position count
> > > > > >
> > > > > > //definition of variables for the symbols not included below
> > > > > > Buy = Sell = 0;
> > > > > > //symbol-specific rules
> > > > > > n = Name();
> > > > > > if( n == "S&PEmrgMkts" )
> > > > > > {
> > > > > >     //strategy 1 for Emrg Mkts here
> > > > > > EMAShort = Optimize("EMAShort", 2,2,8,2);
> > > > > > EMALong = Optimize("EMALong", 10,10,60,5);
> > > > > > Period = Optimize ("Period", 45,10,50,5);
> > > > > > Trigger = 50;
> > > > > >
> > > > > > StochTop = (Close-(LLV(Close,Period)));
> > > > > > StochBottom = (HHV(Close,Period)-LLV(Close,Period));
> > > > > > StochFinal = (StochTop / StochBottom)*100;
> > > > > >
> > > > > > Buy = Cross(StochFinal,Trigger) AND (EMA( Close,EMAShort ) > EMA(
> > > > > Close,EMALong ));
> > > > > >
> > > > > > Sell = Cross(Trigger,StochFinal) AND (EMA( Close,EMAShort ) < EMA(
> > > > > Close,EMALong ));
> > > > > > ..................
> > > > > >
> > > > > >  PositionSize = -33;
> > > > > > }
> > > > > >
> > > > > > if( n == "S&PEmrgMkts" )
> > > > > > {
> > > > > >     //strategy 2 for Emrg Mkts here
> > > > > > MAShortBuy=Optimize("MAShortBuy",8,7,12,1);
> > > > > > MALongBuy=Optimize("MALongBuy",60,20,100,10);
> > > > > > MAShortSell=Optimize("MAShortSell",8,2,8,1);
> > > > > > MALongSell=Optimize("MALongSell",40,10,80,10);
> > > > > >
> > > > > >
> > > > > > Buy =  Cross(MA( Close,MAShortBuy ),MA( Close,MALongBuy ));
> > > > > >
> > > > > > Sell = Cross(MA( Close,MALongSell ),MA( Close,MAshortSell ));
> > > > > >
> > > > > >
> > > > > > Short = 0;
> > > > > >
> > > > > > Cover = 0;
> > > > > >
> > > > > > Plot( MA ( Close,8 ),"MAShortBuy", colorGreen, styleThick );
> > > > > > Plot( MA ( Close,60 ),"MALongBuy", colorRed, styleThick );
> > > > > > Plot( MA ( Close,8 ),"MAShortSell", colorBlue, styleThick );
> > > > > > Plot( MA ( Close,40 ),"MALongSell", colorLightBlue, styleThick );
> > > > > > ............................
> > > > > >
> > > > > >     PositionSize = -33;
> > > > > > }
> > > > > >
> > > > > > if( n == "S&PEmrgMkts" )
> > > > > > {
> > > > > >     //strategy 3 for Emrg Mkts here
> > > > > > smooth = Optimize("smooth",40,10,65,5);
> > > > > > Lag = Optimize("lag",10,2,10,1);
> > > > > > fast = DEMA(C,smooth);
> > > > > > slow = Ref(EMA(C,smooth),-Lag);
> > > > > > Buy = Cross(fast,slow);
> > > > > > Sell = Cross(slow,fast) OR slow == fast;
> > > > > > ......................
> > > > > >  PositionSize = -33;
> > > > > >
> > > > > > Maybe you can tell what I'm doing wrong.  I can't get more than one
> > > > > buy at a time.  Separately, each section of code works fine in
> > > > > individual backtests.
> > > > > >
> > > > > > Thanks in advance!
> > > > > >
> > > > > > Steve.
> > > > > >
> > > > > >
> > > > > > --- In [email protected], "Mike" sfclimbers@ wrote:
> > > > > > >
> > > > > > > Without a code sample, it's hard to understand what you are 
> > > > > > > saying.
> > > > > But, bottom line is that you must have a single Buy statement which
> > > > > includes all the logic of all the formulas.
> > > > > > >
> > > > > > > e.g.
> > > > > > > Strategy1_Buy = ...
> > > > > > > Strategy2_Buy = ...
> > > > > > >
> > > > > > > Buy = Strategy1_Buy OR Strategy2_Buy; // Correct
> > > > > > >
> > > > > > > You cannot have multiple Buy statements, if that is what you are
> > > > > doing.
> > > > > > >
> > > > > > > e.g.
> > > > > > > Buy = ...
> > > > > > > Buy = ... // Wrong
> > > > > > >
> > > > > > > When using multiple Buy assignments, you are clobbering whatever 
> > > > > > > Buy
> > > > > used to hold and the last assignment will be the *only* logic that is
> > > > > applied.
> > > > > > >
> > > > > > > Mike
> > > > > > >
> > > > > > > --- In [email protected], "graphman27" <steve@> wrote:
> > > > > > > >
> > > > > > > > I downloaded 5.30 and still can't get it to work.  What I do see
> > > > > is mutiple positions for one symbol IF there is only one signal 
> > > > > formula
> > > > > for a symbol.  I have three separate formulas for one symbol, which
> > > > > doesn't seem to work with BacktestRegularRawMulti.  I scanned through
> > > > > the detailed log and saw multiple positions for the single formula and
> > > > > never more than one for the multiple formulas.  Also, it was always
> > > > > using the second formula.  I have position shrinking turned on too.
> > > > > > > >
> > > > > > > > Here is what I'm saying about formulas:
> > > > > > > >
> > > > > > > > Symbol #1 has three separate formulas for buy and sells.
> > > > > > > > Symbol #2 has one formula.
> > > > > > > > Symbol #3 has one formula.
> > > > > > > > Symbol #4 has one formula.
> > > > > > > >
> > > > > > > > Thanks.
> > > > > > > >
> > > > > > > > --- In [email protected], "Mike" <sfclimbers@> wrote:
> > > > > > > > >
> > > > > > > > > Hi,
> > > > > > > > > It's working fine for me (version 5.30 trial). Note that you 
> > > > > > > > > may
> > > > > need to
> > > > > > > > > allow position size shrinking for all trades to fire. Use the
> > > > > detailed
> > > > > > > > > log option from AA Settings Report tab to see what's going on.
> > > > > > > > > SetBacktestMode(backtestRegularRawMulti);
> > > > > > > > >
> > > > > > > > > PositionSize = -33;
> > > > > > > > > Dates = DateTime();
> > > > > > > > > Buy = Dates == StrToDateTime("2010-Jan-05") || Dates ==
> > > > > > > > > StrToDateTime("2010-Jan-11") || Dates ==
> > > > > StrToDateTime("2010-Jan-07");
> > > > > > > > > Sell =  DateTime() == StrToDateTime("2010-Jan-15");
> > > > > > > > > Mike
> > > > > > > > > --- In [email protected], "graphman27" <steve@> wrote:
> > > > > > > > > >
> > > > > > > > > > I developed different signals for the same symbol and want 
> > > > > > > > > > all
> > > > > signals
> > > > > > > > > to work individually within the portfolio backtester.  It 
> > > > > > > > > ain't
> > > > > workin'!
> > > > > > > > > I tried adding "SetBacktestMode (backtestRegularRawMulti);" to
> > > > > the
> > > > > > > > > beginning of my code, to no avail.  I have the position size 
> > > > > > > > > set
> > > > > up for
> > > > > > > > > -33 and three separate signals.  It only seems to be pulling 
> > > > > > > > > one
> > > > > signal,
> > > > > > > > > because the number of trades and the CAR should be 3Xs higher
> > > > > than it
> > > > > > > > > is.
> > > > > > > > > >
> > > > > > > > > > Help!
> > > > > > > > > >
> > > > > > > > > > Thanks,
> > > > > > > > > >
> > > > > > > > > > Steve.
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>


Reply via email to