全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
已解决
回测中遇到的困惑
2022-06-02 10:29

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

wangkaiming

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

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

2022-06-02 10:32
a2420956784
@wangkaiming

好的,感谢指点

2022-06-06 09:40
kyover

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

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

2022-06-02 10:56
a2420956784
@kyover

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

2022-06-06 09:41
您未登录,请先 登录注册 后发表评论
顶部