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

[amibroker] "issue" in 5.2x betas still unresolved


  • Date: Sun, 21 Feb 2010 18:08:02 -0000
  • From: "wml67" <ywml@xxxxxxxxxxx>
  • Subject: [amibroker] "issue" in 5.2x betas still unresolved

PureBytes Links

Trading Reference Links

Tomasz,

I installed the current beta as you suggested and found that a bug/inconsistency I reported a while ago (http://finance.groups.yahoo.com/group/amibroker/message/143245) is still there.

In a nutshell: in ShowArrows context Status("actionEx") is set to 
actionExAAShowArrows as expected BUT Status("action") is set to 0 (zero), which is an undocumented value. 

Insert the following line in any indicator code to reproduce:

_TRACE("Action = " + WriteVal(Status("action"), 1.0) +", ActionEx = " + WriteVal(Status("actionEx"), 1.0));

This will screw up user code that relies on Status("action") returning a documented value, as it did screw up mine (see link above). 

I ended up having this in my code:

if((Status("action") == actionBacktest) OR (Status("action") == 0))
 {

Cheers,

Sergei

 

--- In amibroker@xxxxxxxxxxxxxxx, Tomasz Janeczko <groups@xxx> wrote:
>
> Hello,
> 
> Wrong approach.
> 
> Instead use user-definable backtest / optimization charts that are 
> available since version 5.26.
> It does everything you want without scripting and without need to worry 
> about synchronization.
> 
> Excerpt from read me:
> 
> CHANGES FOR VERSION 5.26.0 (as compared to 5.25.0)
> Implemented user-definable report charts
> 
> Now it is possible for the user to create any number of charts that will 
> be automatically generated and included in the backtest report.
> 
> To add user-defined chart to the report, simply save your chart formula 
> under "Report Charts" folder.
> 
> That's all.
> 
> Any formula present in the "Report Charts" folder will be executed after 
> completion of the backtest using ~~~EQUITY as selected symbol.
> 
> The beta ships with 3 sample charts:
> a) portfolio equity
> b) underwater equity (drawdown)
> c) profit table
> 
> The charts are displayed in alphabetical order (using file name as a 
> chart name).
> 
> 
> Best regards,
> Tomasz Janeczko
> amibroker.com
> 
> On 2010-02-21 15:06, wml67 wrote:
> >
> >
> > Hi, I'm trying to take snapshots of resulting equity curves during 
> > Optimization.
> >
> > Here's a snippet of AA code:
> >
> > // ....
> >
> > MAlb = Optimize("MA lookback",15,5,30,5);
> >
> > // ....
> >
> > if (Status("action") == actionPortfolio)
> >
> > {
> >
> > bo = GetBacktesterObject();
> >
> > optPass = "MAlb" + MAlb; // optPass is unique string, containing info 
> > on this optimizer pass
> >
> > StaticVarSetText("SVoptPass", optPass);
> >
> > bo.Backtest();
> >
> > oAB = CreateObject("Broker.Application");
> >
> > oAB.RefreshAll();
> >
> > // lots of processing, studying trades, creating custom metrics, etc
> >
> > // .................
> >
> > }
> >
> > A snippet of code from the indicator I have running in the active window:
> >
> > optPass = StaticVarGetText("SVoptPass");
> >
> > Plot(Foreign("~~~Equity", "C"), " Equity");
> >
> > _N(Title = optPass); // title of the chart = static var set in AA code
> >
> > oAB = CreateObject("Broker.Application");
> >
> > oAW = oAB.ActiveWindow;
> >
> > rc = oAW.ExportImage(optPass + ".png", 800, 600); // name of the file 
> > = static var set in AA code
> >
> > The idea is obvious: when the data is ready, AA code generates 
> > RefreshAll(), indicator code is thus invoked, it plots the curve and 
> > exports the image. The name of the file and the title on the chart 
> > should be equal.
> >
> > In fact this approach sorta works, but not entirely as expected. 
> > Firstly, most of the times filename and the chart title don't match, 
> > eg, filename is MAlb10 and the title of the chart is MAlb15. Sometimes 
> > one chart with the same title appears several times under different 
> > filenames. Some charts seem to be caught in mid-rendering or 
> > something, etc etc.
> >
> > Now I should say I tried all methods of invoking RefreshAll() and 
> > ExportImage() I know -- the one shown in the snippets above (for sheer 
> > simplicity), its modification using CreateStaticObject, also tried this:
> >
> >   OWSHShell = CreateObject( "WScript.Shell" );
> >
> >   rc = OWSHShell.Run( "myscript.vbs", 4, False );
> >
> > , tried all possible combinations of these... The results varied a 
> > little, but unfortunately none was reliable. I moved the code around, 
> > tried moving ExportImage() part from indicator into AA code (very end 
> > of Status("action") == actionPortfolio block) -- same stuff... I also 
> > had this wild thought: maybe indicator code is somehow being 
> > re-entered and enclosed it in the code below, but this didn't help 
> > either:
> >
> > if (NOT Nz(StaticVarGet("_snapshot_running")))
> >
> > {
> >
> > StaticVarSet("_snapshot_running", True);
> >
> > // main indicator code
> >
> > StaticVarSet("_snapshot_running ", False);
> >
> > }
> >
> > I came to the conclusion that most function calls are asynchronous, 
> > RefreshAll() is not guaranteed to be honored when it's issued, 
> > rendering is not guaranteed to be finished when the next line of code 
> > after Plot() is being executed and so forth. That's why AFL is so 
> > quick, I guess...
> >
> > Now, if only I had a way to suspend the AA code for a sec yielding 
> > processor time to other threads (like indicator), I could solve my 
> > problem... (Tomasz? Not all code is real-time!) Synchronous version of 
> > Plot() would also help.
> >
> > Any ideas, anyone? It's a shame to be so close to the solution yet 
> > unable to reach it!!!
> >
> > Many thanks!
> >
> >
> >
> >
>




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

**** 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

<*> 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:
    amibroker-digest@xxxxxxxxxxxxxxx 
    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/