[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[amibroker] Re: Weekly Portfolio Re-Balancing



PureBytes Links

Trading Reference Links

David,

Thanks. I actually figured it out for myself after another hour or so 
of trying out ideas, and reading the User Guide!  This is what I am 
using (last 3 lines of code):

weekend = DayOfWeek()>Ref(DayOfWeek(),1);
RSI2 = Ref(RSIa(C,2),-1);
PositionScore = IIf(weekend,100-RSI2,scoreNoRotate);

I ran this on a fund family in which I have account, and it worked! 
Some funds were held over for 2 weeks (presumably because they ranked 
in the top 2 for 2 weeks in a row), but every switch took place on 
the last day of the week. I also changed your RSI2 line so that the 
switch was based on the RSI score the prior evening; I got much 
better results in Backtest with this version rather than your line of 
RSI2 = RSIa(C,2);

Thank you for your original posting.

Regards,
David


--- In amibroker@xxxxxxxxxxxxxxx, "dweilmuenster95125" 
<dweilmuenster95125@xxxx> wrote:
> Hi, yes, someone tipped me to an approach which goes like this
> (omitting extraneous details):
> 
> EnableRotationalTrading(); 
> 
> weekend = DayOfWeek()>Ref(DayOfWeek(),1);
> 
> PositionScore = IIf(weekend,100-rsi(2),scorenorotate);
> 
> 
> Hope that helps with what you're trying to do.
> 
> 
> Regards,
> David
> 
> 
> 
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "David Nowotnik" <dnowotnik@xxxx> 
wrote:
> > David,
> > 
> > Did you get response to this question, as I would also like to 
> > develop a script which performs rotational trading but is not 
limited 
> > by what EnableRotationalTrading() does and does not appear to 
allow?
> > 
> > I assume that the problem is that there is no option to 
> > AllowSameBarEntry, equivalent to AllowSameBarExit. So an exit 
cannot 
> > trigger the next entry even when Buy is true, but instead, you 
have 
> > to wait for the next bar in which a Buy condition is met.
> > 
> > I tried many variations to your script (I'm sure you did too), to 
no 
> > avail. The closest was to delay the buy to the first day of the 
week 
> > following the sale:
> > 
> > weekend = DayOfWeek()>Ref(DayOfWeek(),1);
> > FirstDay = DayOfWeek()==1;
> > 
> > RSI2 = RSIa(C,2);
> > PositionScore = 100-RSI2;
> > 
> > Buy = FirstDay;
> > Sell = weekend;
> > 
> > Regards,
> > David
> > 
> > --- In amibroker@xxxxxxxxxxxxxxx, "dweilmuenster95125" 
> > <dweilmuenster95125@xxxx> wrote:
> > > 
> > > I am trying to set up a portfolio backtest to:
> > > 
> > > -  Buy on the last trading day of each week the top 2 equities 
in a
> > > watchlist, ranked by 100-RSI(2).
> > > 
> > > -  Sell those 2 equities on the last trading day of the next 
week, 
> > and
> > > replace them with 2 equities that satisfy the above rule.
> > > 
> > > (Note:  EnableRotationalTrading() doesn't do the trick, because
> > > I want to exit unconditionally at the end of the following 
week, not
> > > because the current positions fall below a positionrank 
threshhold.)
> > > 
> > > I'm using the code below, and it almost works.  Problem is that 
it
> > > skips every other week.  E.g., starting at the beginning of 
2002, it
> > > buys two stocks on 1/4/2002, and sells them on 1/11/2002.  But 
it
> > > doesn't buy anything on 1/11/2002.  Instead, it buys 2 stocks 
again 
> > on
> > > 1/18/2002, and sells them on 1/25/2002.  Doesn't buy anything on
> > > 1/25/2002.  But, it buys 2 stocks on 2/1/2002, and sells them on
> > > 2/8/2002.  Etc.
> > > 
> > > Suggestions?
> > > 
> > > Thanks,
> > > David
> > > 
> > > -------------------------------------------------------------
> > > 
> > > 
> > > SetOption("InitialEquity",100000);                  
> > > SetOption("CommissionMode",1);             
> > > SetOption("CommissionAmount",0);
> > > SetOption("MaxOpenPositions",2);               
> > > SetOption("MarginRequirement",100);                  
> > > SetOption("UsePrevBarEquityForPosSizing",False);
> > > SetOption("AllowPositionShrinking" , True);  
> > > SetOption("AllowSameBarExit",False);
> > > SetTradeDelays(0,0,0,0);                            
> > > BuyPrice = C;
> > > SellPrice = C;
> > > SetPositionSize(50,spsPercentOfEquity);
> > > RoundLotSize = 10;
> > > 
> > > weekend = DayOfWeek()>Ref(DayOfWeek(),1);
> > > 
> > > RSI2 = RSIa(C,2);
> > > PositionScore = 100-RSI2;
> > > 
> > > 
> > > Buy = weekend;
> > > Sell = weekend;




Please note that this group is for discussion between users only.

To get support from AmiBroker please send an e-mail directly to 
SUPPORT {at} amibroker.com

For other support material please check also:
http://www.amibroker.com/support.html

 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/