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

Re: [amibroker] Re: Scoring and Ranking System example using ABtool



PureBytes Links

Trading Reference Links

Addendum. The last passage below should be corrected to this:

    *  But, if you ever call xxABtoolInit(), or xxTableDelete() for that handle,
    *  or TableDelete(-1) for deleting all tables, then the saved handle and its
    *  memory gets released, so you shouldn't call them in your scripts if you
    *  want to continue using the saved handle.

UM


----- Original Message ----- 
From: <uenal.mutlu@xxxxxxxxxxx>
To: <amibroker@xxxxxxxxxxxxxxx>
Sent: Tuesday, May 13, 2003 10:33 PM
Subject: Re: [amibroker] Re: Scoring and Ranking System example using ABtool


> Fred,
> the picture gets clearer here. Maybe the following 
> fact of ABtool will be useful here: If you don't call
> ABtoolInit() then all the ABtool objects used are
> still there. They got automatically deleted during 
> DLL unload. Until then (ie. during an AB session,
> your created ABtool objects (tables, array, file handles
> etc.) are available for all scripts executed and all
> iterations/scans run in AB; you just need to save
> the handle (a simple number) of these objects somewhere
> globally. I already had sent a similar example. 
> The idea is saving the handle (just a number) in an 
> environment variable.
> 
> The following method might be of help for tables.
> It is already possible. Simply replace your xxTableCreate() 
> calls for the same table structure by the following few lines. 
> Afterwards the content of your table becomes persistent
> for the entire duration of an AB session.
> UM
> 
>    /*----------------------------------------------------------------------
>     * TIP: HOW TO USE ABtool OBJECTS IN A GLOBAL AND PERSISTENT MANNER:
>     *  
>     * We can keep an ABtool handle incl. their data persistent for the
>     * duration of an entire AB session (ie. as long as ABtool.dll is loaded).
>     * We simply store the handle in an operating system global area in an 
>     * environment variable. We can later recall it from everywhere.
>     * Since environment variables contain string values we need to convert
>     * our handle number to a string, and later back to ordinary numeric AB var.
>     * BTW, handles in ABtool are simple numbers >= 0
>     * Example:
>     *    xxEnvSetValOnly("MySavedHandle", xxToString(th1));
>     *  
>     * Now in all scripts instead requesting a new table handle via
>     * xxTableCreate() you can check if there was one already saved, and
>     * take that, or create and save a new one if it is the first time:
>     *  
>     *   // check if that envVar exists
>     *   envVal = xxEnvGetValOnly("MySavedHandle");
>     *   if (envVal != "")
>     *     { // if yes, then take the saved handle
>     *       th1 = xxToNumber(envVal);               
>     *    // xxMsgBox("Using saved handle (" + th1 + ")", "Info");
>     *      }
>     *   else
>     *     { // first time creation of the handle and at the
>     *       // same time saving the handle in the envVar:
>     *       th1 = xxTableCreate();
>     *       xxEnvSetValOnly("MySavedHandle", xxToString(th1));
>     *       // also the table definition should be done here
>     *       //...
>     *     }
>     * 
>     *  But, if you ever call ABtoolInit() then all handles and all memory
>     *  used by them get released, so you shouldn't call it in your scripts
>     *  if you want use the saved handle.
>     * 
>     *----------------------------------------------------------------------*/
> 
>     // check if that envVar exists:
>     envVal = xxEnvGetValOnly("MySavedHandle");
>     if (envVal != "")
>       { // yes, then take the saved handle
>         th1 = xxToNumber(envVal);               
>      // xxMsgBox("Using saved handle (" + th1 + ")", "Info");
>       }
>     else
>       { // no, first time creation of the handle and at the
>         // same time saving the handle in the envVar:
>         th1 = xxTableCreate();
>         xxEnvSetValOnly("MySavedHandle", xxToString(th1));
> 
>         // step2: define the table fields (this is a one time task too!)
>         // change the following with your own table structure
>         xxTableColumnAdd("Ticker", 3, th1);     // column 0 is of type string
>         xxTableColumnAdd("NumA",   1, th1);     // column 1 is of type float
>         xxTableColumnAdd("NumB",   1, th1);     // column 2 is of type float
>         xxTableColumnAdd("NumC",   1, th1);     // column 3 is of type float
>         xxTableColumnAdd("NumD",   1, th1);     // column 4 is of type float
>       }
> 
>     //........    
> 
> 
> 
> 
> ----- Original Message ----- 
> From: "Fred" <fctonetti@xxxxxxxxx>
> To: <amibroker@xxxxxxxxxxxxxxx>
> Sent: Tuesday, May 13, 2003 8:45 PM
> Subject: [amibroker] Re: Scoring and Ranking System example using ABtool
> 
> 
> > Uenal,
> > 
> > An example at the moment is that given that AB does not handle 
> > portfolio investments correctly in terms of how invested you are and 
> > what initial capital is needed and how that relates to the watch list 
> > size as opposed to how many trades are actually being taken etc. in 
> > order to combat these things it's necessary to control transactions 
> > oneself and keep track of how individual trades affect portfolio 
> > equity etc. and since AB processes portfolios on a symbol by symbol 
> > basis rather then on a bar by bar basis one needs to keep track of 
> > this info on a bar by bar basis or at least that's how I'm doing it 
> > and it works fine but for each symbol I need to export the table and 
> > then import it for the next symbol to continue.
> > 
> > Fred
> > 
> > --- In amibroker@xxxxxxxxxxxxxxx, uenal.mutlu@xxxx wrote:
> > > From: "Fred" <fctonetti@xxxx>
> > > > I understand the functionality of Table Export/Import, but for 
> > > > example in running an AA back test or optimization across 
> > multiple 
> > > > symbols my understanding is that AB clears the contents of 
> > virtually 
> > > > everything between one symbol and the next and it would be 
> > usefull to 
> > > > be able to some how have persistancy in tables as opposed to 
> > having 
> > > > to export them at the end of processing for one sysmbol and then 
> > > > importing them again at the beginning of processing of the next 
> > > > symbol.
> > > 
> > > Need to think a while on this... 
> > > Please give me a small practical example to follow.
> > >  
> > > > On another topic, I know this can be done externally using OLE 
> > > > Automation etc., but it would be usefull to be able to get at all 
> > > > the "settings" information that AA has, a lot of which can not be 
> > > > gotten with a STATUS("xxx") type command from within an AA.  
> > > 
> > > Got it, will see.
> > > 
> > > UM
> > > 
> > > 
> > > > --- In amibroker@xxxxxxxxxxxxxxx, uenal.mutlu@xxxx wrote:
> > > > > Hi Fred,
> > > > > the functions xxTableExportBinary(), xxTableImportBinary(), and
> > > > > their ASCII versions xxTableExport() and the new xxTableImport()
> > > > > are possibilities for making the tables persistent: just save 
> > > > before quitting
> > > > > and load after starting. This also could be automated. If there 
> > is 
> > > > demand
> > > > > for this le me know.
> > > > > As stated in my Todo list there is another point with an 
> > extension 
> > > > DB.
> > > > > The persistent variables will be automatically saved/loaded. 
> > > > Unfortunately
> > > > > they are delayed due to the Sort bug introduced in the last 
> > version.
> > > > > FYI: a bugfixed version was uploaded.
> > > > > UM
> > > > > 
> > > > > 
> > > > > ----- Original Message ----- 
> > > > > From: "Fred" <fctonetti@xxxx>
> > > > > To: <amibroker@xxxxxxxxxxxxxxx>
> > > > > Sent: Tuesday, May 13, 2003 6:32 PM
> > > > > Subject: [amibroker] Re: Scoring and Ranking System example 
> > using 
> > > > ABtool
> > > > > 
> > > > > 
> > > > > > Uenal,
> > > > > > 
> > > > > > Is the implication here that things like ABTool tables could 
> > be 
> > > > made 
> > > > > > to be persistant ?
> > > > > > 
> > > > > > --- In amibroker@xxxxxxxxxxxxxxx, uenal.mutlu@xxxx wrote:
> > > > > > > Here is a sample code on how to use the Ticker and Table
> > > > > > > functions of the ABtool plugin to realize Systems based on 
> > > > > > > Scoring and Ranking. 
> > > > > > > Attached is the AFL program code 
> > ("xx_Sorting_And_Ranking.afl")
> > > > > > > 
> > > > > > > 
> > > > > > > Some other info on ABtool:
> > > > > > > 
> > > > > > > - ABtool documentation bug:
> > > > > > >   TableSortDefDeleteAll() was renamed to TableSortDefDelAll
> > ()
> > > > > > >   Just forgot to update the dox :-( In the next version it 
> > will 
> > > > be 
> > > > > > fixed.
> > > > > > > 
> > > > > > > - Persistent AFL variables:
> > > > > > >   The next version of ABtool will have global and 
> > persistent 
> > > > AFL 
> > > > > > >   variables implemented. Persistent means "always 
> > available"; 
> > > > ie. 
> > > > > > they 
> > > > > > >   got saved and restored automatically. The user can save 
> > > > copies of 
> > > > > > >   single number variables and string variables in 
> > persistent 
> > > > area, 
> > > > > > and 
> > > > > > >   recall them whenever he/she likes. Each variable is 
> > > > identified by 
> > > > > > a 
> > > > > > >   unique name the user gives the variable. So, this is like 
> > the 
> > > > > > environment
> > > > > > >   variables, but env vars are limited to string type only 
> > and 
> > > > are 
> > > > > > limited 
> > > > > > >   by size and the number of envvars by the operating 
> > system. 
> > > > The 
> > > > > > persistent 
> > > > > > >   variables don't have any limitations. Put as much vars as 
> > you 
> > > > > > like there
> > > > > > >   (also very long strings), and they will be available even 
> > > > after 
> > > > > > restarting 
> > > > > > >   AB or the plugin.  
> > > > > > > 
> > > > > > > I'm just testing it. Till then.
> > > > > > > UM



------------------------ Yahoo! Groups Sponsor ---------------------~-->
Rent DVDs Online - Over 14,500 titles.
No Late Fees & Free Shipping.
Try Netflix for FREE!
http://us.click.yahoo.com/YoVfrB/XP.FAA/uetFAA/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/