使用A_SellShort和A_BuyToCover后开平互转问题

【现象概述】最近一直在写订单流策略,今天调试的时候,发现使用【A_SellShort】和【A_BuyToCover】的【空头下单操作】后,在【OnOrder事件域】通过打印ord结构体的成员combOffset,发现TBQ会发生自动【开平互转】的问题,将所有【空头操作】转成【反向的多头操作】,但是在【账户透视】的【委托成交明细】却是可以正常显示【空头操作】。同时观察【多头下单操作】使用【A_Buy】和【A_Sell】却不会发生【开平互转】。【账户透视的委托成交明细】【空头下单部分操作的代码】【OnOrder事件域中打印ord结构体详情】【TBQ系统设置→交易设置→风险与规则→交易规则:开平互转】虽然我的TBQ默认设置启用了开平互转,但是上面截图模拟盘运行品种是【RM409.CZCE】,不是中金所的品种。【问题】上述空头操作出现的开平互转现象,是否是因为使用了【A_SellShort】和【A_BuyToCover】导致的?如果改用【A_SendOrderEx】是否会解决?为何【账户透视】显示的【开平】与【A_SellShort】和【A_BuyToCover】的下单行为保持一致TBQ内部机制又是如何识别具体的某个持仓头寸到底是【多头持仓】还是【空头持仓】?因为我的策略也需要识别当前持仓是属于【多头持仓】还是【空头持仓】,并做出不同的操作,原先是通过【OnOrder事件域】的【ord结构体】的2个成员【ord.side】和【ord.combOffset】取值组合来判断是【多头持仓】还是【空头持仓】,但是现在【空头持仓】全部开平互转为【多头持仓】了,请问还有那些可以正确判定的方法?【其他参考】https://www.tbquant.net/forumDetail?cur=tbquan&id=2435&cid=undefinedhttps://www.bilibili.com/read/cv17662024/?spm_id_from=333.999.0.0https://kdocs.cn/l/cv25RhZzEz4V

嘿嘿 看我发现了什么

回复:晕倒,原来是这个问题啊!年纪大了,眼睛看花了!

回复:谢谢,王老师,排除这个问题的原因后,看来我的程序,是其他地方有错误。

Vars //此处添加变量 Global array<Integer> a1;Defs //此处添加策略函数 Events //此处实现事件函数 //初始化事件函数,策略运行期间,首先运行且只有一次 OnInit() { data1.SetBasePeriod(1m); CreateTimer(5000,0,5); } OnTimer(Integer Id, Integer millSecs) { A_SellShort(Symbol,1,close,a1); A_BuyToCover(Symbol,1,close,a1); } //Bar更新事件函数,参数indexs表示变化的数据源图层ID数组 OnOrder(OrderRef ord) { string a = IIFString(ord.side == enum_buy ,买入,卖出); string s = IIFString(ord.combOffset == Enum_Entry ,开仓,平仓); print(ord.side:+a); print(ord.combOffset:+s); }

回复:王老师,我就特别想知道,今天是周六白天,你是用了什么魔法,可以驱动OnOrder事件域,打印出信息的?免费吗?真的是羡慕啊,你的TBQuant可以同时显示超过4个以上的图层K线,现在连周六、周日7*24小时都能驱动订单流事件域。

图看不到啊确实开平互转是平台系统规则里的内容,默认是只对中金所处理的,rm这种品种默认不会开平互转的建议整理一段能复现问题的代码,发上来我复现试试

换了个账号?

图好像挂了ord.side和ord.combOffset 判断买入和卖出 +开仓标志平仓标志订单里的结果是实际的结果,不开平互转(或者讲已经是转好的结果了)A_SellShort 和A_buy也是一套 应该不存在单边的情况盘中我们再看下

回复:https://kdocs.cn/l/cv25RhZzEz4V这里有图有真相