自己回一下。
想了个临时的办法,扫描历史订单来找出起始结束时间,代码如下:
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获取下最后时间,这不就有时间段了嘛
不想用全局 变量 就弄个类,用静态变量记录也一样
回测完成后,软件给出的报告中没有收益率,自己计算则只能算出总收益率,如下:
但是想要计算“年化收益率”,看帮助文件ENUM_STATISTICS里并没用关于回测起止时间的信息。
求助高手:
怎么获取 回测起止时间的信息?或是有没有别的什么方法得到年化收益率?