PureBytes Links
Trading Reference Links
|
The Ref(Day(),1) is referencing the day after because the month-end
is the only time that Day() declines in value.
Although some might considered this to be a "future leak" I don't
think it is because it is a simple calendar function that is known by
all. If it were looking a day ahead a prices, that would be a
different story.
I forgot to mention, that because of this calendar look-ahead
function, this solution might only work when backtesting. I haven't
checked, but it might work for a live system if you have "future bar"
enabled.
I never considered it a problem, because when "live" I know when it
is the last day of the week or month or quarter or whatever.
--- In amibroker@xxxxxxxxxxxxxxx, "droskill" <droskill@xxx> wrote:
>
> Ron - thanks - that's much simpler - appreciate your help.
>
> Question - the Ref(Day(),1) portion of the IIF - is that referencing
> the day before or the day after?
>
> --- In amibroker@xxxxxxxxxxxxxxx, "Ron Rowland" <rowland@> wrote:
> >
> > I'm sorry I didn't see this thread earlier. I have a simple two
line
> > approach to this problem:
> >
> > LastDayOfMonth = IIf(Day() > Ref(Day(),1),1,0);
> > PositionScore = IIf(LastDayOfMonth, PositionScore, scoreNoRotate);
> >
> > I also have trade delays set for one day. Using the above then
> > allows all securities to be analyzed with daily data on the last
day
> > of the month with the trade taking place on the first day of the
> > following month.
> >
> > --- In amibroker@xxxxxxxxxxxxxxx, "droskill" <droskill@> wrote:
> > >
> > > In the interest of the group which has been so helpful, I'm
posting
> > > the code change that worked - that makes the rotation happen
only on
> > > the first trading day of the month - comments/critique welcome.
> > >
> > > EnableRotationalTrading();
> > > EachPosPercent = 25;
> > >
> > > PositionScore = 1000 + ROC (C, 20);
> > >
> > > PositionSize = -EachPosPercent;
> > >
> > > SetOption("WorstRankHeld", 4 );
> > > SetOption("MaxOpenPositions", 4 );
> > > SetOption("UseCustomBacktestProc", True );
> > >
> > > if( Status("action") == actionPortfolio )
> > > {
> > > bo = GetBacktesterObject();
> > >
> > > bo.PreProcess(); // Initialize backtester
> > >
> > > mo = Month();
> > > dy = Day();
> > > monthchange = mo != Ref( mo, -1 );
> > >
> > > for(bar=0; bar < BarCount; bar++)
> > > {
> > >
> > > if ( monthchange[ bar ] AND dy[ bar ] < 3 )
> > > {
> > > bo.ProcessTradeSignals( bar );
> > > }
> > > if( monthchange[ bar ] AND dy[ bar ] < 3 )
> > > {
> > > CurEquity = bo.Equity;
> > >
> > > for( pos = bo.GetFirstOpenPos(); pos; pos =
> > bo.GetNextOpenPos() )
> > > {
> > > posval = pos.GetPositionValue();
> > >
> > > diff = posval - 0.01 * EachPosPercent *
> > CurEquity;
> > > price = pos.GetPrice( bar, "O" );
> > >
> > > // rebalance only if difference between desired and
> > > // current position value is greater than 0.5% of equity
> > > // and greater than price of single share
> > > if( diff != 0 AND
> > > abs( diff ) > 0.005 * CurEquity AND
> > > abs( diff ) > price )
> > > {
> > > bo.ScaleTrade( bar, pos.Symbol, diff < 0,
> > price, abs( diff ) );
> > > }
> > > }
> > > }
> > > }
> > > bo.PostProcess(); // Finalize backtester
> > > }}
> > >
> > > --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@>
wrote:
> > > >
> > > > Hello,
> > > >
> > > > Taking the example and modifying it to fit your requirements
is
> > just
> > > a matter
> > > > of minutes ! Don't be lazy.
> > > >
> > > > EnableRotationalTrading();
> > > > EachPosPercent = 5;
> > > >
> > > > PositionScore = ROC( C, 20 );
> > > >
> > > > PositionSize = -EachPosPercent;
> > > >
> > > > SetOption("WorstRankHeld", 40 );
> > > > SetOption("MaxOpenPositions", 20 );
> > > >
> > > > SetOption("UseCustomBacktestProc", True );
> > > >
> > > > if( Status("action") == actionPortfolio )
> > > > {
> > > > bo = GetBacktesterObject();
> > > >
> > > > bo.PreProcess(); // Initialize backtester
> > > >
> > > > mo = Month();
> > > >
> > > > monthchange = mo != Ref( mo, -1 );
> > > >
> > > >
> > > > for(bar=0; bar < BarCount; bar++)
> > > > {
> > > > bo.ProcessTradeSignals( bar );
> > > >
> > > >
> > > > if( monthchange[ bar ] )
> > > > {
> > > > CurEquity = bo.Equity;
> > > >
> > > > for( pos = bo.GetFirstOpenPos(); pos; pos =
bo.GetNextOpenPos
> > () )
> > > > {
> > > > posval = pos.GetPositionValue();
> > > >
> > > > diff = posval - 0.01 * EachPosPercent * CurEquity;
> > > > price = pos.GetPrice( bar, "O" );
> > > >
> > > > // rebalance only if difference between desired and
> > > > // current position value is greater than 0.5% of equity
> > > > // and greater than price of single share
> > > > if( diff != 0 AND
> > > > abs( diff ) > 0.005 * CurEquity AND
> > > > abs( diff ) > price )
> > > > {
> > > > bo.ScaleTrade( bar, pos.Symbol, diff < 0, price, abs(
> > diff ) );
> > > > }
> > > > }
> > > >
> > > > }
> > > > }
> > > > bo.PostProcess(); // Finalize backtester
> > > > }
> > > >
> > > >
> > > > Best regards,
> > > > Tomasz Janeczko
> > > > amibroker.com
> > > > ----- Original Message -----
> > > > From: "droskill" <droskill@>
> > > > To: <amibroker@xxxxxxxxxxxxxxx>
> > > > Sent: Saturday, March 15, 2008 10:34 PM
> > > > Subject: [amibroker] Re: Portfolio rotation
> > > >
> > > >
> > > > > This example shows rebalancing to a fixed % at any time -
is
> > there an
> > > > > example that shows rebalancing on a specific day - I'm
trying to
> > > > > rebalance on a first trading day of the week or month.
> > > > >
> > > > > Any help greatly appreciated Tomasz!
> > > > >
> > > > > --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko"
<groups@>
> > wrote:
> > > > >>
> > > > >> Yes you can and there is an example code posted:
> > > > >> http://www.amibroker.com/kb/2006/03/06/re-balancing-open-
> > positions/
> > > > >>
> > > > >>
> > > > >> Best regards,
> > > > >> Tomasz Janeczko
> > > > >> amibroker.com
> > > > >> ----- Original Message -----
> > > > >> From: "droskill" <droskill@>
> > > > >> To: <amibroker@xxxxxxxxxxxxxxx>
> > > > >> Sent: Saturday, March 15, 2008 5:34 PM
> > > > >> Subject: [amibroker] Portfolio rotation
> > > > >>
> > > > >>
> > > > >> > Hey all - I've been looking at the automatic portfolio
> > rotation
> > > > >> > feature of AB, and I had a question - if I want to
control
> > the time
> > > > >> > element of the rotation, would I have to use the regular
> > > backtester?
> > > > >> >
> > > > >> > In other words, let's imagine that instead of rebalancing
> > > "on-demand"
> > > > >> > - let's imagine that I want to only rebalance once per
week
> > or once
> > > > >> > per month - can I do this with the rotational portfolio?
> > > > >> >
> > > > >> > Thanks!
> > > > >> >
> > > > >> >
> > > > >> >
> > > > >
> > >
> >
======================================================================
> > ==
> > > > >> > Groups related to amibroker
> > > > >> >
> > > > >
> > >
> >
======================================================================
> > ==
> > > > >> >
> > > > >> > equismetastock (734 common members)
> > > > >> >
> > > > >
> > > http://groups.yahoo.com/group/equismetastock?
> > v=1&t=ipt&ch=email&pub=groups&slk=aftr0&sec=recg
> > > > >
> > > > >> > Investments/General: Established January 15, 1999 this
site
> > is
> > > > > open to ...
> > > > >> >
> > > > >> > TWSAPI (656 common members)
> > > > >> >
> > > > >
> > > http://groups.yahoo.com/group/TWSAPI?
> > v=1&t=ipt&ch=email&pub=groups&slk=aftr1&sec=recg
> > > > >
> > > > >> > Investments/Software: Not affiliated with Interactive
Brokers
> > > > > Interactiv...
> > > > >> >
> > > > >> > bse-nse2005 (485 common members)
> > > > >> >
> > > > >
> > > http://groups.yahoo.com/group/bse-nse2005?
> > v=1&t=ipt&ch=email&pub=groups&slk=aftr2&sec=recg
> > > > >
> > > > >> > Investments/Online Investing and Trading: We now have
our
> > very own
> > > > > website - www.desitraderm...
> > > > >> >
> > > > >> > e-mini_traders_anon (364 common members)
> > > > >> >
> > > > >
> > > http://groups.yahoo.com/group/e-mini_traders_anon?
> > v=1&t=ipt&ch=email&pub=groups&slk=aftr3&sec=recg
> > > > >
> > > > >> > Investments/Daytrading: The spirit of this group is
traders
> > > > > helping trader...
> > > > >> >
> > > > >> > quotes-plus (334 common members)
> > > > >> >
> > > > >
> > > http://groups.yahoo.com/group/quotes-plus?
> > v=1&t=ipt&ch=email&pub=groups&slk=aftr4&sec=recg
> > > > >
> > > > >> > Investments/Software: This group is for Quotes Plus
> > customers.
> > > > > Others ar...
> > > > >> >
> > > > >> >
> > > > >> > ------------------------------------
> > > > >> >
> > > > >> > 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 NEW RELEASE ANNOUNCEMENTS and other news always
check
> > DEVLOG:
> > > > >> > http://www.amibroker.com/devlog/
> > > > >> >
> > > > >> > For other support material please check also:
> > > > >> > http://www.amibroker.com/support.html
> > > > >> > Yahoo! Groups Links
> > > > >> >
> > > > >> >
> > > > >> >
> > > > >>
> > > > >
> > > > >
> > > > >
> > > > > ------------------------------------
> > > > >
> > > > > 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 NEW RELEASE ANNOUNCEMENTS and other news always check
> > DEVLOG:
> > > > > http://www.amibroker.com/devlog/
> > > > >
> > > > > For other support material please check also:
> > > > > http://www.amibroker.com/support.html
> > > > > Yahoo! Groups Links
> > > > >
> > > > >
> > > > >
> > > >
> > >
> >
>
------------------------------------
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 NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
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/
<*> Your email settings:
Individual Email | Traditional
<*> To change settings online go to:
http://groups.yahoo.com/group/amibroker/join
(Yahoo! ID required)
<*> To change settings via email:
mailto:amibroker-digest@xxxxxxxxxxxxxxx
mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx
<*> 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/
|