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

Re: [amibroker] Specifying Watchlist from AFL



PureBytes Links

Trading Reference Links

Ron...From a first glance it looks to me like you need to drive your AFL scripts externally with Batman or a multistep j - script.  With this approach you can specify the watchlist, filter databases and AFL externally before you drive AB and run the AFL on an exploration.  I have a nightly run where I do this so it sounded to me like this is a similar requirement.  The script below generates some ATCs for the "Mango Kayak" style charts.  
 
HTH
Joe
 
 //
// RUN AS AN SCAN
// USE R2000 components in Watchlist 35
//
// 
// WILL PRESENT 3 MESSAGES 1) Amibroker found running, 2) AFL loaded successfully,3) Composites completed
 

// Test to see if Amibroker is Open
// If so, do nothing , If not, start Amibroker
// Create a Shell Object
var oWinMgM = GetObject("WinMgmts://localhost")
var oWSH = WScript.CreateObject("WScript.Shell")
// We have not looked for or found Amibroker yet, record this below
ABFound = false
// Get a list of Amibroker instances currently running (which maybe none)
var ABList = oWinMgM.ExecQuery ("select * from Win32_Process where name='Broker.exe'")
// go through the list
var e = new Enumerator(ABList);
  for (;!e.atEnd();e.moveNext())
   {
 // if one exists, note that
 ABFound = true;
 }
if (ABFound == true)  //then we must have found Amibroker running
 {
 Result = oWSH.popup("Amibroker Found...", 1,"Job Status", 64)
 }
else      //otherwise let's start it
 {
 
 Result = oWSH.popup("Amibroker NOT Found...", 1,"Job Status", 64);
 oWSH.CurrentDirectory = "C:\\Program Files\\AmiBroker2nd\\Amibroker"
 Result = oWSH.Run ("Broker.exe", 5, false)  //Start it, regular window, don't wait
 }
WScript.Sleep(3000) //Wait 3 seconds for it to start
 
// Define AB
AB = new ActiveXObject("Broker.Application");
 
/* retrieve automatic analysis object */
AA = AB.Analysis;
 
//
// ========================  Cut and Paste from here for additional job steps ======
// Load 1st Formula in job step 
if(AA.LoadFormula("C:\\program files\\amibroker\\afl\\Composites\\KAYAK_ATC.afl"))
 
 {
oWSH.popup("Russell 2000 ATC Loaded Successfully",1,"Status",64);
 }
 
/* setup filters */
/* SCAN over symbols in the watchlist
AA.ClearFilters();
// load a ticker with a long history
var ABD = AB.Documents;
var ticker = "!RUT";
    ABD.Open(ticker);   // Point to !RUT -  QP3 ticker name
    Open_Ticker = AB.ActiveDocument.Name;
//    WScript.Echo ("Current Stock = " + Open_Ticker );
 
/* set apply to and range */
AA.ApplyTo =   2; // use filters  0 all symbols, 1 current symbol, 2 use filter
AA.Filter(0,"watchlist")= 35;
AA.RangeMode = 1; // use number of quotations below
AA.RangeN =    1008; // for four years
/* run SCAN */
AA.scan();
 
  WScript.Echo("R 2000 ATC Composites stored in Group 253");
 
 // ==========================  Rank for top ten stocks in each subsector ================//
 //
 
 
AB.refreshall();
 
 
 
 
 
 
 
----- Original Message -----
Sent: Tuesday, October 09, 2007 4:25 PM
Subject: [amibroker] Specifying Watchlist from AFL

I was hoping to find a way to easily set/specify the Watchlist to be
used by a given AFL. My preferred approach is "A" blow, but it does
not appear to a valid/supported one.

A) The SetOption command allows me to override/set about 26
parameters used/required by the AA window. However, the
documentation does not show a way to specify which Watchlist/Filters
to use. I would like to be able to simply say SetOption
(WatchlistName, "MyWatchList");

B) I have searched this group and it appears that this task can be
accomplished using the "Automate a Backtest and Export the Tradelist"
script that Dingo wrote back in April 2004.

C) I also assume that it can be accomplished in the CBT by enabling
the Analysis Object and using the Filter Property.

D) I think it might also be possible using a brute-force approach by
running all of my AFLs from a Watchlist named "UseThisOne" and then
each AFL would use CategoryRemoveSymbol to clear out "UseThisOne" and
then rebuild it by using CategoryGetSymbol from
Watchlist "TheOneIReallyWant" and then have CategoryPutSymbol each
symbol into "UseThisOne". (Brute force and very ugly approach).

Since my preferred approach "A" is not a valid one, does anyone have
an opinion on which approach is preferred? Any other way of
accomplishing this task?

__._,_.___

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




Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___