4.01K 浏览
0

函数set_target_volume反复发生问题,主要表现就是: 无论怎样调用函数(包括每次参数相同后不同),目标仓位就是不改变。 我也逐步调试并且确定是调用了wait_update函数。

因为我测试的是多个品种,每个品种都有其TargetPosTask来管理, 我觉得会不会和task背后的多线程,多进程有关系。

你们有没有对于TargetPosTask中symbol的数量限制? 假设是在同一个进程,同一个线程里?

我觉得如果是单个的品种的简单环境里,这个函数可能是工作正常的。但是更加复杂的情形,例如在同一个api下的多线程,多进程,多品种是否安全

因为这个函数与.InsertOrderTask 一样是基础函数,太过重要,希望能够彻底解决这个老问题。否则真不敢用作实盘交易。

chengxiaohui321 已回答的问题 2020年7月12日

补充一点: 不知是不是个线索,似乎这种问题更容易出现在买一卖一价格拉开的时候,例如超过了1个最小变动价位的时候。
但是,函数的规则我记得是: 当有买一/卖一价时,它始终使用买一/卖一价下单。若价格变化时还未成交,就撤单重新用新的买一/卖一价下单

按照这个规则,即使买一卖一价格拉得再开,如果价格变化发现没有成交,也会撤单自动用新的买一卖一价格下单,所以也不应该发生。 况且我发现有时候等了几个小时也未成交。

再有,有时我会按照同一个数量反复调用set_target_volume(),因为不确定内部的执行状态是否完成,按照帮助文件,多次调用(同一个参数)与一次调用效果一样,那应该至少是没有副作用的