我用一个策略单元测试了“策略指标”(详见:TB量化学院-期货期权程序化与量化系统自动交易软件金融领航者门户网站 - 开拓者金融网 (tbquant.net)),例如:
1、净值 = 1 + 净利润/初始权益。在这里,净利润有两个定义:
(1)Portfolio_TotalProfit (总盈亏)
(2)Portfolio_NetProfit(平仓净盈亏)
根据数据分析,(1) = (2) + PositionProfit。
为此,我用公式(1)计算一个净值na,为什么计算出来的na与测试报告的na存在一定差异?其他指标也类似,TB是否有一个严谨的关于策略评价指标的计算代码demo?
我测了下,并没有问题
一个要手续费和滑点设成0,因为最后可能存在补平,会有一点损耗
还有就是权益代码输出要在代码最后,这样输出的才是正确结果
//------------------------------------------------------------------------
// 简称: DualMA
// 名称: 双均线交易系统
// 类别: 公式应用
// 类型: 内建应用
//------------------------------------------------------------------------
Params
Numeric FastLength(5);// 短期指数平均线参数
Numeric SlowLength(20);// 长期指数平均线参数
Vars
Series<Numeric> AvgValue1;
Series<Numeric> AvgValue2;
Events
OnBar(ArrayRef<Integer> indexs)
{
AvgValue1 = AverageFC(Close,FastLength);
AvgValue2 = AverageFC(Close,SlowLength);
PlotNumeric("MA1",AvgValue1);
PlotNumeric("MA2",AvgValue2);
If(MarketPosition <>1 && AvgValue1[1] > AvgValue2[1])
{
Buy(0,Open);
}
If(MarketPosition <>-1 && AvgValue1[1] < AvgValue2[1])
{
SellShort(0,Open);
}
Commentary("Portfolio_TotalProfit ="+text(Portfolio_TotalProfit ));
Commentary("Portfolio_NetProfit ="+text(Portfolio_NetProfit ));
Commentary("PositionProfit ="+text(PositionProfit ));
Commentary("2=3 ="+text(PositionProfit +Portfolio_NetProfit));
}
//------------------------------------------------------------------------
// 编译版本 GS2010.12.08
// 版权所有 TradeBlazer Software 2003-2025
// 更改声明 TradeBlazer Software保留对TradeBlazer平
// 台每一版本的TradeBlazer公式修改和重写的权利
//------------------------------------------------------------------------
我来看下