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

[amibroker] Re: Discussion about Params, hierarchical, conditional, tricks...



PureBytes Links

Trading Reference Links

Hi Dennis/Joe,
I downloaded the code as well but was that lucky. I got a few syntac 
errors that I don't know how to get rid of. Did I miss something?

The code causes AM syntax errors. The AFL complains at "switch" 
statements. See example below. The switch statements compute text 
conditions that I never saw in C/C++ or Java lanaguages. According to 
AFL documents, the "switch" only switches number type conditions. 

function PlotStyle(styleText){
switch (styleText)
{
case("Line"): style = styleLine; break;
case("Thick Line"): style = styleLine|styleThick; break;
case("Dashed"): style = styleDashed; break;
case("Thick Dashed"): style = styleDashed|styleThick; break;
case("Dots"): style = styleNoLine|styleDots; break;
default: style = styleLine;
}
return style;
}

The AFL also complains at statements like barstyle |= styleThick. 
After modified to barstyle = barstyle | styleThick, the complains 
gone.

Rolly.

--- In amibroker@xxxxxxxxxxxxxxx, "Joe Landry" <jelandry@xxx> wrote:
>
> Dennis,
> Some quick comments. 
> 1) Thanks for doing this and sharing your work.  I loaded it and as 
you probably knew it would, it fired up right away. 
> 2) I've mined Bill's parameter work recently for a conditional ATC 
write and your work is going into the InfoSelect datamine.  
> 3) In addition to using this in flexible parameters, the use of 
fileIO, dynamic variable naming for VarSet, string handling, and 
static variables examples are clear and useful/productive in other 
areas.    
> 
> Regards
> Joe L. 
>  
>  
> 
> 
> 
>   ----- Original Message ----- 
>   From: Dennis Brown 
>   To: amibroker@xxxxxxxxxxxxxxx 
>   Sent: Tuesday, August 14, 2007 3:00 PM
>   Subject: [amibroker] Discussion about Params, hierarchical, 
conditional, tricks...
> 
> 
> 
>   Hello,
> 
> 
>   I am posting this discussion, because I want to share what I have 
learned, and get feedback about possibly doing these things an an 
easier way --or perhaps some ideas will emerge for future versions of 
AB.
> 
> 
>   I reviewed Bill Barnards params code.  It was a tough read for 
me, but I was able to take his work and couple it with other hints on 
this site to create almost everything I wanted to do with params:
> 
> 
>   1.  I am plagued by edits to my AFL causing AB to do a "Reset 
all" params about every 4th edit.  I loved Bill's idea of saving the 
last param values and that also fixes that problem.  Also by saving 
each param to its own file, I can edit my param AFLs on the fly and 
not loose most of the settings.
> 
> 
>   2.  I have a ton of params.  I have to scroll several screenfuls 
to find the ones I want, and I usually only want to change a few at a 
time --but not always located next to each other.  The current AB 
(<5.0) does not remember which param sections were open and collapse 
the others.  So it is a pain to work with.  Bill's method of  putting 
param statements inside of conditional code and using the "reset all" 
button to force AB to rearrange the params window is a clever idea.  
It makes it possible to have both the missing functionality of 
remembering which sections are open, but also lets me implement 
multiple levels of hierarchy or conditional data params --a real plus.
> 
> 
>   3.  Controlling the organization of the params window from AFL is 
very flexible.  By controlling which params are displayed, and 
replacing the displayed text, I could go as far as being able to set 
any number of params with what looked like a single param, by 
interacting with the user in a "20 questions" sort of way.  Not very 
user friendly to do that, but it gives the flavor of the flexibility.
> 
> 
>   The down side is that it is a bit convoluted in the AFL.  
However, I tried to modularize the AFL as much as possible and made a 
set of functions to do do most of the dirty work.
> 
> 
>   I only put a single param in a persistent var (disk file).  I 
read in the disk params only once on the first AFL pass, and cache 
them into static variables after that.  When I change a param, I save 
it in both the static var and the persistent var (write through).  I 
did this for performance reasons, though I did not try it without the 
cache to see how much difference it really makes.  List params are 
tricker, as I had to save the text and find and save the selected 
item value.
> 
> 
>   I did identify params as belonging to a specific chart by 
including GetChartID() as part of the name.
> 
> 
>   The example is mostly written so that only open params will have 
their default values reset on command, but I did show one example of 
how to have some or all params reset to default by a Reset All Params 
button.
> 
> 
>   The test AFL is not exhaustive for all param types, but covers 
the basics.  
> 
> 
>   There are some drawbacks to doing the params this way:
> 
> 
>   1.  AFL does not have a command to do a "Reset all"  of the 
params after the current pass is complete, so the user must manually 
click the "Reset all" button on the params window to make his param 
reorganization selection take effect.  This is a big drawback!
> 
> 
>   2.  The existing section labels may be removed, but the 
replacement labels can not be colored to stand apart as section 
dividers.
> 
> 
>   3.  I don't have a good way to initialize everything for the 
first time.  The user has to open all menus and "Reset Visible 
Params".  I had to choose to reset all params or just expanded 
params.  To do both I would have had to duplicate the defaults in two 
different places, and I choose the version I thought would be more 
useful.
> 
> 
>   4.  Because each param is stored in a separate file and for each 
chart, the folder can have quite a few files in it.  If a chart or 
param is no longer used, the extra param files have to be manually 
cleaned up.  One idea is to use a separate folder for each chart just 
for params.
> 
> 
>   I have uploaded the example AFL to the Amibroker Library as it 
was a bit bulky to post here.  It is named Flexible Parameter Layouts.
> 
> 
>   Please try it out and comment on the implementation and add more 
ideas to improving it.
> 
> 
>   Dennis
> 
> 
> 
>   On Jul 20, 2007, at 11:21 PM, Dennis Brown wrote:
>     I just saw this and downloaded the files and read the docs.  
This is  
>     the answer to something I had wanted to do --hierarchical and  
>     conditional params.  All we need now to make it fully seamless, 
is to  
>     have an AFL command that resets the params.  Extremely cool.  
Of  
>     course it would be even better if it was built in so everyone 
could  
>     use it without a lot of AFL expertise.
> 
> 
>     Dennis
> 
> 
>     On Jul 20, 2007, at 6:51 PM, dan_public@xxx wrote:
> 
> 
>       A strong second on Bill Barnards param statements!   I 
thought I'd  
>       done some decent work with Params until I saw Bill's 
presentation  
>       last year.  It was a jaw-dropper.   I realized that I was 
just  
>       scratching the surface.   I immediately glommed onto his 
techniques  
>       and implemented them in my own work.
> 
> 
>       Yes, Bill is the MASTER param dude!  He makes AB stand up 
and  
>       dance!  And it's not just some minor coding tricks.   His 
approach  
>       the caching parameters and reusing them is a completely new  
>       approach.  He thinks WAY outside the box.
> 
> 
>       Regards,
> 
> 
>       Dan.
>




Please note that this group is for discussion between users only.

To get 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/