If you think that removing random parts from the script
written in different language in order to "compile" makes it correct,
then you are wrong.
It is JScript. Not AFL. The examples are written in JScript
because they are intended to be run as external script (in Windows Scripting
Host).
You can not take JScript code copy it to AFL editor and
expect it to work. It is different language.
Although it may "look" as AFL it is not AFL. How to
distinguish that? Easy: new ActiveXObject statement (first line)
is a JScript-only construct. That tells you that it is
JScript (as all examples given in this doc by the way).
JScript allows setting COM properties with parameters like
this:
AA.Filter( 0, "market"
) = 0; // assigning
value to COM OBJECT parametrized property here
If you remove the assignment from such statement, the
statement will compile but its meaning is completely CHANGED.
Without assignment the statement actually does NOTHING (it
reads the property value and does not make any use of it).
AFL does not allow setting COM
parametrized properties, AFL only allows setting parameter-less COM
properties, that's why you are getting syntax errors.
Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message -----
Sent: Sunday, May 18, 2008 10:33
AM
Subject: Re: [amibroker] Can someone
fix this OLE code?
Is that correct Herman ? Does the code really
do what it should do ? Every time when running the AFL the report shows me
the 'Current Symbol' and not my selected WatchList as coded in the AFL. Of
course after following modifications in the code :
if ( ParamTrigger( "Run Com BT", "BT" )
)
{
WLN = 0; // the watchlist to
backtest
BRS = 100; // Number bars to test
AB = CreateObject( "Broker.Application" );
AA = AB.Analysis;
AA.LoadFormula( "C:\\Program
Files\\AmiBroker\\Formulas\\Systems\\Example.afl" );
AA.ClearFilters();
AA.Filter( WLN, "watchlist" )
;
AA.ApplyTo = 1;
AA.RangeMode = 1;
AA.RangeN = BRS;
AA.Backtest();
AA.Report( "" );
}
Rather weird for me because AA.RangeN is
being set correctly where the AA.Filter does not do what it should do. I
still don't follow ... BTW I know that I should not do this from within an
AFL. But the reason why this is not possible still for me is a open question
...
I am also getting syntax errors when using the
code from the help file for setting the Watchlist. So "AA.Filter( 0, "market" ) = 0;" produces a syntax error and
frankly for me the above instruction seems to be rather straight forward ...
Gives no syntax error but does not do what it should do
-)
So yes, it produces a nice BT report. But the
question is, if that's the report you want to get. I could not make it work
in the way I wanted it to work ... At least not from within an AFL ...
Regards, Ton.
----- Original Message -----
Sent: Saturday, May 17, 2008 2:28
PM
Subject: Re: [amibroker] Can someone
fix this OLE code?
OK Tomasz, but the code produces a nice BT report each time i click the
Trigger. Seemingly flawless. Seems only a tweak would be required to make
it work robust.
I am going through all this trouble just to be able to access the
Backtester stats from an indicator (I was going to extract the last value
from the report on bar-by-bar BTs!).
System analysis in the time domain is frustrated/impossible
because basic AB users (non professional programmer) can't retrieve and
plot the Backtester stats, like UPI, %Winners, Number of trades, etc. Thus
there is a big void wrt system analysis - see my suggestion #1335 and
support tag [#49377].
I wish that formulas for these functions were made public so that they
can be used in indicators. This Would open up a whole new world to
evaluate, analyze, and design trading systems. The single numbers in the
AA give very limited information. With all respect, please do not mention
the CBT... that solution is for less than 10% of users and I don't have
enough days left to learn all that stuff.
best regards,
herman
Saturday, May 17, 2008, 8:10:10 PM, you wrote:
> |
But... the example in help
a) works
b) presents OUTSIDE ***JScript***
code
http://www.amibroker.com/guide/objects.html
c) does not contain
AA.Analysis.RangeN (wrong line)
Again I want to stress that out that Analysis
COM object must not be used form
AFL level. The functionality is provided to
control Automatic Analysis from OUTSIDE
of AmiBroker.
Best regards,
Tomasz Janeczko
amibroker.com
----- Original Message -----
From: Herman
To: dingo
Sent: Saturday,
May 17, 2008 2:02 PM
Subject: Re:
[amibroker] Can someone fix this OLE code?
won't do. Actually 99% of this code was copied
from the AB help.
h
For tips on developing Real-Time Auto-Trading
systems visit:
http://www.amibroker.org/userkb/
Saturday, May 17, 2008, 7:54:44 PM, you
wrote:
> |
ON the clearfilters() take off the
() and try it.
d
From: amibroker@xxxxxxxxxps.com [mailto:amibroker@yahoogroups.com] On Behalf Of Herman
Sent: Saturday, May 17, 2008 7:49 AM
To: dingo
Cc: amibroker@xxxxxxxxxps.com
Subject: Re: [amibroker] Can someone fix this OLE
code?
it runs fine except for the WLN and BRS
changes i need.
h
For tips on developing Real-Time
Auto-Trading systems visit:
http://www.amibroker.org/userkb/
Saturday, May 17, 2008, 7:46:35 PM, you
wrote:
> |
Maybe AB won't let you run a
backtest within an indicator - time to ask
TJ.
d
From: amibroker@xxxxxxxxxps.com
[mailto:amibroker@yahoogroups.com] On Behalf Of Herman
Sent: Saturday, May 17, 2008 7:40
AM
To: dingo
Cc: amibroker@xxxxxxxxxps.com
Subject: Re: [amibroker] Can someone fix this
OLE code?
Hi d, I tried that initially but No
go.
thanks,
herman
For tips on developing Real-Time
Auto-Trading systems visit:
http://www.amibroker.org/userkb/
Saturday, May 17, 2008, 7:35:20 PM,
you wrote:
> |
On the lines that give the
error substitute a number constant for the
variable and see if it works. If it does then it
looks to me like it thinks the variables are
arrays.
d
From: amibroker@xxxxxxxxxps.com
[mailto:amibroker@yahoogroups.com] On Behalf Of Herman
Sent: Saturday, May 17, 2008 7:01
AM
To: AmiBroker User Group
Subject: [amibroker] Can someone fix
this OLE code?
Can someone help me fix the
code below so that when triggered in an Indicator,
it:
1) Backtest all tickers in
watchlist WLN?
2) Use range of BRS
bars
3) Output ONLY the one line
BT Report?
Many thanks!!!!
herman
if ( ParamTrigger( "Run
Com BT", "BT" )
)
{
WLN
= 0; //
the watchlist to backtest
BRS
= 100; //
Number bars to test
AB
= CreateObject( "Broker.Application" );
AA =
AB.Analysis;
AA.LoadFormula( "C:\\Program
Files\\AmiBroker\\Formulas\\Systems\\Example.afl" );
AA.ClearFilters();
AA.Filter( 0, "watchlist" ) = WLN;
// This
gives syntax error...
AA.ApplyTo
= 1;
AA.RangeMode
= 1;
AA.Analysis.RangeN = BRS;
// This
gives syntax error...
AA.Backtest();
AA.Report( "" );
}
No virus found in this
incoming message.
Checked by AVG.
Version: 8.0.100 / Virus
Database: 269.23.16/1448 - Release Date: 5/16/2008
7:42 PM
|
No virus found in this incoming
message.
Checked by AVG.
Version: 8.0.100 / Virus Database:
269.23.16/1448 - Release Date: 5/16/2008 7:42
PM
|
No virus found in this incoming
message.
Checked by AVG.
Version: 8.0.100 / Virus Database:
269.23.16/1448 - Release Date: 5/16/2008 7:42 PM
|
|