以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://weistock.com/bbs/index.asp)
--  高级功能研发区  (http://weistock.com/bbs/list.asp?boardid=5)
----  bug,update_universe,跟新合约池,不是更新而是添加  (http://weistock.com/bbs/dispbbs.asp?boardid=5&id=173730)

--  作者:期货大圣
--  发布时间:2019/12/26 0:13:29
--  bug,update_universe,跟新合约池,不是更新而是添加
另外,要在那个函数内实现呢?init、before_trading, handle_bar都不能实现更新。
只能在外部,才能得到运行。还是添加,而不是更新。

--  作者:yukizzc
--  发布时间:2019/12/26 9:29:04
--  
def init(context):
    # 在context中保存全局变量
    update_universe ([\'sh600000\',\'sh600007\'])
    
    # print("策略启动") #调试打印输出
    

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


# 你选择的品种的数据更新将会触发此段逻辑,例如日或分钟历史数据切片或者是实时数据切片更新。--(必须实现)
def handle_bar(context):
    print(context.universe)

--  作者:yukizzc
--  发布时间:2019/12/26 9:29:37
--  
么有问题,上面代码你输出看下就是在init理添加的品种

另外,看api文档说明里说了,这里的update是覆盖而不仅仅是添加

--  作者:期货大圣
--  发布时间:2019/12/26 12:34:56
--  
现在没有开盘,是不是handle_bar不会被触发,所以在init里测试了下,如下:
def init(context):
    # 在context中保存全局变量
    update_universe (longpool)
    print(longpool)
    print(context.universe)

输出:
12:27:09 > [\'SQFU05\', \'SQNI03\', \'SQHC05\', \'SQFU05\']
12:27:09 > [\'DQAX05\']

豆一05是我手动添加的,没有变化

把update_universe放在外边,测试了下,如下:

update_universe (longpool)
def init(context):
    # 在context中保存全局变量
    print(longpool)
    print(context.universe)

输出:
12:33:17 > [\'SQFU05\', \'SQNI03\', \'SQHC05\', \'SQFU05\']
12:33:17 > [\'SQFU05\', \'SQNI03\', \'SQHC05\', \'SQFU05\', \'DQAX05\']

添加,而没有覆盖


--  作者:yukizzc
--  发布时间:2019/12/26 13:18:41
--  
你在handle_bar里面去输出就能看到区别了,可能更新股票池这个动作有一个时间差,你刚添加马上输出的时候导致池还没更新用的,下一次更新时候那个池子再会更新过来
--  作者:期货大圣
--  发布时间:2019/12/26 13:43:05
--  
感谢版主,成功了
13:42:01 > [\'SQFU05\', \'SQNI03\', \'SQHC05\', \'SQFU05\']