Пример #1
0
 def handle_bar(context, bar_dict):
     context.order_count += 1
     if context.order_count == 1:
         update_universe(context.s2)
         his = history_bars(context.s2, 5, '1d', 'close')
         print(sorted(his.tolist()))
         print(sorted([24.1, 23.71, 23.82, 23.93, 23.66]))
         assert sorted(his.tolist()) == sorted([26.06, 26.13, 26.54, 26.6, 26.86])
Пример #2
0
 def handle_bar(context, bar_dict):
     context.order_count += 1
     if context.order_count == 1:
         update_universe(context.s2)
         his = history_bars(context.s2, 5, '1d', 'close')
         print(sorted(his.tolist()))
         print(sorted([24.1, 23.71, 23.82, 23.93, 23.66]))
         assert sorted(his.tolist()) == sorted([26.06, 26.13, 26.54, 26.6, 26.86])
Пример #3
0
def init(context):
    '''
    策略初始化
    '''
    logger.info("init")
    context.stocks = STOCKS
    update_universe(context.stocks)
    context.hold = None
Пример #4
0
def init(context):
    """
        Description : 程序初始化
        Arg :
        Returns :
        Raises	 :
    """
    # 这里设置参数
    context.LST_MA = [5, 10, 20, 60]   # 均线。
    context.LST_DUOTOU = []     # 保存的是均线持续多头的列表。
    context.DUOTOU_DAYS = 7      # 均线排列持续天数判断为多头趋势
    context.BACK_MA = 10        # 回测均线
    context.NUM_STOCKS = 10      # 最多持有股票数量
    context.STOP_PERCENT = 10   # 止损比例

    # 获得所有股票,
    _all_cn_stock = list(all_instruments('CS')['order_book_id'])
    # 删除ST股票, 不对ST股票做回测。
    # 上市90天的股票不做回测,因为前几天都是疯涨。然后暴跌。
    _all_cn_stock = [
        _stock for _stock in _all_cn_stock
        if not is_st_stock(_stock, 1)
        and is_predate_listed_date(_stock, 90)]

    for _book_id in _all_cn_stock:
        # 在这里添加指标的相关数据
        # 如下先取得K线数据
        _close = get_bars_all(_book_id, '1d', "close")
        _open = get_bars_all(_book_id, '1d', "open")
        _high = get_bars_all(_book_id, '1d', "high")
        _low = get_bars_all(_book_id, '1d', "low")
        _limit_down = get_bars_all(_book_id, '1d', "limit_down")
        _limit_up = get_bars_all(_book_id, '1d', "limit_up")
        _total_turnover = get_bars_all(_book_id, '1d', "total_turnover")
        _volume = get_bars_all(_book_id, '1d', "volume")
        # 计算指标
        # _ma_5 = talib.SMA(_close, context.TIME_PERIOD)
        # 将所有的均线保存在这个数组中。
        _lst_ma = []
        for _ma in context.LST_MA:
            _lst_ma.append(talib.SMA(_close, _ma))
        # 然后取得一个逻辑数组,是判断是否是均线多头的。
        _bool_up = []
        for _i in range(len(_lst_ma) - 1):
            # 每个都跟后边的比较一下。
            _bool_up = _bool_up and (_lst_ma[_i + 1] > _lst_ma[_i])
        # 将指标数据保存
        add_indicator(_book_id, '1d', "duotou", _bool_up)
        # 然后有个变量看看是否回撤的
        _ma_huiche = talib.SMA(_close, context.BACK_MA)
        _huiche = _close < _ma_huiche
        # 保存这个回撤的
        add_indicator(_book_id, '1d', "huiche", _huiche)
    # 设置进入股票池
    update_universe(_all_cn_stock)
    pass
Пример #5
0
def init(context):
    context.number = 10
    context.period = 20
    context.SMAPERIOD = 5
    context.marketval = context.portfolio.market_value
    context.stocks = sector('原材料')
    update_universe(context.stocks)
    scheduler.run_monthly(get_head, monthday=1)
    scheduler.run_monthly(position, monthday=1)
    scheduler.run_daily(stoploss)
Пример #6
0
def init(context):
    """
        Description : 程序初始化
        Arg :
        Returns :
        Raises	 :
    """
    # 这里设置参数
    context.TIME_PERIOD = 5

    context.N = 20  # 计算多少日内的
    context.M = 10  # %M
    context.loss = 10  # 止损百分比
    context.min_up = 3  # 最低上涨
    # 获得所有股票,
    _all_cn_stock = list(all_instruments('CS')['order_book_id'])
    # 删除ST股票, 不对ST股票做回测。
    # 上市90天的股票不做回测,因为前几天都是疯涨。然后暴跌。
    _all_cn_stock = [
        _stock for _stock in _all_cn_stock
        if not is_st_stock(_stock, 1) and is_predate_listed_date(_stock, 90)
    ]

    # 保存股票列表
    context.stocks = _all_cn_stock

    for _book_id in _all_cn_stock:
        pass
        # 在这里添加指标的相关数据
        # 如下先取得K线数据
        # _close = get_bars_all(_book_id, '1d', "close")
        # _open = get_bars_all(_book_id, '1d', "open")
        # _high = get_bars_all(_book_id, '1d', "high")
        # _low = get_bars_all(_book_id, '1d', "low")
        # _limit_down = get_bars_all(_book_id, '1d', "limit_down")
        # _limit_up = get_bars_all(_book_id, '1d', "limit_up")
        # _total_turnover = get_bars_all(_book_id, '1d', "total_turnover")
        # _volume = get_bars_all(_book_id, '1d', "volume")
        # # 计算指标
        # _ma_5 = talib.SMA(_close, context.TIME_PERIOD)
        # # 将指标数据保存
        # add_indicator(_book_id, '1d', "ma_5", _ma_5)
        #
    # 设置进入股票池
    update_universe(_all_cn_stock)
    pass
Пример #7
0
def before_trading(context):
    context.today = context.now.date()
    context.today = str(context.today)

    update_universe(context.stocks)

    calculate_if_A_stock_premium_rate(context,context.today)


    context.stocks = list(context.A_H_price_compare_result[(context.A_H_price_compare_result.A股溢价率 < -60)].A_code)

    context.stocks = context.stocks[0:context.buyStkCount]

    update_universe(context.stocks)
    update_universe(['000002.XSHE'])