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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → SimNow撤单不明原因出错

   

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


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

主题:SimNow撤单不明原因出错

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


加好友 发短信
等级:新手上路 帖子:48 积分:0 威望:0 精华:0 注册:2020/11/17 0:13:51
SimNow撤单不明原因出错  发帖心情 Post By:2021/1/7 10:28:42 [只看该作者]

公式执行cancel_order语句出错,但同样的语句放在一个单独的公式执行没有问题,手工撤单也没问题,找不出原因。共有6个截屏,论坛一次只能贴5个附件,稍后再补第6个截屏。

截屏1 - 订单记录

图片点击可在新窗口打开查看此主题相关图片如下:订单记录.png
图片点击可在新窗口打开查看

截屏2 - 公式截屏

图片点击可在新窗口打开查看此主题相关图片如下:公式截屏.png
图片点击可在新窗口打开查看

截屏3 - 公式执行日志截屏

图片点击可在新窗口打开查看此主题相关图片如下:日志截屏.png
图片点击可在新窗口打开查看

截屏4 - 出错信息截屏

图片点击可在新窗口打开查看此主题相关图片如下:出错类型截屏.png
图片点击可在新窗口打开查看

截屏5 - 单独公式截屏

图片点击可在新窗口打开查看此主题相关图片如下:单独公式截屏.png
图片点击可在新窗口打开查看

截屏6 - 单独公式执行日志截屏,在楼下补充


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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/1/7 10:33:39 [只看该作者]

http://222.73.7.161/bbs/dispbbs.asp?BoardID=10&ID=166505&replyID=&skin=1

 

看这个帖子里撤单范例,是没有问题的

你这个报错大部分好像是参数有问题


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


加好友 发短信
等级:新手上路 帖子:48 积分:0 威望:0 精华:0 注册:2020/11/17 0:13:51
  发帖心情 Post By:2021/1/7 10:34:13 [只看该作者]

第6个截屏

图片点击可在新窗口打开查看此主题相关图片如下:执行单独公式结果截屏.png
图片点击可在新窗口打开查看

补充一点,已用type()检查过公式中order_id_temp字段确认是int类型。关闭金字塔重新启动结果仍然一样,执行日志就停止在step 3,step 4打印不出来了,订单记录也没有撤单,判断是cancel_order语句执行出错。

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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/1/7 11:05:58 [只看该作者]

你不要自己去这样的定义,直接走未成交单然后获取订单然后撤单呢


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


加好友 发短信
等级:新手上路 帖子:48 积分:0 威望:0 精华:0 注册:2020/11/17 0:13:51
  发帖心情 Post By:2021/1/7 11:38:10 [只看该作者]

我在撤单前添加了查询该订单状态,然后根据返回状态再执行撤单,查询正常,检验状态也通过,但同样的出错结果。

代码:
...
order_id_temp = int(local_order_book_cut.at[i,'order_id'])
order_id_temp_type = isinstance(order_id_temp, int)
write_log2('cancel_order','step 3',order_id_temp=order_id_temp,order_id_temp_type=order_id_temp_type)
temp = get_orders_id(order_id_temp)
print(temp.status)
if temp.status == 'submitted':
    print('ready')
    cancel_order(order_id_temp)
print('done')
...

执行日志:
11:26:13 > SQRB 正在执行cancel_order, step 3
———“变量order_id_temp的值: 1734010801 ”
———“变量order_id_temp_type的值: True ”

11:26:13 > submitted
11:26:13 > ready

然后就弹出前面截屏4的出错提示。

我特别检验了cancel_order函数里面那个变量的类型是否int,结果是True,上面step 3那里有打印出来。
用该变量查询订单状态是正常的,有打印ready字样,说明检验订单状态也通过了,撤单出错的原因是什么呢?

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


加好友 发短信
等级:新手上路 帖子:48 积分:0 威望:0 精华:0 注册:2020/11/17 0:13:51
  发帖心情 Post By:2021/1/7 11:50:04 [只看该作者]

如果无解,只好绕远路,调用pel来撤单了。

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


加好友 发短信
等级:新手上路 帖子:48 积分:0 威望:0 精华:0 注册:2020/11/17 0:13:51
  发帖心情 Post By:2021/1/7 14:01:41 [只看该作者]

我照着2楼的例子,先查询未成交订单,然后遍历撤单,结果一样,一样。

代码:
order_id_temp = local_order_book_cut.at[i,'order_id']
write_log2('cancel_order','step 3',order_id_temp=order_id_temp)
temp = local_order_book_cut.at[i,'order_book_id'# 取合约代码
write_log2('cancel_order','step 4',temp=temp)
pending_order_list = get_orders(temp,0# 取合约的所有未成交订单
write_log2('cancel_order','step 5',pending_order_list=pending_order_list,len=len(pending_order_list)) # 打印查询返回的order对象,再len,值是1
if len(pending_order_list) > 0:
    for m in pending_order_list:
        write_log2('cancel_order','step 6',m=m,order_id=m.order_id) # 打印遍历的order对象属性order_id
        if m.order_id == order_id_temp: # 与目标比较,为的是按自己的逻辑撤单,而不是全部撤单
            write_log2('cancel_order','step 7'# 打印步骤,如出现step7,表示检验通过
            cancel_order(m.order_id) # 撤单,这里已经直接用order对象属性order_id,而不是我另外的表格,结果仍然出错
            write_log2('cancel_order','step 8')


日志:

13:50:22 > SQRB 正在执行cancel_order, step 1
           
13:50:22 > SQRB 正在执行cancel_order, step 2
           
13:50:22 > SQRB 正在执行cancel_order, step 3
           ———“变量order_id_temp的值: 1734010801  ”
           
13:50:22 > SQRB 正在执行cancel_order, step 4
           ———“变量temp的值: SQRB02  ”
           
13:50:22 > SQRB 正在执行cancel_order, step 5
           ———“变量pending_order_list的值: [<__main__.order object at 0x084ED3B0>]  ”
           ———“变量len的值: 1  ”
           
13:50:22 > SQRB 正在执行cancel_order, step 6
           ———“变量m的值: <__main__.order object at 0x084ED3B0>  ”
           ———“变量order_id的值: 1734010801  ”
           
13:50:22 > SQRB 正在执行cancel_order, step 7

后面就出现同样的错误提示了。这可怎么解释?

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


加好友 发短信
等级:新手上路 帖子:48 积分:0 威望:0 精华:0 注册:2020/11/17 0:13:51
  发帖心情 Post By:2021/1/7 14:41:22 [只看该作者]

我升级到beta3.0,问题还在,把上面代码贴到一个新的公式,撤单却正常。

代码:

pending_order_list = get_orders('SQRB02',0)
print(len(pending_order_list))
if len(pending_order_list) > 0:
    for m in pending_order_list:
        print(m)
        if m.order_id == 1734010801:
            print('ready')
            cancel_order(m.order_id)
            print('done')

代码是一样的,cancel_order里都是用order属性order_id。

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


加好友 发短信
等级:超级版主 帖子:21598 积分:0 威望:0 精华:1 注册:2010/7/31 16:35:30
  发帖心情 Post By:2021/1/7 17:19:54 [只看该作者]

你复制出来这个代码没有问题

 

原来那个就不对?


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


加好友 发短信
等级:新手上路 帖子:48 积分:0 威望:0 精华:0 注册:2020/11/17 0:13:51
  发帖心情 Post By:2021/1/7 18:43:29 [只看该作者]

是。

 回到顶部
总数 12 1 2 下一页