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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件金字塔软件问题提交 → get_orders_id函数似乎存在重大瑕疵,请予以排查

   

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


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

主题:get_orders_id函数似乎存在重大瑕疵,请予以排查

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


加好友 发短信
等级:新手上路 帖子:38 积分:0 威望:0 精华:0 注册:2020/2/15 22:44:32
get_orders_id函数似乎存在重大瑕疵,请予以排查  发帖心情 Post By:2020/4/9 11:27:16 [显示全部帖子]

我使用get_orders_id函数获取订单成交情况,日志如下:

2020-04-09 10:58:35.133    订单968:buy_open QQ10002389,数量:4,价格:0.4709,submitted已报单
2020-04-09 10:58:35.148    订单968:buy_open QQ10002389,数量:4,价格:0.4709,tradeing已成交
2020-04-09 10:58:35.149    订单968:buy_open QQ10002389,数量:4,价格:0.4709,filled全部成交
2020-04-09 10:58:35.188    订单969:sell_open QQ10002391,数量:4,价格:0.0026,submitted已报单
2020-04-09 10:58:35.203    订单969:sell_open QQ10002391,数量:4,价格:0.0026,tradeing已成交
2020-04-09 10:58:35.204    订单969:sell_open QQ10002391,数量:4,价格:0.0026,filled全部成交
2020-04-09 10:58:35.234    订单970:sell_open QQ10002357,数量:4,价格:0.0009,submitted已报单
2020-04-09 10:58:35.250    订单970:sell_open QQ10002357,数量:4,价格:0.0009,tradeing已成交
2020-04-09 10:58:35.251    订单970:sell_open QQ10002357,数量:4,价格:0.0009,filled全部成交
2020-04-09 10:58:35.283    订单971:buy_open QQ10002366,数量:4,价格:0.5314,submitted已报单
2020-04-09 10:58:35.299    订单971:buy_open QQ10002366,数量:4,价格:0.5314,tradeing已成交
2020-04-09 10:58:35.299    订单971:buy_open QQ10002366,数量:4,价格:0.5314,filled全部成交

上述订单在10:58:35秒已全部成交,然后我在30秒钟后即10:59:06调用get_orders_id函数,分别使用了以下几种方法:
v=get_orders_id(id)
"订单:"+str(v.order_id)+"委托量:%d" %v.quantity +"已成交:%d" %v.filled_quantity +"未成交:%d" %v.unfilled_quantity

2020-04-09 10:59:06.002    订单:968委托量:4已成交:0未成交:4
2020-04-09 10:59:06.002    订单:969委托量:4已成交:0未成交:4
2020-04-09 10:59:06.003    订单:970委托量:4已成交:0未成交:4
2020-04-09 10:59:06.003    订单:971委托量:4已成交:0未成交:4

问题就在30秒钟之前订单明明已全部成交,而.filled_quantity获取成交数量仍然为0!

后来,我又把时间扩大到60秒,如下:
2020-04-09 11:06:41.094    订单1460:buy_open QQ10002411,数量:4,价格:0.5665,submitted已报单
2020-04-09 11:06:41.155    订单1461:sell_open QQ10002412,数量:4,价格:0.0017,submitted已报单
2020-04-09 11:06:41.176    订单1462:sell_open QQ10002357,数量:4,价格:0.0009,submitted已报单
2020-04-09 11:06:41.203    订单1460:buy_open QQ10002411,数量:4,价格:0.5665,tradeing已成交
2020-04-09 11:06:41.204    订单1460:buy_open QQ10002411,数量:4,价格:0.5665,filled全部成交
2020-04-09 11:06:41.254    订单1463:buy_open QQ10002366,数量:4,价格:0.5345,submitted已报单
2020-04-09 11:06:41.274    订单1461:sell_open QQ10002412,数量:4,价格:0.0017,tradeing已成交
2020-04-09 11:06:41.275    订单1461:sell_open QQ10002412,数量:4,价格:0.0017,filled全部成交
2020-04-09 11:06:41.322    订单1463:buy_open QQ10002366,数量:4,价格:0.5345,tradeing已成交
2020-04-09 11:06:41.323    订单1463:buy_open QQ10002366,数量:4,价格:0.5345,filled全部成交
2020-04-09 11:06:41.370    订单1462:sell_open QQ10002357,数量:4,价格:0.0009,tradeing已成交
2020-04-09 11:06:41.371    订单1462:sell_open QQ10002357,数量:4,价格:0.0009,filled全部成交

2020-04-09 11:07:42.134    订单:1460委托量:4已成交:0未成交:4下单量:4
2020-04-09 11:07:42.134    订单:1461委托量:4已成交:0未成交:4下单量:4
2020-04-09 11:07:42.135    订单:1462委托量:4已成交:0未成交:4下单量:4
2020-04-09 11:07:42.136    订单:1463委托量:4已成交:0未成交:4下单量:4

上述结果仍然.filled_quantity获取成交数量为0!

请管理员检查,是我引用函数的问题还是函数本身有瑕疵?
编程过程中,等结果!

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


加好友 发短信
等级:新手上路 帖子:38 积分:0 威望:0 精华:0 注册:2020/2/15 22:44:32
  发帖心情 Post By:2020/4/9 11:29:51 [显示全部帖子]

第2个例子中的“下单量:4”是我设定的一个输出,无关问题,请忽略

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


加好友 发短信
等级:新手上路 帖子:38 积分:0 威望:0 精华:0 注册:2020/2/15 22:44:32
  发帖心情 Post By:2020/4/9 14:10:54 [显示全部帖子]

我完全复制了楼上的代码在我本地测试,开仓正常,但退出策略时显示错误。

执行Python脚本时遇到错误。
 策略: <test1>
 运行: <策略test1>
 类型: AttributeError 
   行: 24 
 描述: 'NoneType' object has no attribute 'filled_quantity'

也就是orr = get_orders_id (context.idd,"")没有返回值,导致上述出错。

这难道是我本地金字塔设置有问题吗?

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


加好友 发短信
等级:新手上路 帖子:38 积分:0 威望:0 精华:0 注册:2020/2/15 22:44:32
  发帖心情 Post By:2020/4/9 14:25:51 [显示全部帖子]

我的版本是金字塔V5.21,用的是信达证券 

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


加好友 发短信
等级:新手上路 帖子:38 积分:0 威望:0 精华:0 注册:2020/2/15 22:44:32
  发帖心情 Post By:2020/4/9 15:33:24 [显示全部帖子]

我刚才测试的RB00,就是期货吧,显示错误。
我开通的是期权模拟,可能在期权模拟下测试期货不行吧。

我使用程序化交易只是想做期权的,麻烦程序员排查一下期权的get_orders_id函数有没有问题?我一直在测试,始终有问题。昨天还好,有几个订单的get_orders_id反馈是正常的,那几个订单从下单到查询get_orders_id相差20秒左右,我以为需要这个时间差才能让get_orders_id读出数据,所以今天测试设置的都是30秒钟后查询,不想今天使用.filled_quantity方法都不对,查的数据总是0,但账户早已全部成交。

麻烦再排查下什么情况。

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


加好友 发短信
等级:新手上路 帖子:38 积分:0 威望:0 精华:0 注册:2020/2/15 22:44:32
  发帖心情 Post By:2020/4/9 16:29:19 [显示全部帖子]

好,我把版本恢复回来。
这样,我先测试下期货模拟吧,看看值

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


加好友 发短信
等级:新手上路 帖子:38 积分:0 威望:0 精华:0 注册:2020/2/15 22:44:32
  发帖心情 Post By:2020/4/10 10:21:48 [显示全部帖子]

汇报一下:
1、我把原来版本都删除了,然后下载信达5.02版本重新安装
2、测试期货,完全复制了上边测试代码,运行模拟,显示开仓成功,账户栏持仓有10张,未成交委托没有。
3、点停止策略,没有任何输出,也没有报错
4、再重新启动策略,持仓增加到20张,停止策略仍然没有输出。
5、代码中增加log_debug_info输出到日志,运行策略持仓增加到30张,停止策略后消息窗口仍然没有输出,但在日志中有输出,输出已成交量10张,输出正确。

重点我还是想测试期权filled_quantity是否有效,于是切换到期权模拟账户:
6、运行我的期权策略,测试get_orders_id的filled_quantity方法,输出到消息和输出到日志,两个输出都没问题,都有输出,如下:

2020-04-10 10:10:01.991    订单49:buy_open QQ10002389,数量:10,价格:0.4767,submitted已报单
2020-04-10 10:10:02.052    订单49:buy_open QQ10002389,数量:10,价格:0.4767,tradeing已成交
2020-04-10 10:10:02.054    订单49:buy_open QQ10002389,数量:10,价格:0.4767,filled全部成交
2020-04-10 10:10:02.073    订单50:sell_open QQ10002391,数量:10,价格:0.0018,submitted已报单
2020-04-10 10:10:02.125    订单51:sell_open QQ10002358,数量:10,价格:0.0006,submitted已报单
2020-04-10 10:10:02.155    订单50:sell_open QQ10002391,数量:10,价格:0.0018,tradeing已成交
2020-04-10 10:10:02.157    订单50:sell_open QQ10002391,数量:10,价格:0.0018,filled全部成交
2020-04-10 10:10:02.189    订单51:sell_open QQ10002358,数量:10,价格:0.0006,tradeing已成交
2020-04-10 10:10:02.190    订单51:sell_open QQ10002358,数量:10,价格:0.0006,filled全部成交
2020-04-10 10:10:02.224    订单52:buy_open QQ10002367,数量:10,价格:0.6238,submitted已报单
2020-04-10 10:10:02.255    订单52:buy_open QQ10002367,数量:10,价格:0.6238,tradeing已成交
2020-04-10 10:10:02.256    订单52:buy_open QQ10002367,数量:10,价格:0.6238,filled全部成交

2020-04-10 10:10:34.903    订单:49委托量:10已成交:0未成交:10
2020-04-10 10:10:34.904    订单:50委托量:10已成交:0未成交:10
2020-04-10 10:10:34.905    订单:51委托量:10已成交:0未成交:10
2020-04-10 10:10:34.905    订单:52委托量:10已成交:0未成交:10

结果显示filled_quantity输出仍然是0!!!
还是这个问题,没有解决。

总结一下:在期货模拟下,filled_quantity输出正常成交数,其中输出到消息没有显示,输出到日志显示正常。在期权模拟下,filled_quantity输出总是为0,不能正常取值,输出到消息和输出到日志都是0

恳请大佬排查一下问题所在!非常感谢!


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


加好友 发短信
等级:新手上路 帖子:38 积分:0 威望:0 精华:0 注册:2020/2/15 22:44:32
  发帖心情 Post By:2020/4/10 13:41:52 [显示全部帖子]

我翻看了系统的日志(PleaceOrder),看似乎有订单更新,不知道我理解对不对,见下边记录:

2020-04-10 10:11:31.899    【Python】sell_open 策略:<MyModel_V3> 出现信号 book_id:QQ10002376,voloram=1, Type=0, Price=0.012200, Account=
2020-04-10 10:11:31.915    【下单】10002376 价0.012200 量1 买卖1 类型0 开平0 账户80002198 Formula 1
2020-04-10 10:11:31.916    【下单】已提交,订单ID :90
2020-04-10 10:11:32.027    【指令】收到回报指令 ID = 90
2020-04-10 10:11:32.040    【回报】80002198 : 10002376 - 已报单 1 价格:0.0122 开 卖
2020-04-10 10:11:32.069    【指令】收到成交回报指令 ORDERID = 90
2020-04-10 10:11:32.086    【回报】80002198 : 10002376 - 已成交 1 价格:0.0122 开 卖
2020-04-10 10:11:32.087    【回报】80002198 : 10002376 - 全部成交 1

上述记录是其一,其二是前天我在测试时get_orders_id成功地反馈过几个订单的成交情况,当时filled_quantity正确取得了已成交数量,后边的订单又无法取得了。

所以我怀疑是不是我的代码、用法、或者环境有什么问题,导致函数无法正确获取成交状态。



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


加好友 发短信
等级:新手上路 帖子:38 积分:0 威望:0 精华:0 注册:2020/2/15 22:44:32
  发帖心情 Post By:2020/4/10 13:44:11 [显示全部帖子]

同时,我还有两个问题:
第一,如果只是期权模拟没去更新订单状态,那实盘时会及时更新订单状态吗?
第二,大概什么时候可以对模拟柜台升级?

 回到顶部