掘金社区

求个例子,每天股票池都在变化,又需要tick级别的价格去发出买入信号,怎么实现?Pinned highlighted

小丑皇 发表在问题反馈 2021-04-05 23:11:18

问题反馈
92
3
0

我看了很多例子和文档,基本上如果要实现tick级别的买入,就需要在
def init 里面,subscribe某单一或多个固定的股票。
如果要实现不停的换股票池,就需要在init里面schedule运行算法,但是这样又只能每天运行一次。
有没有办法,我每天的股票池都变,然后tick级别的去跟踪价格,寻找买点?
还有一个问题,current(symbols, fields=''),这个函数,只有price,不像文档里面写的,有open、low、high、price。

评论: 3
  • 可以实现的
    (1)可以多次设定schedule运行算法,即可多个时间点,例如九点和九点半
    schedule(schedule_func=algo, date_rule='1d', time_rule='09:00:00')
    schedule(schedule_func=algo, date_rule='1d', time_rule='09:30:00')
    (2)最好使用订阅数据,可在定时任务里面设定,每个交易日将前一交易日订阅的不需要的标的取消订阅unsubscribe - 取消订阅,需要的标的则订阅subscribe - 行情订阅即可;
    (3)current(symbols, fields='')实时交易是有全部字段的,历史回测则没有全部字段。

    2021-04-06 09:31:53
  • @charkong 感谢!但是还是不对吖,
    1)我想要每一个tick都运行算法,schedule做不到吧?
    2)subscribe我试了一下,是否只能在init中用?然后自动触发def on_tick?
    3)我就想着,干脆直接subscribe全部的股票,然后每天在跟踪我选出来的股票tick就好了。但是下面的代码运行不下去。整个代码只是print了init中的print。照理说,subscribe之后,应该会自动执行 def on_tick才对啊。但是on_tick里面的print完全没有执行。

    coding=utf-8

    from future import print_function, absolute_import
    from gm.api import *
    def init(context):
    # 订阅浦发银行, bar频率为一天和一分钟
    # 指定数据窗口大小为50
    # 订阅订阅多个频率的数据,可多次调用subscribe
    all_stock = get_instruments(exchanges='SHSE, SZSE', sec_types=[1], fields='symbol, listed_date, delisted_date',
    df=True)
    symbol=all_stock.symbol.tolist()
    subscribe(symbols=symbol, frequency='tick')
    print(context.now)

    def on_tick(context, tick):
    print(context.now)
    # context.data提取缓存的数据滑窗, 可用于计算指标
    # 注意:context.data里的count要小于或者等于subscribe里的count
    data = context.data(symbol=tick[0]['symbol'], frequency='tick', fields='close,bob')
    # 打印最后5条bar数据(最后一条是最新的bar)
    print(context.now)
    print(data.tail())
    print('22----',tick)

    if name == 'main':
    '''
    strategy_id策略ID, 由系统生成
    filename文件名, 请与本文件名保持一致
    mode运行模式, 实时模式:MODE_LIVE回测模式:MODE_BACKTEST
    token绑定计算机的ID, 可在系统设置-密钥管理中生成
    backtest_start_time回测开始时间
    backtest_end_time回测结束时间
    backtest_adjust股票复权方式, 不复权:ADJUST_NONE前复权:ADJUST_PREV后复权:ADJUST_POST
    backtest_initial_cash回测初始资金
    backtest_commission_ratio回测佣金比例
    backtest_slippage_ratio回测滑点比例
    '''
    run(strategy_id='74ef29de-935a-11eb-bb15-00d861dba0fe',
    filename='main.py',
    mode=MODE_BACKTEST,
    token='f67b02b130e73570236453645d36514200854306',
    backtest_start_time='2020-11-01 08:00:00',
    backtest_end_time='2020-11-10 16:00:00',
    backtest_adjust=ADJUST_PREV,
    backtest_initial_cash=10000000,
    backtest_commission_ratio=0.0001,
    backtest_slippage_ratio=0.0001)

    2021-04-06 10:57:52
  • @小丑皇 tick数据权限只有最近的三个月

    2021-04-07 09:03:03

Looks like your connection to 掘金量化社区 - 量化交易者的交流社区 was lost, please wait while we try to reconnect.