第四章 规则策略--双均线策略

一、原理

利用两条移动平均线的交叉点来判断买卖时机。这一策略基于不同周期的移动平均线对价格变动的反应速度不同。通常,短期移动平均线对价格变动反应较快,称为快线;长期移动平均线对价格变动反应较慢,称为慢线。

当快线由下向上穿过慢线,形成金叉,被视为买入信号,因为这意味着短期价格上涨速度超过长期平均水平,可能预示着一轮上涨趋势的开始。相反,当快线由上向下穿过慢线,形成死叉,被视为卖出信号,因为这可能预示着一轮下跌趋势的开始。

以上信息仅供参考,投资需谨慎,实际交易中的操作需要根据具体的市场情况和个人的交易经验来判断。

二、缺点

  1. 滞后性:由于移动平均线是基于历史数据计算的,因此该策略具有一定的滞后性,可能错过市场的最佳入场或离场时机。

  2. 在价格波动剧烈或趋势不明的市场中,该策略的效果不好;市场处于单边方向时,效果显著。

三、代码

def double_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)
        # 计算涨幅
        fluc_list = self.fluctuate(close_list)
        # 指标
        fast_line = talib.EMA(np.array(close_list), timeperiod=20)
        slow_line = talib.EMA(np.array(close_list), timeperiod=30)
        # 重整格式
        rs_list, last_date = [], None
        for i in range(1, len(stock_list)):
            stock = stock_list[i]
            before_fast_item = self.pe(fast_line[i-1])
            before_slow_item = self.pe(slow_line[i-1])
            fast_item = self.pe(fast_line[i])
            slow_item = self.pe(slow_line[i])
            color = 'grey'
            if before_fast_item < before_slow_item and fast_item > slow_item:
                color = 'red'
            elif before_fast_item > before_slow_item and fast_item < slow_item:
                color = 'green'
            element = [stock.dt, stock.open, stock.close, stock.high, stock.low, stock.vol,fluc_list[i],
                       fast_item, slow_item, 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('double ema json file ' + json_file)

四、结果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值