Pardon the hyperbole on the use of the word "bonanza," but at least you saw
it as stuff rather than fluff. :-)) Your new IO feature sounds pretty cool,
Fred. I'll be interested in seeing it once it is finished. One of the
features of the suggestion I wrote was to use the putative function as a
type of positionscoring technique for selecting tickers for a given system
or for selecting a system among several. Will your IO implementation be able
to do this sort of thing?

Al V.

On 7/27/08, Fred Tonetti <[EMAIL PROTECTED]> wrote:
>
>    Bonanza ? … Maybe … Although features like this are more stuff than
> fluff which unfortunately isn't for the most part what typically attracts
> newbies …
>
>
>
> I actually have something like what you suggest half implemented for a new
> feature I did in IO v3.0 which was to allow the WF period length to be
> predicated on performance metric related conditions occurring in the OOS.
> From your original description it would appear this is the same sort of
> thing you are looking to do possibly with some additional twists to it.
>
>
>  ------------------------------
>
> *From:* [email protected] [mailto:[EMAIL PROTECTED] *On
> Behalf Of *Al Venosa`
> *Sent:* Sunday, July 27, 2008 7:02 PM
> *To:* [email protected]
> *Subject:* Re: [amibroker] Re: How to save Metrics in Composites for
> Individual BTs
>
>
>
> Thanks, Fred, but I haven't a clue how to do OLE/Automation, and I wonder
> how many AB users out there really do. That's why I was calling for a
> simple, non-painful, easy-to-use AFL function that would do this for the
> non-techie/programmer, and if it existed, AB would be the only trading
> software out there that would be able to do this. I bet It would be a profit
> bonanza for TJ.
>
> Al V.
>
>
>
> On 7/27/08, *Fred Tonetti* <[EMAIL PROTECTED]> wrote:
>
> I agree that this would be nice to have as directly as you have laid out …
>
>
>
> However, while somewhat painful, one can with Equity() and a list of trades
> calculate all the performance metrics as of any given bar or if you prefer
> as arrays of values …
>
>
>
> This could be fully automated with OLE/Automation
>
>
>  ------------------------------
>
> *From:* [email protected] [mailto:[EMAIL PROTECTED] *On
> Behalf Of *Al Venosa
> *Sent:* Sunday, July 27, 2008 11:29 AM
> *To:* [email protected]
> *Subject:* [amibroker] Re: How to save Metrics in Composites for
> Individual BTs
>
>
>
> Having read this interesting thread begun last week, I'd like to
> continue it with a follow-on question/comment that I think, if TJ were
> to implement it, would make Amibroker infinitely more useful to the
> actual trader. It would be awesome if we could have simple-to-use AFL
> functions that read AFL backtest metrics directly. Adding a lookback
> period would make them immensely more useful as indicators. What I am
> suggesting is to have a function like:
>
> getEquityMetric ( MetricName,LookBackPeriod);
>
> The example code provided by TJ gives us only the cumulative value of
> each metric. What I'm suggesting is to go beyond this one cumulative
> output number and create metric arrays with a specified lookback
> period. Then, when we plot these metrics in an indicator, we can
> visually look for correlations with price charts. For example, one
> could plot winning trades/month and see if they change with trend. Or
> one could look at AverageWin or UPI and see how that changes with
> trend. These are all correlations that are best analyzed visually (in
> an Indicator) but can ONLY be analyzed if we have access to these
> metrics for variable lookback periods.
>
> Another use for these functions would be as a positionscore in a
> trading system. What better way is there to select tickers/systems to
> trade than the actual performance of those tickers or systems? The
> procedure may require a preliminary scan/exploration to create metric-
> composites that can be read by the trading system and used as a
> positionscore. Critical here is that the metric can be read for any
> specified lookback period, i.e. 10 bars, 100 bars, etc. So the
> function must have a period argument, which is the most important
> factor. We already have equity(). Why not expand this with the other
> backtest metrics?
>
> Undoubtedly, all this can be implemented using the custom backtester,
> but this solution probably excludes >95% of all AmiBroker users.
>
> TJ, would this be possible to implement?
>
> Al Venosa
>
> --- In [email protected] <amibroker%40yahoogroups.com>, "Herman"
> <[EMAIL PROTECTED]> wrote:
> >
> > Thank you TJ :-) you saved the day once more !
> >
> > Great stuff.
> >
> > If someone is wondering why I wanted this program... You can design
> trading
> > systems and use performance metric arrays as powerful Indicators. It
> is
> > somewhat similar to trading the equity curve. Price arrays can have
> > qualities that can make your trading systems fail but that are
> undetectable
> > with traditional indicators.
> >
> > However, you can design small trading systems that target specific
> price
> > characteristics, like patterns, trends, volatility, cycles, etc.
> Using the
> > code below gives you statistical information about these
> characteristics in
> > a form that can be plotted, and be used in other trading systems.
> >
> > Thanks everyone for your help!
> > have a great trading day!
> > herman
> >
> > // Demo trading system
> > Short = Cover = 0;
> > Buy = Cross( MACD(), Signal() );
> > Sell = Cross( Signal(), MACD() );
> > // Using the CBT to retrieve/save metrics
> > if( Status("action") == actionBacktest ) StaticVarSetText( "Symbol",
> > Name() );
> > SetOption( "UseCustomBacktestProc", True );
> > if ( Status( "action" ) == actionPortfolio )
> > {
> > bo = GetBacktesterObject();
> > bo.PreProcess();
> > MyHistStat1 = Null;
> > for ( bar = 0; bar < BarCount; bar++ )
> > {
> > bo.ProcessTradeSignals( bar );
> > stats = bo.GetPerformanceStats( 0 );
> > MyHistStat1[ bar ] = stats.GetValue( "UlcerIndex" ); // any metric
> can be
> > retrieved
> > }
> > bo.PostProcess();
> > AddToComposite( MyHistStat1, "~~~UI_" + StaticVarGetText
> ( "Symbol" ), "X",
> > atcFlagEnableInPortfolio | atcFlagDefaults );
> > }
> > PlotForeign( "~~~UI_"+Name(), "UlcerIndex Historical", colorRed,
> > styleLine );
> >
> > -----Original Message-----
> > From: [email protected] <amibroker%40yahoogroups.com> [mailto:
> [email protected] <amibroker%40yahoogroups.com>]On
> Behalf
> > Of Tomasz Janeczko
> > Sent: July 25, 2008 5:49 AM
> > To: [email protected] <amibroker%40yahoogroups.com>
> > Subject: [SPAM]Re: [SPAM]Re: [amibroker] How to save Metrics in
> Composites
> > for Individual BTs
> >
> >
> > Herman,
> >
> > You forgot the CORRECTION I mentioned:
> >
> > StaticVarSetText( "Symbol", Name() ); must NOT be called
> unconditionally,
> > but THIS way:
> >
> > =====================================================================
> > if( Status("action") == actionBacktest ) StaticVarSetText( "Symbol",
> > Name() );
> > ==============================================================
> >
> > Best regards,
> > Tomasz Janeczko
> > amibroker.com
> > ----- Original Message -----
> > From: Herman
> > To: [email protected] <amibroker%40yahoogroups.com>
> > Sent: Friday, July 25, 2008 11:36 AM
> > Subject: RE: [SPAM]Re: [amibroker] How to save Metrics in Composites
> for
> > Individual BTs
> >
> >
> > Still NO GO.
> > I am loading the code in the AA, select a watchlist, run an
> Individual
> > backtest, and Refresh the WorkSpace. I get the BT report with
> individual
> > results. I get two Composites in my Composites Group. One is named
> > ~~~EQUITY, the other ~~~UI_~~~EQUITY. The first makes sense but the
> second
> > indicates that the StaticVar does not return the ticker name.
> >
> > >> It appears that in this code the function Name() returns
> "~~~EQUITY" and
> > does not return the name for the ticker being tested, it behaves as
> if the
> > ~~~EQUITY composite is the ticker being tested.
> > Can anyone confirm this?
> >
> > Thanks again!
> > Herman
> >
> > // Demo trading system
> > Short = Cover = 0;
> > Buy = Cross( MACD(), Signal() );
> > Sell = Cross( Signal(), MACD() );
> > // Using the CBT to retrieve/save metrics
> > StaticVarSetText( "Symbol", Name() );
> > SetOption( "UseCustomBacktestProc", True );
> > if ( Status( "action" ) == actionPortfolio )
> > {
> > bo = GetBacktesterObject();
> > bo.PreProcess();
> > MyHistStat1 = Null;
> > for ( bar = 0; bar < BarCount; bar++ )
> > {
> > bo.ProcessTradeSignals( bar );
> > stats = bo.GetPerformanceStats( 0 );
> > MyHistStat1[ bar ] = stats.GetValue( "UlcerIndex" ); // any metric
> can be
> > retrieved
> > }
> > bo.PostProcess();
> > AddToComposite( MyHistStat1, "~~~UI_" + StaticVarGetText
> ( "Symbol" ), "X",
> > atcFlagEnableInPortfolio | atcFlagDefaults );
> > }
> > PlotForeign( "~~~UI_"+Name(), "UlcerIndex Historical", colorRed,
> > styleLine );
> >
> >
> >
> >
> > -----Original Message-----
> > From: [email protected] <amibroker%40yahoogroups.com> [mailto:
> [email protected] <amibroker%40yahoogroups.com>]On
> Behalf
> > Of Tomasz Janeczko
> > Sent: July 25, 2008 4:08 AM
> > To: [email protected] <amibroker%40yahoogroups.com>
> > Subject: [SPAM]Re: [amibroker] How to save Metrics in Composites for
> > Individual BTs
> >
> >
> > It will work OK.
> > Individual backtest *is* portfolio backtest but just portfolio
> consisting of
> > one symbol at a time.
> >
> > Note that one should select "Individual Backtest" (not "OLD"
> backtest) from
> > AA->Backtest drop down.
> >
> > One correction though
> > StaticVarSetText( "Symbol", Name() );
> >
> > should be called only when NOT in portfolio mode
> >
> > so
> >
> > if( Status("action") == actionBacktest ) StaticVarSetText( "Symbol",
> > Name() );
> >
> > // Demo trading system
> > Short = Cover = 0;
> > Buy = Cross( MACD(), Signal() );
> > Sell = Cross( Signal(), MACD() );
> >
> > // Using the CBT to retrieve/save metrics
> > SetOption( "UseCustomBacktestProc", True );
> > if ( Status( "action" ) == actionPortfolio )
> > {
> > bo = GetBacktesterObject();
> > bo.PreProcess();
> > MyHistStat1 = Null;
> > for ( bar = 0; bar < BarCount; bar++ )
> > {
> > bo.ProcessTradeSignals( bar );
> > stats = bo.GetPerformanceStats( 0 );
> > MyHistStat1[ bar ] = stats.GetValue( "UlcerIndex" ); // any metric
> can be
> > retrieved
> > }
> > bo.PostProcess();
> > AddToComposite( MyHistStat1, "~~~UI_" + StaticVarGetText( "Symbol" )
> +
> > "_HISTORICAL", "X", atcFlagEnableInPortfolio | atcFlagDefaults );
> > }
> >
> > ----- Original Message -----
> > From: Paul Ho
> > To: [email protected] <amibroker%40yahoogroups.com>
> > Sent: Friday, July 25, 2008 4:45 AM
> > Subject: RE: [amibroker] How to save Metrics in Composites for
> Individual
> > BTs
> >
> >
> > First of all. You use Status{"action") == actionPortfolio,
> individual
> > backtest wont go through there.
> >
> >
> >
> > From: [email protected] <amibroker%40yahoogroups.com> [mailto:
> [email protected] <amibroker%40yahoogroups.com>]
> On Behalf
> > Of Herman
> > Sent: Friday, 25 July 2008 9:31 AM
> > To: [email protected] <amibroker%40yahoogroups.com>
> > Subject: Re: [amibroker] How to save Metrics in Composites for
> Individual
> > BTs
> >
> >
> > Thank you Tomasz, but this code still does not work. I changed the
> StaticVar
> > to the Text type.
> >
> > Can you help some more ... ? or does anyone else see the problem?
> >
> > TIA,
> > Herman
> >
> > StaticVarSetText( "Symbol", Name() );
> > // Demo trading system
> > Short = Cover = 0;
> > Buy = Cross( MACD(), Signal() );
> > Sell = Cross( Signal(), MACD() );
> >
> > // Using the CBT to retrieve/save metrics
> > SetOption( "UseCustomBacktestProc", True );
> > if ( Status( "action" ) == actionPortfolio )
> > {
> > bo = GetBacktesterObject();
> > bo.PreProcess();
> > MyHistStat1 = Null;
> > for ( bar = 0; bar < BarCount; bar++ )
> > {
> > bo.ProcessTradeSignals( bar );
> > stats = bo.GetPerformanceStats( 0 );
> > MyHistStat1[ bar ] = stats.GetValue( "UlcerIndex" ); // any metric
> can be
> > retrieved
> > }
> > bo.PostProcess();
> > AddToComposite( MyHistStat1, "~~~UI_" + StaticVarGetText( "Symbol" )
> +
> > "_HISTORICAL", "X", atcFlagEnableInPortfolio | atcFlagDefaults );
> > }
> > PlotForeign( "~~~UI_HISTORICAL", "UlcerIndex Historical", colorRed,
> > styleLine );
> >
> > -----Original Message-----
> > From: [email protected] <amibroker%40yahoogroups.com> [mailto:
> [email protected] <amibroker%40yahoogroups.com>]On
> Behalf
> > Of Tomasz Janeczko
> > Sent: July 24, 2008 3:00 PM
> > To: [email protected] <amibroker%40yahoogroups.com>
> > Subject: [SPAM]Re: [amibroker] How to save Metrics in Composites for
> > Individual BTs
> >
> >
> > The same code. The only distinction is that you need to run
> INDIVIDUAL
> > backtest
> > and use Static variable to save name
> >
> > StaticVarSet Text ("Symbol", Name() );
> > // Demo trading system
> > Short = Cover = 0;
> > Buy=Cross( MACD(), Signal() );
> > Sell=Cross( Signal(), MACD() );
> >
> > // Using the CBT to retrieve/save metrics
> > SetOption("UseCustomBacktestProc", True );
> > if( Status("action") == actionPortfolio )
> > {
> > bo = GetBacktesterObject();
> > bo.PreProcess();
> > MyHistStat1 = Null;
> >
> > for(bar=0; bar < BarCount; bar++)
> > {
> > bo.ProcessTradeSignals( bar );
> > stats = bo.GetPerformanceStats( 0 );
> > MyHistStat1[ bar ] = stats.GetValue("UlcerIndex"); // any metric
> can be
> > retrieved
> > }
> >
> > bo.PostProcess();
> > AddToComposite( MyHistStat1, "~~~UI_" + StaticVarGet Text
> ("Symbol") +
> > "_HISTORICAL", "X", atcFlagEnableInPortfolio | atcFlagDefaults );
> > }
> >
> > PlotForeign("~~~UI_HISTORICAL", "UlcerIndex Historical", colorRed,
> > styleLine );
> >
>
>
>
>   ------------------------------
>
> I am using the free version of SPAMfighter for private users.
> It has removed 512 spam emails to date.
> Paying users do not have this message in their emails.
> Try SPAMfighter <http://www.spamfighter.com/len> for free now!
>
>
>
> ------------------------------
> I am using the free version of SPAMfighter for private users.
> It has removed 512 spam emails to date.
> Paying users do not have this message in their emails.
> Try SPAMfighter <http://www.spamfighter.com/len> for free now!
>  
>

Reply via email to