loop this through bar array and you can write the values to text file
SetCustomBacktestProc("");
if( Status("action") == actionPortfolio )
{
bo = GetBacktesterObject();
bo.Backtest(1);
expectancy = SumProfit = 0;
NumTrades = 0;
fw = fopen(..................... , "w" )
for(i=0;i<barcount;i++)
{
expectancy = SumProfit = 0;
NumTrades = 0;
for( trade = bo.GetFirstTrade(); trade; trade = bo.GetNextTrade() )
{
SumProfit = SumProfit + trade.GetProfit();
NumTrades++;
expectancy = SumProfit/trade.TickSize/trade.PointValue/NumTrades;
}
for( trade = bo.GetFirstOpenPos(); trade; trade = bo.GetNextOpenPos() )
{
SumProfit = SumProfit + trade.GetProfit();
NumTrades++;
expectancy = SumProfit/trade.TickSize/trade.PointValue/NumTrades;
}
if(fw) fputs(................................. , fw );
}
if(fw) fclose(fw);
for( trade = bo.GetFirstTrade(); trade; trade = bo.GetNextTrade() )
{
SumProfit = SumProfit + trade.GetProfit();
NumTrades++;
expectancy = SumProfit/trade.TickSize/trade.PointValue/NumTrades;
trade.AddCustomMetric("Expectancy-Pips", expectancy );
}
for( trade = bo.GetFirstOpenPos(); trade; trade = bo.GetNextOpenPos() )
{
SumProfit = SumProfit + trade.GetProfit();
NumTrades++;
expectancy = SumProfit/trade.TickSize/trade.PointValue/NumTrades;
trade.AddCustomMetric("Expectancy-Pips", expectancy );
}
bo.AddCustomMetric( "Total Expectancy-Pips", expectancy );
bo.ListTrades();
}
--
Cheers
Graham Kav
AFL Writing Service
http://www.aflwriting.com
On 23/01/2008, ChrisB <[EMAIL PROTECTED]> wrote:
>
> Graham/others
>
> 2 a.m. now.
> Spent the night going through Herman's IntroToAtc.pdf and help files.
>
> I am probably way off track here, but ....
>
> Seems to me I still need to feed an array into the AddtoComposite(
> array,...) function.
> It also seems to me that to do this I need to somehow extract this from
> the CBT code for expectancy:
>
> ************
> SetCustomBacktestProc("");
> if( Status("action") == actionPortfolio )
> {
> bo = GetBacktesterObject();
> bo.Backtest(1);
>
> expectancy = SumProfit = 0;
> NumTrades = 0;
>
> for( trade = bo.GetFirstTrade(); trade; trade = bo.GetNextTrade() )
> {
> SumProfit = SumProfit + trade.GetProfit();
> NumTrades++;
> expectancy = SumProfit/trade.TickSize/trade.PointValue/NumTrades;
> trade.AddCustomMetric("Expectancy-Pips", expectancy );
> }
>
> for( trade = bo.GetFirstOpenPos(); trade; trade = bo.GetNextOpenPos()
> )
> {
> SumProfit = SumProfit + trade.GetProfit();
> NumTrades++;
> expectancy = SumProfit/trade.TickSize/trade.PointValue/NumTrades;
> trade.AddCustomMetric("Expectancy-Pips", expectancy );
> }
> bo.AddCustomMetric( "Total Expectancy-Pips", expectancy );
> bo.ListTrades();
> }
>
> *********
>
> I would have thought then that if I could extract the Expectancy from the
> CBT into an array I might just as easily be able to plot this.
> Looking at the COM documents does not make it immediately apparent how I
> do this.(mea culpa as a non programmer).
>
> Apart from the AddCustomMetric (command, if that's what it's called) which
> tells the CBT to send the expectancy to the Backtester Report , is there
> anything else I can do get this from CBT bit into regular AFL array variable
> so I can just plot it?
>
> In the meantime I am happy to just export this from the backtester into an
> Excel spreadsheet for the moment.
>
> Regards
>
> ChrisB
>
>
> ChrisB wrote:
>
> Thanks Graham
>
> Of course!
> from the Backtester results I can see the column with the expectancy
> figures.
> Then I just export this to csv and plot this in Excel which is what I will
> do for the moment.
> I will look at the Addtocomposite function again to see if I can extract
> that data into a composite symbol.
> I guess though if I am only getting 30 trades per year on a given strategy
> that will be an array that will need padding of data, and may not look too
> pretty.
>
> Regards
>
> ChrisB
>
> Graham wrote:
>
> You could try exporting the expectancy to a text file and plot from
> this, or create a composite symbol
>
>
> --
> Cheers
> Graham Kav
> AFL Writing Service
> http://www.aflwriti ng.com <http://www.aflwriting.com>
>
> On 21/01/2008, *ChrisB* <[EMAIL PROTECTED] net.au <[EMAIL PROTECTED]>>
> wrote:
>
> Promised attachment:
>
>
> ChrisB wrote:
>
> I will try and re-phrase the question:
>
> Anyone have any pointers as to how to Plot the running expectancy after
> I have run a Backtest?
>
> In Excel when I walk forward manually, I plot my Expectancy like this:
>
> Currently I place these trade on a Demo account to acquire the data for
> entries and exits.
> This is quite time consuming.
> I want to plot similar or the same in a pane after running a Backtest.
> When Positive and rising switch back to trading this strategy.
> When Negative and or Falling, stop using this strategy.
>
> Any pointers in the right direction would be appreciated, but I suspect
> this may involve more programming than
> I am capable of and may wish to farm this out.
>
> Regards
>
> ChrisB
> ChrisB wrote:
> >
> > The help files give code for including Expectancy in the backtest and
> > Optimization.
> >
> > I am not familiar with the working of the CBT. I can get the expectancy
> > to appear in a column in the backtester
> >
> > How would I extract the expectancy figures into an array so that I can
> > plot this?
> >
> > Regards
> >
>
>
>
>
>
>
>
> _
>
>
>
>