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

[amibroker] Re: How to convert a string to non-string characters?!



PureBytes Links

Trading Reference Links

Thanks again, TJ. I had not even considered dynamically writing to an
include file. That might do it.

Since I already paid to have the DLL coded, and it outputs strings, a
small modification will allow it to output both the left AND right
side of the variable expression. 

Then for each optimization step, I will have the formula FPUT to the
include file, then read back from that file - and thus cycle through
thousands of expressions with only a SINGLE expression in my main formula.

Yes, the expressions are already generated from functions, but in C++.
I thought it would run faster that way, rather than trying to code it
all in AFL - hence the DLL. The examples I gave were substitutions for
the real expressions, which are much more complex.


--- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@xxx> wrote:
>
> The point is that you don't need to include thousands of expressions
> but only ONE !
> If you change the CONTENT of include file dynamically by writing TO
the file you can
> have dynamic expression evaluation.
> And all that without any DLL.
> 
> Also it all really depends on what you are specifically trying to do.
> General descriptions lack clarity. You need to provide ENTIRE idea
with details
> if you want help. Otherwise people are guessing what you are trying
to do.
> 
> For example if you want to SWITCH between different conditions in
run time
> the SWITCH structure gives fastest execution:
> 
> switch( n )
> {
>  case 1:
>             result = MA(C, 12) > C5  AND MA(C,20)    < Close;
>       break;
> case 2:
>       result = MA(H, 50) < C12 AND  EMA(L, 12) < Close;
>             break;
> default:
>             break;
> }
> 
> 
> It is fast because on ONE of Nth expressions will be actually evaluated.
> 
> There are other techniques that lead to compact and fast formula
> but it ALL depends on details on what exactly you want to do.
> For example I can see that your expressions are repeated with only
> minor fluctuations (replacing C with H) and that can be easily wrapped
> into functions / switch statements provided one has clear idea
> and knows what he wants to achieve and prepares plan for that.
> 
> The general rule is first THINK a lot before writing the very first
line of code.
> If you begin with just typing thousands of lines of code without
planning first you end up with spaghetti.
> 
> Best regards,
> Tomasz Janeczko
> amibroker.com
> ----- Original Message ----- 
> From: "ozzyapeman" <zoopfree@xxx>
> To: <amibroker@xxxxxxxxxxxxxxx>
> Sent: Thursday, November 27, 2008 1:07 AM
> Subject: [amibroker] Re: How to convert a string to non-string
characters?!
> 
> 
> > Thanks, TJ. Looks like I am back at square one. I contracted to have
> > the DLL coded because pasting the thousands of expressions at once
> > into the formula slowed down AB considerably. Most of the time it
> > hung. So I was trying to generate the expressions dynamically.
> > 
> > Correct me if I am wrong, but wouldn't the #include function result in
> > overall execution that is slower than pasting the thousands of AFL
> > expressions directly into the formula? 
> > 
> > Or will it actually be faster than a copy and paste?
> > 
> > In some cases I am trying to evaluate tens of thousands of full blown
> > AFL expressions per formula.
> > 
> > 
> > --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@> wrote:
> >>
> >> Hello,
> >> 
> >> You need to understand that you are attempting to PARSE expressions.
> >> 
> >> The only way to parse actual full-blown AFL expressions is to
> > INCLUDE them 
> >> in the formula.
> >> 
> >> If you want to "create" expressions on the fly AND execute them,
> >> you need to take two step approach
> >> a) create TEXT file with actual expressions you want to parse
> >> b) #include that text file
> >> 
> >> #pragma nocache
> >> #include "the_file_with_the_expressions_to_parse"
> >> 
> >> in the actual formula and run it.
> >> 
> >> Best regards,
> >> Tomasz Janeczko
> >> amibroker.com
> >> ----- Original Message ----- 
> >> From: "ozzyapeman" <zoopfree@>
> >> To: <amibroker@xxxxxxxxxxxxxxx>
> >> Sent: Thursday, November 27, 2008 12:38 AM
> >> Subject: [amibroker] Re: How to convert a string to non-string
> > characters?!
> >> 
> >> 
> >> > TJ, 
> >> > 
> >> > Thanks, quick question: 
> >> > 
> >> > I gave the arithmetic expression as a quick trivial example.
But what
> >> > I really want to do is create and evaluate expressions of the type:
> >> > 
> >> > Condition1    = MA(C, 12) > C5  AND MA(C,20)    < Close; 
> >> > 
> >> > so for the above case, would you also recommend writing a
> >> > parser/interpreter - or did you suggest that purely for arithmetic
> >> > expressions like "1 + 2 + 3"?
> >> > 
> >> > 
> >> > --- In amibroker@xxxxxxxxxxxxxxx, "Tomasz Janeczko" <groups@>
wrote:
> >> >>
> >> >> You do not want to convert from string to number.
> >> >> What you really want is to EVALUATE arithmetic expressions !
> >> >> For that you need to either write parser/interpreter or  use
> >> > external onee
> >> >> Thanks to AmiBroker JScript support you can use for example
JScript
> >> > eval function.
> >> >> 
> >> >> 
> >> >> EnableScript("JScript"); 
> >> >> <% 
> >> >> 
> >> >> %> 
> >> >> 
> >> >> function Evaluate( text ) 
> >> >> { 
> >> >>   so = GetScriptObject(); 
> >> >>   return so.eval( text ); 
> >> >> } 
> >> >> 
> >> >> "The result is " + Evaluate("3 + 2"); 
> >> >> 
> >> >> Best regards,
> >> >> Tomasz Janeczko
> >> >> amibroker.com
> >> >>   ----- Original Message ----- 
> >> >>   From: ozzyapeman 
> >> >>   To: amibroker@xxxxxxxxxxxxxxx 
> >> >>   Sent: Wednesday, November 26, 2008 11:46 PM
> >> >>   Subject: [amibroker] Re: How to convert a string to non-string
> >> > characters?!
> >> >> 
> >> >> 
> >> >>   Or to take a more trivial example, the following prints "3"
> >> > instead of "12":
> >> >> 
> >> >>   VarSetText("Condition1", "3 + 4 + 5"); 
> >> >> 
> >> >>   Total = StrToNum (VarGetText("Condition1")); 
> >> >> 
> >> >>   printf ("Sum %g", Total); 
> >> >> 
> >> >>   How do I convert the above string so that Total is equal to the
> >> > expression itself, which is equal to 12?
> >> >> 
> >> >> 
> >> >>   --- In amibroker@xxxxxxxxxxxxxxx, "ozzyapeman" <zoopfree@>
wrote:
> >> >>   >
> >> >>   > Yes, tried that. But since the values spit out by the function
> >> > aren't
> >> >>   > just pure numbers, it does not seem to work.
> >> >>   >
> >> >>
> >> > 
> >> > 
> >> > 
> >> > ------------------------------------
> >> > 
> >> > **** IMPORTANT ****
> >> > This group is for the discussion between users only.
> >> > This is *NOT* technical support channel.
> >> > 
> >> > *********************
> >> > TO GET TECHNICAL 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
> >> > 
> >> > *********************************
> >> > Yahoo! Groups Links
> >> > 
> >> > 
> >> >
> >>
> > 
> > 
> > 
> > ------------------------------------
> > 
> > **** IMPORTANT ****
> > This group is for the discussion between users only.
> > This is *NOT* technical support channel.
> > 
> > *********************
> > TO GET TECHNICAL 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
> > 
> > *********************************
> > Yahoo! Groups Links
> > 
> > 
> >
>



------------------------------------

**** IMPORTANT ****
This group is for the discussion between users only.
This is *NOT* technical support channel.

*********************
TO GET TECHNICAL 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

*********************************
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/amibroker/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/amibroker/join
    (Yahoo! ID required)

<*> To change settings via email:
    mailto:amibroker-digest@xxxxxxxxxxxxxxx 
    mailto:amibroker-fullfeatured@xxxxxxxxxxxxxxx

<*> To unsubscribe from this group, send an email to:
    amibroker-unsubscribe@xxxxxxxxxxxxxxx

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/