实测:隔夜,净头寸为0,持仓多10手,空10手,隔夜后,准备开多12手,A函数发单,程序实际发单:平空10手,开多2手;又价格不成交,下单索引撤单,只会撤掉平空10手,开多2手没有自动撤掉。
请问这个是bug还是需要自己去撤软件自动分开的单子。。。如果需要自己撤软件自动分开的单子,可否给出例子?
刚跟研发确认了下,刘老师给您截图说明的订单返回的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函数报单现在可以返回报单索引 用这个报单索引可以接下订单流剩下的工作
软件管拆分不管撤单啊。。。能否把拆分开的报单按照一个索引管理呢。。。
当然不能了 一个委托单是一个独立个体
系统平台的订单管理工具都是基础工具 为了防止意外风险不会做很复杂的功能
要想实现复杂的订单管理肯定是要自己写