开平互转功能的一个疑问。

实测:隔夜,净头寸为0,持仓多10手,空10手,隔夜后,准备开多12手,A函数发单,程序实际发单:平空10手,开多2手;又价格不成交,下单索引撤单,只会撤掉平空10手,开多2手没有自动撤掉。

请问这个是bug还是需要自己去撤软件自动分开的单子。。。如果需要自己撤软件自动分开的单子,可否给出例子?

哪里设置开平互转?如何停止开平互转
开平仓互转的问题
开平互转无法平昨仓
启用开平互转是什么意思
股指开平互转后MarketPosition是什么状态
使用A_SellShort和A_BuyToCover后开平互转问题
【TBQuant3-新手指南】为什么平仓变成开仓?开平互转和净头寸交易介绍
关于股指的开平互转,保证金率如何正确设置?
1.3.5.3新功能疑问
请教一下TBQuant开平仓互转中关于日内多次开仓保证金不足的问题

刚跟研发确认了下,刘老师给您截图说明的订单返回的OrderID是一个数组,如果一笔单拆分成了多个订单,根据数组里的报单索引是可以进行跟踪的。就是整个订单管理的逻辑就要您自己捋清楚了。

嗯嗯,给个例子呗.谢谢

之前没写过,基本要素都有了,剩下就是自己怎么记录和跟踪这些数据的问题。

测错了。。不好意思

现在就是要复现出,一笔单被拆分成两笔单的例子,然后看看是否能取到这两笔单子的报单编号

可以的。。应该是用K线组件的时候,编译了公式需要刷新一下才会加载新的脚本。。。

这个问题,有点复杂度。我只能根据自己的理解,说下看法,供您参考。系统底层的开平仓互转程序,应该只是负责根据委托单的开平和方向以及持有的昨仓等,按照既定的规则,对单子实际发出应该做什么方向,是做开仓还是平仓,如果同时有平仓和开仓,平仓应该发出多少手,开仓应该发出多少手。。。等等这些进行处理,处理完了任务就完成了。

至于撤单和这个就没什么关系了,因为如果有撤单,上层程序会处理,并且会把新的委托单发过来,底层程序再根据新的委托单重复上面的处理过程而已。

您现在的要求是,底层程序不但要负责对收到的单子做开平仓的上述处理,还要负责上层调用者的情况,这在计算机系统设计中是不太可能的,底层只知道上一层调用者告诉它的东西,其他东西它是不知道。所以,上层订单的跟踪这部分还是需要您自己来处理的。现在倒是需要通过测试搞清楚下,A函数写的策略,是否能够根据发单时的索引号,跟踪到被开平仓互转处理过的子委托单,只要能跟踪到,那就能够处理,只是细节需要好好梳理清楚而已。

 

A函数的写的策略,订单编号是能够跟踪到的。例:                            A_SendOrderEx(symbol,Enum_Buy,Enum_Exit,BearExitLots_GL,BearExitPrice_GL,orderIDS);    发单后,我直接用一个全局变量保存orderIDS[0],正在实盘交易,量还不小。能否给一个这种订单被拆分后跟踪orderIDS的例子呢,场景是单合约下跑了2个公式,这两个公式在那一刻都有报单。
                                

如果一笔单子被拆成多笔了,就不但要记录orderIDS[0],还要记录orderIDS[1]....

我再测试一下。有可能是测试错了。。

如果你要自己做订单管理 那就要自己把握订单流状态

a函数报单现在可以返回报单索引 用这个报单索引可以接下订单流剩下的工作

软件管拆分不管撤单啊。。。能否把拆分开的报单按照一个索引管理呢。。。

当然不能了 一个委托单是一个独立个体

系统平台的订单管理工具都是基础工具 为了防止意外风险不会做很复杂的功能

要想实现复杂的订单管理肯定是要自己写