第四章 规则策略--均线排列策略

一、原理

多均线排列策略是一种基于移动平均线的技术分析方法,通过观察不同周期的移动平均线排列顺序,判断股票价格的趋势和买卖信号。

在多均线排列策略中,通常会选择不同周期的移动平均线,例如5日、10日、20日、60日、120日和240日等。这些均线从上到下依次排列,形成多头排列形态,表明市场处于上升趋势。当短期均线向上突破中长期均线时,被认为是买入信号;而当短期均线向下突破中长期均线时,被认为是卖出信号。

二、代码

def multi_ema_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)
        # 指标
        ema_20 = talib.EMA(np.array(close_list), timeperiod=20)
        ema_25 = talib.EMA(np.array(close_list), timeperiod=30)
        ema_30 = talib.EMA(np.array(close_list), timeperiod=40)
        # 斜率
        ema_20_slope = talib.LINEARREG_SLOPE(ema_20, timeperiod=2)
        ema_25_slope = talib.LINEARREG_SLOPE(ema_25, timeperiod=2)
        ema_30_slope = talib.LINEARREG_SLOPE(ema_30, timeperiod=2)
        # 重新组装数据
        rs_list,last_date = [], None
        for i in range(1, len(stock_list)):
            stock = stock_list[i]
            ema_20_slope_item = self.pe(ema_20_slope[i])
            ema_25_slope_item = self.pe(ema_25_slope[i])
            ema_30_slope_item = self.pe(ema_30_slope[i])
            color = 'green'
            if ema_20_slope_item > 0 and ema_25_slope_item > 0 and ema_30_slope_item > 0: # 三个大于0
                color = 'red'
            element = [stock.dt, stock.open, stock.close, stock.high, stock.low, stock.vol,
                       self.pe(ema_20[i]), self.pe(ema_25[i]), self.pe(ema_30[i]),
                       fluct_list[i], color]
            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('multi ema json in ' + json_file)

三、结果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值