欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件公式模型编写问题提交 → 如何解决后台成交指令延迟的问题

   

欢迎使用金字塔普通技术服务论坛,您可以在相关区域发表技术支持贴。
我司技术服务人员将优先处理 VIP客服论坛 服务贴,普通区问题处理速度慢,请耐心等待。谢谢您对我们的支持与理解。    


  共有2745人关注过本帖树形打印复制链接

主题:如何解决后台成交指令延迟的问题

帅哥哟,离线,有人找我吗?
c100011612
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:标准版用户 帖子:97 积分:0 威望:0 精华:0 注册:2016/5/20 15:15:48
如何解决后台成交指令延迟的问题  发帖心情 Post By:2021/5/18 15:22:58    Post IP:101.229.123.224[显示全部帖子]

先附上整理的PleaceOrder  和 DEBUGFILE:

2021-05-18 14:29:02.086    【后台】JD09 TBuyShort 第 68 行 策略:<JD0709> 出现信号
2021-05-18 14:29:02.086    【后台】JD07 TBuyShort 已成功触发下单操作 价格:0.000000 数量:1 类型:1 账户: 品种:JD07
2021-05-18 14:29:02.086    【后台】下单已发送
2021-05-18 14:29:02.086    【后台】JD09 TBuy 第 69 行 策略:<JD0709> 出现信号
2021-05-18 14:29:02.086    【后台】JD09 TBuy 已成功触发下单操作 价格:0.000000 数量:1 类型:1 账户: 品种:JD09
2021-05-18 14:29:02.086    【后台】下单已发送

2021-05-18 14:29:02.096    【后台】JD09 运行结束
2021-05-18 14:29:02.096    【下单】JD07 价0.000000 量1 买卖1 类型1 开平0 账户13818882796 Formula 1
2021-05-18 14:29:02.096    【下单】已提交,订单ID :302319918
2021-05-18 14:29:02.096    【下单】JD09 价0.000000 量1 买卖0 类型1 开平0 账户13818882796 Formula 1
2021-05-18 14:29:02.096    【下单】已提交,订单ID :302319919

2021-05-18 14:29:02.176    【指令】收到回报指令 ID = 302319918
2021-05-18 14:29:02.176    【回报】13818882796 : JD07 - 已报单 1 价格:4337 开 卖

2021-05-18 14:29:02.236    【指令】收到Order回报指令 ID = 302319918 Status = 3

2021-05-18 14:29:02.296    【指令】收到回报指令 ID = 302319919
2021-05-18 14:29:02.296    【回报】13818882796 : JD09 - 已报单 1 价格:4784 开 买

2021-05-18 14:29:02.375    【后台】JD09 运行结束

2021-05-18 14:29:02.403    【指令】收到成交回报指令 ORDERID = 302319918
2021-05-18 14:29:02.403    【回报】13818882796 : jd2107 - 已成交 1 价格:4338 开 卖
2021-05-18 14:29:02.403    【回报】13818882796 : jd2107 - 全部成交 1
2021-05-18 14:29:02.403    【指令】收到Order回报指令 ID = 302319919 Status = 3

2021-05-18 14:29:02.522    【指令】收到成交回报指令 ORDERID = 302319919
2021-05-18 14:29:02.522    【回报】13818882796 : jd2109 - 已成交 1 价格:4783 开 买
2021-05-18 14:29:02.522    【后台】JD09 TSellShort 第 51 行 策略:<JD0709> 出现信号
2021-05-18 14:29:02.522    【回报】13818882796 : jd2109 - 全部成交 1
2021-05-18 14:29:02.522    【后台】JD07 TSellShort 已成功触发下单操作 价格:0.000000 数量:1 类型:1 账户: 品种:JD07
2021-05-18 14:29:02.522    【后台】实际账户持仓 1
2021-05-18 14:29:02.522    【后台】下单已发送
2021-05-18 14:29:02.522    【后台】JD09 运行结束

2021-05-18 14:29:02.532    【下单】JD07 价0.000000 量1 买卖0 类型1 开平1 账户13818882796 Formula 1
2021-05-18 14:29:02.532    【下单】已提交,订单ID :302319920

DEBUGFILE:

2021-05-18 14:29:02.363    近多持 0
2021-05-18 14:29:02.363    近空持 0
2021-05-18 14:29:02.363    远多持 0
2021-05-18 14:29:02.363    远空持 0
2021-05-18 14:29:02.363    做多价差 -442.00
2021-05-18 14:29:02.363    做空价差 -445.00
2021-05-18 14:29:02.365    上轨 -447.12
2021-05-18 14:29:02.365    下轨 -476.33
2021-05-18 14:29:02.365    U1 -454.42
2021-05-18 14:29:02.365    D1 -469.03

2021-05-18 14:29:02.482    近多持 0
2021-05-18 14:29:02.482    近空持 1
2021-05-18 14:29:02.482    远多持 0
2021-05-18 14:29:02.482    远空持 0
2021-05-18 14:29:02.482    做多价差 -442.00
2021-05-18 14:29:02.482    做空价差 -445.00
2021-05-18 14:29:02.482    上轨 -447.12
2021-05-18 14:29:02.482    下轨 -476.33
2021-05-18 14:29:02.482    U1 -454.42
2021-05-18 14:29:02.482    D1 -469.03

2021-05-18 14:29:02.603    近多持 0
2021-05-18 14:29:02.603    近空持 0
2021-05-18 14:29:02.603    远多持 1
2021-05-18 14:29:02.603    远空持 0
2021-05-18 14:29:02.603    做多价差 -442.00
2021-05-18 14:29:02.603    做空价差 -445.00
2021-05-18 14:29:02.603    上轨 -447.12
2021-05-18 14:29:02.603    下轨 -476.33
2021-05-18 14:29:02.603    U1 -454.42
2021-05-18 14:29:02.603    D1 -469.03

我套利的时候是碰到上轨,就触发下单:开空jd07,开多jd09,但是收到回报指令和收到成交回报2个合约是时间有先后的,比如上面红色部分是14:29:02.403  收到JD07开空成交的结果,而 14:29:02.522 才收到JD09开多成交的结果,但是我公式里面有个检查是否有单腿持仓的代码,这个代码是 14:29:02.482 也就是2笔成交结果之间执行的,所以可以的DEBUGfile上看到轮询的时候发现是单腿,然后就自动执行了平仓操作。
我这是用金字塔模拟碰到的,基本上下10单有9单是这种情况成交了马上被检查出来单腿瞬间又被平掉,
但是同样的代码在simnow上面就没有碰到,请问怎么解决这个问题,我检查单腿是用     近多持:=tbuyholdingex('',近月合约,1);  这个函数去检查的,有没有什么办法是不用看持仓,而是看下单指令来判断是否单腿

 回到顶部
帅哥哟,离线,有人找我吗?
c100011612
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:标准版用户 帖子:97 积分:0 威望:0 精华:0 注册:2016/5/20 15:15:48
  发帖心情 Post By:2021/5/18 16:13:23    Post IP:101.229.123.224[显示全部帖子]

VBA只知道点皮毛,弄的话又是系统工程了。
如果我在平单腿合约时候加上 这个条件呢?应该有用把:

 TISREMAINEX(0,'',近月合约)=0 AND TISREMAINEX(0,'',远月合约)=0;

近月和远月合约在所有方向上无未成交委托时候才触发平单腿指令

 回到顶部
帅哥哟,离线,有人找我吗?
c100011612
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:标准版用户 帖子:97 积分:0 威望:0 精华:0 注册:2016/5/20 15:15:48
  发帖心情 Post By:2021/5/18 17:06:03    Post IP:101.229.123.224[显示全部帖子]

看不太明白:

检验未成交委托是给予回报指令,还是Order回报指令,还是成交回报指令?这几个有先后的

我看了下基本上都要在300ms-400ms左右,所以如果刷新间隔低于这个时间,大概率是会出错的,是么
[此贴子已经被作者于2021/5/18 17:07:14编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
c100011612
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:标准版用户 帖子:97 积分:0 威望:0 精华:0 注册:2016/5/20 15:15:48
  发帖心情 Post By:2021/5/18 18:03:16    Post IP:101.229.123.224[显示全部帖子]

琢磨了下,既然错误是发生在检查单腿的指令里面,那么就设个条件,检查 TSUBMITEX(0,'',近月合约) 如果大于3秒未成交,就撤单,并且平远月合约,不用实时监测仓位和未成交委托了。反正单腿只会出现在未成交委托这种情况下的。

 回到顶部