请教EA回测问题:如何计算年化收益率?

 

回测完成后,软件给出的报告中没有收益率,自己计算则只能算出总收益率,如下:

double OnTester()
   {
    return 100 * TesterStatistics(STAT_PROFIT) / TesterStatistics(STAT_INITIAL_DEPOSIT);
   }

但是想要计算“年化收益率”,看帮助文件ENUM_STATISTICS里并没用关于回测起止时间的信息。

求助高手:

怎么获取 回测起止时间的信息?或是有没有别的什么方法得到年化收益率?

 

自己回一下。

想了个临时的办法,扫描历史订单来找出起始结束时间,代码如下:

double OnTester()
   {
//交易年数
    CDealInfo mDealInfo;
    datetime FirstTime,LastTime;
    FirstTime=LastTime=0;
    HistorySelect(0,TimeCurrent());
    for(int i=0; i<HistoryDealsTotal(); i++)
       {
        if(mDealInfo.SelectByIndex(i)==false)
            continue;
        if(FirstTime==0)
            FirstTime=mDealInfo.Time();
        LastTime=mDealInfo.Time();
       }
    double TradeYears=(double)(LastTime-FirstTime)/(60*60*24*365.0);
//总收益率
    double ProfitRate=TesterStatistics(STAT_PROFIT)/TesterStatistics(STAT_INITIAL_DEPOSIT);
//年化收益率
    double AnnualReturn=MathPow(1.0+ProfitRate,1.0/TradeYears)-1.0;
    return AnnualReturn;
   }

勉强能用,但缺点是起止时间不是很准,如果策略没出信号可能会差老多。

最好还是能拿到跑回测时设置的时间,哪位大佬给个招啊,拜谢!!!

 

弄个全局变量记录开始时间,最后ontester获取下最后时间,这不就有时间段了嘛

不想用全局 变量 就弄个类,用静态变量记录也一样

原因: