全部 智大领峰 TBQuant功能 TBL语言 TB开户 问答专区 高手圈 其他
已解决
关于编写中遇到的困惑
2022-05-30 22:33

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]);
        DT = Close[1] - longAvgEntryPrice;
        KT = Close[1] - shortAvgEntryPrice;
        Commentary("DT" + Text(DT));
        PlotNumeric("MA",MA);
        PlotNumeric("MK",MK);
        Commentary("longPositionProfit=" + Text(longPositionProfit));
        
        If(MarketPosition == 0 && SC == True)
            Buy(1,Open);
        If(MarketPosition == 1 && DT*200 >= 10000)
            Sell(1,Open);
        
    }

老师你好,我最近在测试一个逻辑,发现一个问题,就是比如我做股指ic,DT = Close[1] - longAvgEntryPrice;我用上一个收盘价减去多头建仓价格,得到的就是多头的盈亏点差,ic一个点两百块,我用算出来的点差DT乘于两百,这样算出来的不应该是ic多头的持仓盈亏吗?我用这个作为平仓条件,结果发现都是在同一根k线上开仓又平仓了,我知道又函数可以直接计算多头持仓盈亏,提问只是想知道,这样算多头持仓盈亏哪里错了,谢谢!!!

TB_Futures

程序写错了吧

Numeric K1(5);
Numeric K2(20);

应该写在 Params 里,不是在 Vars 里。

2022-05-30 22:47
tblaocai

平仓后,DT的值不要做处理吗?您看看没持仓的时候算出来的DT是多少

2022-05-31 07:28
a2420956784
@tblaocai

好的,感谢指点

2022-06-01 14:55
Bryan2020

你在开仓之前就去计算DT,这时候longAvgEntryPrice;永远是0,那么你计算出来的DT永远大于10000,所以刚开仓立刻就平了。

你把  DT = Close[1] - longAvgEntryPrice; 这句移动到开仓语句之后,平仓语句之前试试看。

2022-05-31 08:42
kyover
@Bryan2020

正解。可以试试在开仓语句前commentary一下DT

2022-05-31 08:50
a2420956784
@Bryan2020

好的,感谢指点!

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