Params
Vars
Series<Numeric> MA;
Series<Numeric> MK;
Series<Numeric> DT;
Series<Numeric> KT;
Series<Bool> SC;
Series<Bool> XC;
Numeric K1(5);
Numeric K2(20);
Events
OnBar(ArrayRef<Integer> indexs)
{
MA = AverageFC(Close,K1);
MK = AverageFC(Close,K2);
SC = CrossOver(MA[1],MK[1]);
XC = CrossUnder(MA[1],MK[1]);
Commentary("DT" + Text(DT));
PlotNumeric("MA",MA);
PlotNumeric("MK",MK);
Commentary("longPositionProfit=" + Text(longPositionProfit));
If(MarketPosition == 0 && SC == True)
Buy(1,Open);
DT = Close[1] - longAvgEntryPrice;
KT = Close[1] - shortAvgEntryPrice;
If(MarketPosition == 1 && DT*200 >= 10000)
Sell(1,Open);
If(MarketPosition == 1 && DT*200 <= -10000)
Sell(1,Open);
}
大家好,我在回测这个策略的时候,发现一个问题,就是计算DT的值,我用上一根k线的收盘价减去多头的建仓价格,得出DT的点差,这个在计算的时候没有什么问题,我发现的问题是,我用前一根k线的收盘价计算出来的,输出的值不是输出在当前这根k线上,而是输出在下一根k线上。正常来说,按前一根k线算出来的值,不是应该输出在当前这根k线上吗?还是我的编写逻辑有什么问题,大家指点一下
代码是有执行顺序的,先输出dt的值,再对dt值进行修改,你觉得这样对吗?
可以试试在DT = Close[1] - longAvgEntryPrice;这句前后 分别commentary输出 看看
是的,还是老师厉害,我忽略了细节
一个函数内的代码是从上往下执行的
我租看了下,你输出在前赋值在后
好的,感谢指点