376 浏览
0

使用TargetPosTask遇到这样一个问题,比如当前有持仓,达到某个价位时本应由TargetPosTask来全部平仓,但是人工提前挂了平仓单,因为是挂单,没有及时成交,之后满足了TargetPosTask的平仓条件,此时TargetPosTask并不会删除手工的挂单,TargetPosTask只会下开仓单来对冲挂单。如果此时刚好又可用资金不足,就会导致持仓不能顺利被平仓而面临风险。遇到这种情况怎么处理,有没有办法区别出未成交挂单是不是由TargetPosTask发出的(是不是老版本里有个user_id可以设置),如果在调用TargetPosTask之前一股脑删除所有挂单,不知是否会影响到调用TargetPosTask的删单追单,如果能区别挂单的来源,就只删除非TargetPosTask的下单即可。

李思恒 已回答的问题 2023年7月10日
0

这个函数最最关键的一点是,绝对不能和其他的下单方式混用如手动下单或insert_order,原因是他的判断依据只有净持仓, 前面两种方式都会影响净持仓,所以在你运行这个函数期间不建议做任何的上述两种操作。挂单的来源如果只是通过看委托单信息是看不到的,这个可能需要你做一些本地的记录处理,不是那么的简单,本身target函数的目的就是直接达到目标仓位,不管内部如何实现的。最后再强调下这个函数调整的净持仓,所以对于你第一句话用作全部平仓这种情形,建议再推敲下具体的逻辑,set_volume(0)不代表全部平仓,只代表净持仓为0。

李思恒 已回答的问题 2023年7月10日