Dennis -
Not in AFL but in jScript that you can put in your
AFL scripts. There's a function in jScript(C++ as well?) called
Enumerator that you can use to get the list of files in a
directory as shown below. This is
in a routine for automated back test that's somewhere in the Amibroker
library from 2002.
I also have it written as a more generalized
function and if you'd like further help write to me directly.
Hope this helps,
Joe Landry
f = fso.GetFolder(AFLFolder);
fc = new Enumerator(f.files);
for
(; !fc.atEnd();
fc.moveNext())
/*****************************
*
* BatchTest.js
*
* Batch testing sample script
* Shows how to use JScript and new AmiBroker 4.23
* 'Analysis' object to
perform batch backtesting
* and generate reports
*
* Created: Dec 21, 2002 TJ
* Last modification: Dec 22, 2002 TJ
*
* Copyright (C)2002 Amibroker.com
*
* Status: Freeware
* You can use/modify/adopt this code freely
*
*/
/* The directory where AFL files are stored
** Also reports generated by the bactest
** will be saved here
*/
AFLFolder =
"C:\\Program Files\\AmiBroker\\AFL"; // MODIFY TO FIT
YOUR SETUP
WScript.Echo(
"Batch testing of all AFL
files stored in " +
AFLFolder );
var AB, AA;
var fso, f, f1, fc, s;
var filename;
/* Create
AmiBroker object and get
Analysis object
*/
AB = new ActiveXObject(
"Broker.Application");
AA = AB.Analysis;
/* backtest over
symbols and all quotes*/
AA.ClearFilters();
AA.ApplyTo =
0; // use symbols
AA.RangeMode =
0; // all quotes
/* to use filters you should uncomment lines below
// AA.ApplyTo = 2; // use filters
// AA.Filter(0,"watchlist") = 2 /* watch list number */
;
//
AA.Filter(0,"group") = 0 /* group number */;
/* Create FileSystemObject */
fso = new ActiveXObject(
"Scripting.FileSystemObject");
/* Iterate through
all files in the folder */
f = fso.GetFolder(AFLFolder);
fc = new Enumerator(f.files);
for
(; !fc.atEnd();
fc.moveNext())
{
// we need to add empty string to make sure that filename
is a string object
filename =
""
+ fc.item();
/* check the AFL extension */
if( filename.substr(
filename.length - 4 ).toUpperCase() == ".AFL" )
{
if( AA.LoadFormula(
filename ) )
{
AA.Backtest();
reportname =
filename.substr(
0, filename.length - 3 ) + "HTML" ;
AA.Report( reportname
);
//
generate report
}
}
}
----- Original Message -----
Sent: Monday, January 14, 2008 10:33
PM
Subject: [amibroker] How do I read dir
names in AFL
Hello,
I am stumped on this problem. I want to read the names of a
set of
folders that are inside another folder. I want to do this in AFL
because, I want to make a pulldown list param of the folder names. I
will use this to select a parameter set to switch to. Right now, I
have to remember the names of the folders or look them up in Explorer
and type the name into a text field param. I would rather be able to
just select from a list of the valid folders that were created.
I
could do this indirectly if I keep track of every folder I ever
created in
a file, and then use that list. However, it would require
a lot of
housekeeping code to clean up this list from manual
additions and
deletions in Explorer.
Does anyone know how to read the folder names
directly?
Thank you,
Dennis