4.63K 浏览
0

函数set_target_volume确实提供了很多方便,但是我想知道成交价格是如何的?以做多为例,如果在调用api.wait_update()后,发现最新价格是5000,此时调用出set_target_volume(10),我想确认:

如果成交,是保证这10手的成交价格低于等于5000,否则就不成交,

如果成交了6手,之后在5010时我又调用set_target_volume(10),是不是剩下的4手保证成家价格低于等于5010

是这样吗?

west 已回答的问题 2020年3月2日
0

若下单后未成交,并且检测到行情价发生改变,这两种情况会引起撤单重下:

1 如果是买单,并且新下单价大于这个order的下单价;

2 如果是卖单, 并且新下单价小于这个order的下单价。

新下单价的获取规则:

优先使用买一/卖一价,如果没有这两个价格,则使用quote的last_price(最新价),如果没有最新价则使用quote的pre_close(昨收盘价)。

west 已回答的问题 2020年3月2日
0

TargetPosTask只保证调整到目标持仓,并不对下单价格做限制。

若多次调用set_target_volume()并且设置同一个目标持仓,其结果相当于只调用了一次,。详细规则都可以在文档里面看到

https://doc.shinnytech.com/tqsdk/latest/reference/tqsdk.lib.html#tqsdk.lib.TargetPosTask

https://doc.shinnytech.com/tqsdk/latest/usage/targetpostask.html

lua gua 发表新评论 2020年3月9日

如果我需要的TargetPosTask成交的数量必须不差于某个价格,否则就等。 那么有没有什么机制,参数能够保证这一点? 原因是:还是以上这个例子,成交价有没有可能到5500,甚至6000呢? 从理论上讲也是可能的,而这时必须要确保不能发生的。

当有买一/卖一价时,它始终使用买一/卖一价下单。若价格变化时还未成交,就撤单重新用新的买一/卖一价下单

如果你要限定价格,可以用insert_order()函数。请注意insert_order()不能和TargetPosTask混用

insert_order确实有限价功能,但不支持目标仓位功能,如果能够在TargetPos函数中支持一下就理想了。