解决办法我现在想到的有三个:
- 如果是TargetPosTask的话,会自动追单
- 用insert_order函数会返回提交的订单,然后在每次quote更新的时候检查是否到10秒,如果到了还没成交就把之前的订单取消再次下单
- 使用 InsertOrderUntilAllTradedTask, 文档在这里有写:https://doc.shinnytech.com/tqsdk/latest/reference/tqsdk.lib.html#tqsdk.lib.InsertOrderUntilAllTradedTask
使用1最简单,使用2操作最繁琐但是不用什么复杂的技术,3最灵活但是需要了解python的 async调用机制。
另外,关于3有一个示例在这可以尝试看一下,这段代码其实就是 TargetPosTask里的调用片段:
https://github.com/shinnytech/tqsdk-python/blob/master/tqsdk/lib.py#L205-L221
lookis 发表新评论 2020年7月28日
我也很想用第一种方案,但是第一种方案不是按照账户持仓和目标持仓对比啊。如果策略1目标持仓是3,策略2目标持仓是5,那么最后不是只按照其中一个策略的目标持仓进出仓的吗?这个有解决办法吗?
我也遇到这个问题了,暂时没啥特别快的解决方案,我现在做法是用另一个合约……比方说rb2010和rb2101……
然后在实盘也是在不断完善我自己的框架ing,但感觉工程量不小
或者要不试一下中间做一个代理呢……两个策略把自己要下单的手数存db然后消息队列通知一下,专门做个代理层去合并不同策略的单子数量,只是在计算收益的时候又很麻烦……
感觉弄麻烦了,还不如直接使用insert_order……然后在订单id上做一些区分
望回复,急