I've eliminated JScript and am instead calling objects from within AFL.
But now I am running into a syntax error on what used to be a routine
call in JScript:   ActiveDocument.Name

I get a non specific syntax error when trying to set
ActiveDocument.Name, as below. Anyone know why? Is that object treated
differently in AFL compared to JScript? I can set it fine in JScript
with the same code below, just switching the AB object to an ActiveX.


Database    = "F:\\AB Databases\\MyDB";

AB = CreateObject("Broker.Application");

AA = AB.Analysis;

AB.LoadDatabase( Database );

AB.ActiveDocument.Name = "EURUSD";




--- In [email protected], "ozzyapeman" <zoopf...@...> wrote:
>
> Thanks for the detailed explanations Tomasz. I will rethink my
approach on this.
>
> Herman - Bruce beat me to it. I indeed use his code to check status of
the WF engine. It has proven very useful.
>
>
> --- In [email protected], "Tomasz Janeczko" groups@ wrote:
> >
> > Yes I agree, of course there are always few things that make scripts
handy, and
> > my approach is to leave doors open in the application, however, I
always
> > verbally discourage certain techniques, unless someone is very well
aware of consequences
> > and issues behind them.
> >
> > Best regards,
> > Tomasz Janeczko
> > amibroker.com
> >   ----- Original Message -----
> >   From: bruce1r
> >   To: [email protected]
> >   Sent: Tuesday, May 12, 2009 3:10 PM
> >   Subject: [amibroker] Re: How to pass variables from AFL to
embedded JScript?
> >
> >
> >
> >
> >   Tomasz -
> >
> >   Just to make note of the some exceptions to your note about lack
of reasons to run JScript/VBScript, there are still a few non-mainstream
things that it makes possible.  Just to list a few -
> >
> >     1.. Manipulation of COM arrays that allows a very fast way to
get AFL arrays into and out of Excel.
> >
> >     2.. Detecting the closing of a COM server via the On Error logic
in VBScript.  Users have a bad habit of closing them and it can't be
detected and handled in AFL.
> >     3.. Getting lists of files and directories.
> >     4.. Sorting CSV lists in JScript.
> >          etc....
> >
> >   I don't like script much either, but I'm glad that you originally
did it.  There are other ways of doing these and other tasks that I
usually prefer (DLL, COM DLL, etc.).  But it is kind of like having a
carpenter having a hand plane in his toolbox.  Power tools are better,
but on the rare occasion when a hand plane can be used, you are glad
that it is handy and that you have it.
> >
> >   -- BruceR
> >
> >
> >   --- In [email protected], "Tomasz Janeczko" <groups@>
wrote:
> >   >
> >   > I should add that embedding JScript/VBScript in formula is old
technology and was intended
> >   > as a way to support looping in very old and dark ages when there
was no native looping in
> >   > AFL. Now AFL allows everything that JScript/VBScript and more
plus it is 10x faster
> >   > and there is absolutely NO reason to use JScript/VBScript
anymore. It is left here ONLY
> >   > to allow run legacy formulas.
> >   > No new code should use JScript/VBScript.
> >   >
> >   > Second thing is that OLE AUTOMATION is intended to be used only
FROM OUTSIDE
> >   > of AmiBroker. Using it within formulas from inside AB, may
inevitably lead to "chicken and egg" (circular reference) problem
> >   > and is not supported.
> >   > It is important that OLE automation was always thought by
Microsoft as a method of controlling ONE application
> >   > from ANOTHER application.
> >   >
> >   > Best regards,
> >   > Tomasz Janeczko
> >   > amibroker.com
> >   > ----- Original Message -----
> >   > From: Tomasz Janeczko
> >   > To: [email protected]
> >   > Sent: Tuesday, May 12, 2009 9:41 AM
> >   > Subject: Re: [amibroker] Re: How to pass variables from AFL to
embedded JScript?
> >   >
> >   >
> >   >
> >   >
> >   >
> >   > Hello,
> >   >
> >   > No you are not allowed to run scripting host code within
conditional expression.
> >   >
> >   > The Microsoft SCRIPTING host is INDEPENDENT, i.e. it executes on
its own,
> >   > in parallel and its "global" parts are simply extracted from the
formula and run unconditionally
> >   > before actual AFL execution.
> >   >
> >   > If you need to call something in script conditionally you have
two choices:
> >   > a) either write condition in JScript/VBScript
> >   > OR
> >   > b) write a FUNCTION in JScript/VBScript and call that function
conditionally from AFL level
> >   > as shown below:
> >   >
> >   >
> >   > EnableScript( "jscript" );
> >   > <%
> >   > // NO global code, only function definition
> >   >
> >   > function DoTheJob()
> >   > {
> >   > AB = new ActiveXObject( "Broker.Application" );
> >   > AA = AB.Analysis;
> >   > }
> >   >
> >   > %>
> >   >
> >   > Test = 4;
> >   > if( Test == 4 )
> >   > {
> >   > scr = GetScriptObject();
> >   > scr.DoTheJob();
> >   > }
> >   >
> >   > Best regards,
> >   > Tomasz Janeczko
> >   > amibroker.com
> >   > ----- Original Message -----
> >   > From: ozzyapeman
> >   > To: [email protected]
> >   > Sent: Tuesday, May 12, 2009 7:36 AM
> >   > Subject: [amibroker] Re: How to pass variables from AFL to
embedded JScript?
> >   >
> >   >
> >   > Okay, this is bizarre. I am testing out some embedded JScript
for a related application to what I posted earlier. This one is not
happening within the AA, but is nonetheless still inside an AFL.
> >   >
> >   > The following simple code is fine, and does not generate a
syntax error:
> >   >
> >   > //Test = 4;
> >   >
> >   > //if ( Test == 4 )
> >   > //{
> >   >
> >   > EnableScript( "jscript" );
> >   > <%
> >   >
> >   > AB = new ActiveXObject( "Broker.Application" );
> >   > AA = AB.Analysis;
> >   >
> >   > %>
> >   >
> >   > //}
> >   >
> >   >
> >   > However, if I uncomment all the "//" I get a syntax error.
> >   >
> >   > Are we not allowed to call a JScript inside an IF block? If not,
why the heck not? And if we are allowed, why would it be generating a
syntax error in this simple case?
> >   >
> >   > The error I get is on the "<%" --> probably missing semi colon
on previous line.
> >   >
> >   > But the semi colon is clearly there.
> >   >
> >   > Anyone's two cents appreciated.
> >   >
> >   >
> >   >
> >   > --- In [email protected], "ozzyapeman" zoopfree@ wrote:
> >   > >
> >   > > Thanks for that tip.
> >   > >
> >   > > Guess I will have to write a WF type routine in JScript and
call each optimize individually, from outside AA.
> >   > >
> >   > >
> >   > > --- In [email protected], "Tomasz Janeczko" groups@
wrote:
> >   > > >
> >   > > > During any AA operation in progress, you must not
> >   > > > use Analysis object to start another AA operation
> >   > > > (because it is infinite nesting)
> >   > > >
> >   > > > Analysis object may only be used from OUTSIDE
> >   > > > of AA.
> >   > > >
> >   > > > To run "suboptimization" use THE ONLY supported
> >   > > > way, i.e. Optimizer API (see optimizer.html file in the ADK
subfolder).
> >   > > >
> >   > > > Best regards,
> >   > > > Tomasz Janeczko
> >   > > > amibroker.com
> >   > > > ----- Original Message -----
> >   > > > From: "ozzyapeman" zoopfree@
> >   > > > To: [email protected]
> >   > > > Sent: Tuesday, May 12, 2009 3:11 AM
> >   > > > Subject: [amibroker] Re: How to pass variables from AFL to
embedded JScript?
> >   > > >
> >   > > >
> >   > > > > And if there is no way to pass variables directly from AFL
to JScript,
> >   > > > > can I first fput the AFL vars to some kind of log file,
and then is
> >   > > > > there a command in JScript that can pull those vars to use
for the
> >   > > > > Dates?
> >   > > > >
> >   > > > > I can also use VBscript, if that makes any difference. I'm
just not all
> >   > > > > that knowledgeable about either J or VB scripts.
> >   > > > >
> >   > > > >
> >   > > > >
> >   > > > > --- In [email protected], "ozzyapeman" <zoopfree@>
wrote:
> >   > > > >>
> >   > > > >> Hello, hoping someone can help out here. During a
Walk-Forward test, I
> >   > > > >> am trying to pass From and To dates from the WF engine
into an
> >   > > > > embedded
> >   > > > >> JScript. I essentially want to do a "sub-optimization" as
part of the
> >   > > > >> backtest portion of the WF test. However, it seems that I
cannot pass
> >   > > > >> variables from the AFL to the JScript.
> >   > > > >>
> >   > > > >> Is there any way to pass the From and To dates into the
JScript? Below
> >   > > > >> is what I have. It generates an 'undefined source' error
for these
> >   > > > >> lines:
> >   > > > >>
> >   > > > >>
> >   > > > >> AA.RangeFromDate = FromDateStr;
> >   > > > >> AA.RangeToDate = ToDateStr;
> >   > > > >>
> >   > > > >>
> >   > > > >> Here is the AFL with embedded JScript:
> >   > > > >>
> >   > > > >> FromDateNum = Status( "rangefromdate" );
> >   > > > >> ToDateNum = Status( "rangetodate" );
> >   > > > >>
> >   > > > >> FromDate = DateTimeConvert( 2, FromDateNum );
> >   > > > >> ToDate = DateTimeConvert( 2, ToDateNum );
> >   > > > >>
> >   > > > >> FromDateStr = DateTimeToStr( FromDate );
> >   > > > >> ToDateStr = DateTimeToStr( ToDate );
> >   > > > >>
> >   > > > >>
> >   > > > >> EnableScript( "jscript" );
> >   > > > >> <%
> >   > > > >>
> >   > > > >> Formula = "F:\\SomeFormula.afl";
> >   > > > >> Database = "F:\\AB Databases\\MyIB";
> >   > > > >> Settings = "F:\\Some Settings.ABS";
> >   > > > >>
> >   > > > >> AB = new ActiveXObject( "Broker.Application" );
> >   > > > >> AA = AB.Analysis;
> >   > > > >>
> >   > > > >> AB.LoadDatabase( Database );
> >   > > > >> AB.ActiveDocument.Name = "EURUSD";
> >   > > > >> AA.LoadFormula( Formula );
> >   > > > >> AA.LoadSettings( Settings);
> >   > > > >> AA.ApplyTo = 1;
> >   > > > >> AA.RangeMode = 3;
> >   > > > >> AA.RangeFromDate = FromDateStr; // * ERROR *
> >   > > > >> AA.RangeToDate = ToDateStr;
> >   > > > >> AA.Optimize( 0 );
> >   > > > >>
> >   > > > >> AA.Export ( "F:\\TestReport1.html" );
> >   > > > >>
> >   > > > >> %>
> >   > > > >>
> >   > > > >
> >   > > > >
> >   > > > >
> >   > > > >
> >   > > > > ------------------------------------
> >   > > > >
> >   > > > > **** IMPORTANT PLEASE READ ****
> >   > > > > This group is for the discussion between users only.
> >   > > > > This is *NOT* technical support channel.
> >   > > > >
> >   > > > > TO GET TECHNICAL SUPPORT send an e-mail directly to
> >   > > > > SUPPORT {at} amibroker.com
> >   > > > >
> >   > > > > TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
> >   > > > > http://www.amibroker.com/feedback/
> >   > > > > (submissions sent via other channels won't be considered)
> >   > > > >
> >   > > > > For NEW RELEASE ANNOUNCEMENTS and other news always check
DEVLOG:
> >   > > > > http://www.amibroker.com/devlog/
> >   > > > >
> >   > > > > Yahoo! Groups Links
> >   > > > >
> >   > > > >
> >   > > > >
> >   > > >
> >   > >
> >   >
> >
>

Reply via email to