【TBQuant3-新手指南】为什么策略交易盈亏和账户盈亏看上去不同

为什么策略交易盈亏和账户盈亏看上去不同

情景再现,策略交易做了一次交易后,用户查看策略交易的状态和账户状态。

用户注意到两边字段的盈亏不同(这里以当日盈亏为例)


2.事实上,用户也通过回测和账户成交发现了两者不同。(与小标题1内有一些时间差)

第一个图是回测图,买入价格是95360,卖出价格是96420

第二个图是账户交易图(该案例使用了模拟),买入价格是95820,卖出价格是96260

该现象可以总结为:我的回测那么好,为什么实盘交易后少了这么多!



该模拟使用代码:


//------------------------------------------------------------------------
// 简称: test_1126_2025
// 名称: 
// 类别: 策略应用
// 类型: 用户应用
// 输出: Void
//------------------------------------------------------------------------
Params
    //此处添加参数

Vars
    //此处添加变量

Defs
    //此处添加策略函数
    
Events
    //此处实现事件函数
    
    //初始化事件函数,策略运行期间,首先运行且只有一次
    OnInit()
    {
        SubscribeBarCounts("lc2605.GFEX","1m",1);
        SetOrderMap2MainSymbol();
        SetOrderPriceOffset(3);
    }


    //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组
    OnBar(ArrayRef<Integer> indexs)
    {
        if(CurrentBar==1)
        {
            buy(1,low);
        }
        else if(BarsSinceEntry==5)
        {
            sell(0,high);
        }
    }

//------------------------------------------------------------------------
// 编译版本    2025/11/26 135626
// 版权所有    wangkaiming
// 更改声明    TradeBlazer Software保留对TradeBlazer平台
//            每一版本的TradeBlazer策略修改和重写的权利
//------------------------------------------------------------------------


问题分析:


1.图表交易(策略交易,策略研究)的盈亏与账户成交产生的盈亏是独立的。

图表交易(策略交易,策略与那家)的盈亏字段由图表信号产生,

那么信号来源于哪里?

信号由代码中buysell体系对应的开平仓产生

而注意到上方的代码使用了 buy(1,low)  sell(0,high)的形式,显然这是一种极致的偷价写法

但是在图表上,图表回测会严格按照图表信号产生的价格生成交易回测报告。即你写high就按high来成交,不会考虑成交不到的问题。

账户成交则不同,不论模拟还是实盘,返回的是交易系统撮合的结果。

实盘模拟使用的一般是偏移式报价,成交即是对手盘,相对真实。

所以大多情况下账户盈利必然小于图表回测。

下图为偷价图,最低买入,最高卖出

2.谁是真实的?

绝大多情况下,账户反应的永远是真实情况,如果你发现账户与图表差很多,那么错误大概率出在策略或设置上。

该案例中偷价较为极端容易发现,实际操作中,隐蔽的偷价更难发现,需要用户擦亮眼睛,也不要太相信只有回测的策略。


3.编写没有问题的策略,会不会也产生差异?

会,但是误差小,并且该误差实际是市场冲击成本等,并非属于编程范围的问题。

编写无误的策略可以准确的用图表信号表达即时可成交的价位。

也就是编写水平越高,图表信号和实际成交的误差越小。


【TBQuant3-新手指南】如何查看回测报告?
【新手福利】1分钟上手量化交易!零基础量化从实操入手,终结散户困境!(内附新手指南)
关于持仓盈亏和当日盈亏
为什么同一商品,同周期,累计盈亏不同
升级到1.4.2.0后,策略交易的当日盈亏和持仓盈亏合计错误
关于当日盈亏和逐笔盈亏的计算
关于账户透视里的盈亏问题
账户持仓的当日盈亏和账户资金的当日盈亏显示不一致
请问实时资金曲线和盈亏资金曲线有什么不同?
工作区的盈亏与账户透视的盈亏不一致

😀