回测中遇到的困惑

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线上吗?还是我的编写逻辑有什么问题,大家指点一下

关于编写中遇到的困惑
回测遇到的2个问题 请老师解答下
跨周期策略在回测时遇到的问题
在模拟平台,测试运行算法交易策略,回测遇到问题
A_SendOrder编程中的困惑,从旗舰版到quant代码搬家后遇到的一个编程问题
编写程序中遇到的问题
关于settrigerbarclose在使用中遇到的问题
实盘和回测的问题
困惑中!onbaropen 和 onbarclose 不能订阅 BAR数据?
关于信号问题的困惑

代码是有执行顺序的,先输出dt的值,再对dt值进行修改,你觉得这样对吗?

可以试试在DT = Close[1] - longAvgEntryPrice;这句前后 分别commentary输出 看看

是的,还是老师厉害,我忽略了细节

一个函数内的代码是从上往下执行的

我租看了下,你输出在前赋值在后

好的,感谢指点