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" <gro...@...> 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