4.67K 浏览
0

最近才知道TargetPosTask是在之后的每次 wait_update 时才发出下单指令,我想知道具体的下单指令是怎样发出的,

就比如说wait_update接收到tick1,执行计算,满足条件的话task记录1手,然后继续其余的代码,然后循环回到wait_update,此时是立刻发出下单指令,还是等待500ms后的下一个tick2,??

另外TargetPosTask默认是对价下单,但是突破策略中,突破后的行情是很急的,可能对价都追不上,再加上等待下一个tick。。。tick本身已经是交易所主机的抽样了。。

这方面文华做的比较凶狠彻底,他们定义的市价就是涨停价,跌停价。。

所以希望TargetPosTask能自己设置价格(虽然我已经换用insert_order了。。),还有就是希望本地程序计算满足条件后可以立刻发送下单指令,1ms都不想等。。

可不可以把wait_update发送数据的部分分出来。。在TargetPosTask后就立刻执行。。

另外发现simnow问题多多。抛弃它!。开多纯碱时居然提示CTP:找不到合约。还有什么资金不足。。快期模拟一切正常!但是快期的成交通知缺个成交价格。

还有能不能把服务器的通知log下来??小白不会弄。。。

还有期货市场已经是机构主宰的狩猎场。小散要团结互助啊!??

robogame 已回答的问题 2020年10月27日
0

循环回到wait_update之后是立刻发出下单,如果不想等的话在执行完 TargetPosTask 之后可以直接调用 api.wait_update() 这样就实现了1ms都不等的方案。

因为TargetPosTask仅仅是个工具辅助下单的,所以只实现了大多数情况下会使用的场景,并且在使用的时候尽可能地从安全角度出发(因为不是所有人都会完整理解TargetPosTask的工作逻辑),所以采用的是对价下单,试想一下如果一个用户下单量特别大然后TargetPosTask还使用涨跌停的话就很容易被坑,因此相比于用户实实在在地亏损,难用一点至少还好一些,特别地,如果想控制下单的细节的话,完全可以使用更底层的 insert_order 接口来实现

如果开多开空的时候有找不到合约,那就先排查一下代码问题,看看是不是大小写弄错或者交易所弄错,资金不足也是同样的排查过程

xuansuokeji 发表新评论 2020年10月27日

谢谢解答!我现在用insert_order了。小小散不担心砸破地板哈哈哈。在循环里再调用wait_update好像会出错退出,忘记了,现在没再测试了。
那个找不到纯碱的合约就是simnow的问题,我同一时间同样策略的快期模拟正常的,不管它了

您正在查看3个答案中的1个,单击此处查看所有答案。