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

Re: [amibroker] Re: New Variable Class



PureBytes Links

Trading Reference Links

Hello,

There is no such thing like one-pass composites possible.
There always need to be a pass that will produce a composite
and second pass (your exploration) after. It may appear like
one pass but it is not (in terms of performance).

Right now you can get such functionality using Osaka plugin
http://www.amibroker.net/3rdparty.php

It is open source free plugin and because of that I was able to check it out
and it works just fine.

Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message ----- 
From: "Phsst" <phsst@xxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Wednesday, November 05, 2003 6:27 AM
Subject: [amibroker] Re: New Variable Class


> <there are some unfortunate problems with this approach for doing
> on-the-fly composites; hopefully tomasz will address them at some
> point in the future:>
> 
> Plus a couple of other problems that you mentioned...
> 
> Dave,
> 
> Thanks for the info. You have done an impressive job of mastering AFL
> and learning its' idiosyncracies.
> 
> But as you probably suspect, I'd prefer to lobby Tomasz to implement
> SIMPLE composite variable support directly into AFL rather than
> forcing users to resort to unconventional (un-supported) tricks and
> workarounds to solve the problem.
> 
> I think there would be a real benefit to the AB User Base, not to
> mention marketing appeal. Plus, composite variable support would be
> simple and unambigous for customer use. 
> 
> Do you see a need for this feature?
> 
> Regards,
> 
> Phsst
> 
> 
> --- In amibroker@xxxxxxxxxxxxxxx, "Dave Merrill" <dmerrill@xxxx> wrote:
> > not that this actually solves this problem, but for portfolio backtests,
> > only, variables we create and manage ourselves actually aren't reset
> at the
> > start of each new stock. it *appears* that they are, unless your
> code treats
> > them as global to the entire backtest run, which it usually doesn't.
> > typically we set everything that needs to be set every time, for every
> > stock, erasing anything that might have persisted. to preserve
> values across
> > all the stocks in a test, you have to detect when you're on the
> first stock,
> > and initialize your vars at that time, only, then continue to add to
> them or
> > use them however you want with each stock without resetting them
> again from
> > scratch.
> > 
> > for instance, say you want to buy and sell based on an indicator applied
> > both to the stock itself, and to an overall index. ideally, you
> don't want
> > to recreate the index indicator over and over again for every stock,
> so you
> > could do something like this in the portfolio backtester (not that
> this is a
> > good system):
> > 
> > ----------------
> > period = Optimize("Period", 18, 2, 40, 1);
> > 
> > if(Status("StockNum") == 0) { // first stock in test
> > index_price = Foreign("!COMP", "C");
> >  index_EMA = Wilders(index_price, period);
> > index_buy = index_price > index_EMA;
> > index_sell = index_price < index_EMA;
> > }
> > 
> > stock_EMA = Wilders(c, period);
> > stock_buy = c > stock_EMA;
> > stock_sell = c < stock_EMA;
> > 
> > buy = stock_buy and index_buy;
> > sell = stock_sell or index_sell;
> > short = stock_sell and index_sell;
> > cover = stock_buy or index_buy;
> > ----------------
> > 
> > the if statement block runs only once, when the first stock is being
> > examined, but the variables it sets stay valid for the whole
> backtest, so
> > you can use them to evaluate each stock without recalculating them.
> > 
> > 
> > there are some unfortunate problems with this approach for doing
> on-the-fly
> > composites; hopefully tomasz will address them at some point in the
> future:
> > 
> > - Status("StockNum") seems to be undefined in explorations, as it is
> in the
> > old backtester. this means you can't detect when you're on the first
> stock,
> > to do your initializations. even IsNull(Status("StockNum")) doesn't
> return
> > anything.
> >   besides having Status("StockNum") work in explorations, it would
> be nice
> > to have Status("FirstStockInTest") and "LastStockInTest", like we have
> > FirstBarInTest etc.
> > 
> > - you can't find out which tickers are included in the current test,
> or how
> > many there are. this means you can't find out when you're on the
> last stock,
> > or convert the sum of values for each stock to an average, in any way I
> > could figure out. you also can't iterate through them all during the
> first
> > stock of a backtest, to, say, find the top N by volume, and use that
> during
> > trading of each stock.
> >   I've suggested a new feature,
> GetCategorySymbols(categoryTypeAutoAnalysis)
> > that would return the list of tickers being analyzed; this would make a
> > variety of things easier.
> > 
> > dave
> > 
> > 
> > (btw the index/stock Wilders thing is an example of a distinctly
> non-robust
> > system. backtest it on the NASDAQ 100 from 3/1/98 to 3/31/03, and
> results
> > are decent-ish, not great MDD. then optimize and look at the returns
> for the
> > periods surrounding the default 18. they bite; 18 is a local fluke. try
> > other time frames, and again, the generic all-market-types period is
> about
> > the only one that does as well.)
> > 
> > 
> > > Currently, all variables (global and local) reflect information about
> > > the current symbol only.
> > >
> > > To perform calculations against multiple securities, you must use
> > > AddToComposite which restricts the user to O,H,L,C,V,OI fields along
> > > with their pre-defined constraining formats which preclude the
> > > calculation and storage of very large numbers. It also usually
> > > requires at least two passes against separate AFL or AFL/IB afl code
> > > to work with the results.  There is certainly a need for
> > > AddToComposite, but I think there is also a need for a simpler set of
> > > composite values.
> > >
> > > I'd like to see a new variable class within AFL for computations
> > > across the entire database or watchlist. For lack of a better word, a
> > > "composite variable" whose value is maintained across multiple
> > > securities and which the AFL engine does not initialize with each new
> > > symbol. Also, a composite variable that can be displayed with
> > > AddColumn just like the other variables using Filter = LastBar logic.
> > >
> > > This would allow the user to put together some quick, one-pass
> > > explorations for calculating multiple issue stats and to display those
> > > figures in the same afl. No ~Composite files would be created, and
> > > very large numbers could be calculated and displayed using more
> > > flexable variable type declarations of float (or others).
> > >
> > > I'm posting this here to see if I am alone in wanting this feature, in
> > > which case I won't pass it along to TJ as a suggestion.
> > >
> > > Comments?
> > >
> > > Phsst
> > >
> > >
> > > Yahoo! Groups Sponsor
> > > ADVERTISEMENT
> > >
> > >
> > >
> > >
> > > Send BUG REPORTS to bugs@xxxx
> > > Send SUGGESTIONS to suggest@xxxx
> > > -----------------------------------------
> > > Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx
> > > (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> > > --------------------------------------------
> > > Check group FAQ at:
> > > http://groups.yahoo.com/group/amibroker/files/groupfaq.html
> > >
> > > Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
> 
> 
> 
> Send BUG REPORTS to bugs@xxxxxxxxxxxxx
> Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
> -----------------------------------------
> Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
> (Web page: http://groups.yahoo.com/group/amiquote/messages/)
> --------------------------------------------
> Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html 
> 
> Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 
> 
> 
>

------------------------ Yahoo! Groups Sponsor ---------------------~-->
Rent DVDs from home.
Over 14,500 titles. Free Shipping
& No Late Fees. Try Netflix for FREE!
http://us.click.yahoo.com/I3w.vC/hP.FAA/3jkFAA/GHeqlB/TM
---------------------------------------------------------------------~->

Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html 

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