第四章 规则策略--RUMI策略

一、原理

RUMI策略的原理是采用对均线偏离度平滑处理的方式,以更好地识别趋势机会。该策略涉及两条均线,一条是快速均线,另一条是慢速均线。在一定的时间周期内,通过计算快慢均线的偏离度(两者相减)来获得每个时间点的差值,并将这些差值简单求和再除以时间周期,得出当前的RUMI指标。RUMI策略对偏离度使用SMA(简单移动平均)进行平滑处理,以降低敏感度并解决均线缠绕的问题。交易信号基于RUMI指标的值,当RUMI下穿0轴时,卖出做空;当RUMI上穿0轴时,买入做多。RUMI策略的本质是对传统均线金叉死叉信号(即DIFF上下穿0轴)的一种优化,通过平滑处理的方式降低DIFF的敏感度来识别趋势机会。

二、代码

def us_rumi_strategy(self, stock_dict, period='day', output_dir='.'):
    for code, stock_list in stock_dict.items():
        close_list = []  # 收盘价
        for stock in stock_list:
            close_list.append(stock.close)
        # 计算涨幅
        fluct_list = self.fluctuate(close_list)
        # 指标,使用macd默认参数
        fast_line = talib.EMA(np.array(close_list), timeperiod=12)
        slow_line = talib.EMA(np.array(close_list), timeperiod=26)
        diff_line = fast_line - slow_line
        rumi_line = talib.EMA(diff_line, timeperiod=9)
        rumi_slope = talib.LINEARREG_SLOPE(rumi_line, timeperiod=2) #求斜率
        # 重新组装数据
        rs_list = []
        last_date = None
        for i in range(1, len(stock_list)):
            stock = stock_list[i]
            rumi_slope_item = self.pe(rumi_slope[i])
            color = 'blue'
            if rumi_slope_item > 0:
                color = 'red'
            elif rumi_slope_item < 0:
                color = 'green'
            element = [stock.dt, stock.open, stock.close, stock.high, stock.low, stock.vol,
                       fluct_list[i], color, self.pe(rumi_line[i]), self.pe(rumi_slope[i])]
            rs_list.append(element)
            last_date = stock.dt
        # 增加尾部占位,用于页面展示
        for i in range(1, 5):
            last_date = DateUtil.getAfterAmDate(last_date, '%Y-%m-%d', i)
            element = [last_date, '-', '-', '-', '-', '-','-', '-', '-', '-', '-', '-', '-']
            rs_list.append(element)

        # 转化为json格式输出
        ar = AjaxResult()
        json_rs = ar.succResult('data', rs_list)
        json_file = output_dir + code  + '_' + period + '.json'
        self.write_file(json_rs, json_file)
        self._logger.info('rumi json in ' + json_file)

三、结果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值