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


金字塔客服中心 - 专业程序化交易软件提供商金字塔软件高级功能研发区 → python,用sleep(n)等待限价单执行过程中,handle_bar被触发,程序报错,如何解决?

   

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


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

主题:python,用sleep(n)等待限价单执行过程中,handle_bar被触发,程序报错,如何解决?

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


加好友 发短信
等级:新手上路 帖子:44 积分:0 威望:0 精华:0 注册:2019/3/6 15:46:10
python,用sleep(n)等待限价单执行过程中,handle_bar被触发,程序报错,如何解决?  发帖心情 Post By:2019/3/6 15:55:39 [只看该作者]

python,用sleep(n)等待限价单执行过程中,handle_bar被触发,程序报错,如何解决?

 

 


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


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

请给一个测试代码,这边看看

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


加好友 发短信
等级:新手上路 帖子:44 积分:0 威望:0 精华:0 注册:2019/3/6 15:46:10
  发帖心情 Post By:2019/3/7 14:01:46 [只看该作者]

设基础周期为1分钟

 

def handle_bar(context):
    print('开始handle_bar')
    for i in range(5):
        print('执行循环内语句,模拟发单')
        sleep(20)
   

 

执行Python脚本时遇到错误。
 策略: <test_handlebar_sleep>
 运行: <策略test_handlebar_sleep>
 类型: 运行时错误
 描述: 无响应

 

如何解决?替换sleep为别的函数?或者settimer?


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


加好友 发短信
等级:新手上路 帖子:44 积分:0 威望:0 精华:0 注册:2019/3/6 15:46:10
  发帖心情 Post By:2019/3/11 16:13:31 [只看该作者]

请大佬指教。

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


加好友 发短信
等级:管理员 帖子:2437 积分:0 威望:0 精华:0 注册:2016/3/5 22:53:41
  发帖心情 Post By:2019/3/11 16:18:41 [只看该作者]

你不能在handle_bar中进行长时间占用操作的,会导致软件认为卡死等异常。
你前面的代码不知道为何要启用大量模拟下单的操作并且还要有延时语句?

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


加好友 发短信
等级:新手上路 帖子:44 积分:0 威望:0 精华:0 注册:2019/3/6 15:46:10
  发帖心情 Post By:2019/3/11 16:34:27 [只看该作者]

我的目的是:已经提交的限价单,等待n秒成交(我用sleep),n秒不成交再撤单重新下单。

 

不知道用没有别的更好的方式实现等待n秒


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


加好友 发短信
等级:新手上路 帖子:44 积分:0 威望:0 精华:0 注册:2019/3/6 15:46:10
  发帖心情 Post By:2019/3/11 16:40:52 [只看该作者]

# 本Python代码主要用于策略交易
# 可以自己import我们平台支持的第三方python模块,比如pandas、numpy等。
from PythonApi import *

#  在这个方法中编写任何的初始化逻辑。context对象将会在你的算法策略的任何方法之间做传递。--(必须实现)
def init(context):
    # 在context中保存全局变量
    #标的合约
    context.s1 = "IF00"  
    #控制只交易一次
    context.num=0
    #存放订单id
    context.buy_list = []

   

# before_trading此函数会在每天基准合约的策略交易开始前被调用,当天只会被调用一次。--(选择实现)
def before_trading(context):
    pass


# 你选择的品种的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新。--(必须实现)
def handle_bar(context):
    #跌停价开一手多单
    if context.num==0:
        buy_id = buy_open(context.s1, "Limit",get_dynainf(context.s1,55),1)
        context.buy_list.append(buy_id)
        buy_id = buy_open(context.s1, "Limit",get_dynainf(context.s1,55),3)
        context.buy_list.append(buy_id)
        context.num = 1
    #获取所有未成交单
    order_list = get_orders(context.s1, 0)
    if order_list is not(None):
        #循环所有订单
        for i in order_list:
            if i.order_id in context.buy_list:
                cancel_order (i.order_id)
   
def order_status(context,order):
    #判断柜台回报信息,如果是撤单成功,并且是当前程序的下单id。
    if order.status=='cancelled' and order.order_id in context.buy_list :
        print('单子已撤,继续追单')
        buy_open(context.s1, "Market",0,order.unfilled_quantity)
       
   
# after_trading函数会在每天交易结束后被调用,当天只会被调用一次。 --(选择实现)
def after_trading(context):
    pass


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


加好友 发短信
等级:新手上路 帖子:44 积分:0 威望:0 精华:0 注册:2019/3/6 15:46:10
  发帖心情 Post By:2019/3/11 16:42:34 [只看该作者]

这个是“ yukizzc”写的追单模板,有问题,限价单发出后,要等待n秒(sleep,n秒?),然后在撤单,发市价单。

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


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

撤单的条件加上判断订单时间,如果现在时间大于多少秒然后再去撤单
datetimedatetime.datetime订单创建时间

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


加好友 发短信
等级:新手上路 帖子:44 积分:0 威望:0 精华:0 注册:2019/3/6 15:46:10
  发帖心情 Post By:2019/3/11 16:52:59 [只看该作者]

我自己想明白了。

 


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