Python量化交易实战-25使用双均线策略计算收益率

auto-trade xuhss 902℃ 0评论

双均线策略:

一、计算信号收益率

上节课我们已经把生成信号的工作都做好了

这节课计算计算单次收益率/和累计收益率

def ma_strategy(data, short_window = 5, long_window = 20):
    # 计算技术指标:ma短期 ma长期
    data['short_ma'] = pd.DataFrame(data['close']).rolling(window=short_window).mean()
    data['long_ma'] = pd.DataFrame(data['close']).rolling(window=long_window).mean()
    #生成信号 : 金叉买入 死叉卖出
    data['buy_signal'] = np.where(data['short_ma']>data['long_ma'], 1, 0)
    data['sell_signal'] = np.where(data['short_ma']<data['long_ma'], -1, 0)
    #print(data)
    # 过滤信号 st.compose_signal
    stb.compose_signal(data)
    #计算单次收益率
    data = stb.calculate_profit_pct(data)
    #计算累计收益率
    data = stb.calculate_cum_prof(data)
    #print(data)
    return data

运行结果 看2020年用这个策略进行投资的累计收益率

20210626074234 - Python量化交易实战-25使用双均线策略计算收益率

可以看到,这里的累计收益率是负的,

这里有2个问题:

  1. 这是我用平安银行跑的数据,这只股票用这个策略不赚钱不代表其他股票不赚钱,每只股票都不同 可能有些股票它一直下跌,你怎么弄都是亏钱。
  2. 时间区间的问题,这里为了测试方便,取的是一年的时间,正常来说我们取的是3到5年的时间段,因为时间越长越容易了解它的时间趋势性策略的有效性。

按我们的金叉,死叉策略,如果我们想要测试的更有效还需要考虑很多参数,比如说ma短期,ma长期它的不同的取值会有什么影响,以及对于同样一个策略,我去添加一个止盈和止损的因素,这样合成的策略,它的结果又会不同,所以这里分析的空间会有很大。

所以我们多拿几个投资标的,比如说你可以找五粮液,比亚迪,等其他的股票一起取测试,

二、更改投资标的

if __name__ == '__main__':
    #创建股票列表(平安银行 五粮液 比亚迪)
    stocks = ['000001.XSHE', '000858.XSHE', '002594.XSHE']
    # 存放累计收益率
    cum_profits = pd.DataFrame()
    for code in stocks:
        data = st.get_single_price(stock_code=code, timefrequency='daily', start_date='2016-01-01', end_date='2021-01-01')
        data = ma_strategy(data)
        cum_profits[code] = data['cum_profit'].reset_index(drop=True)
        # # 筛选有信号点的数据
        # data = data[data['signal']!=0]
        # # 预览数据
        print("开仓次数:", int(len(data)))
        # print(data)

    #预览
    print(cum_profits)
    # 可视化
    cum_profits.plot()
    plt.title('comparison of ma strategy')
    plt.show()

20210626082458 - Python量化交易实战-25使用双均线策略计算收益率

20210626082550 - Python量化交易实战-25使用双均线策略计算收益率

可以看到 采用这个策略 ,持续5年 ,都是盈利的,五粮液盈利最大。

可视化的图形可以非常直观的看出来:

20210626082701 - Python量化交易实战-25使用双均线策略计算收益率

转载请注明:xuhss » Python量化交易实战-25使用双均线策略计算收益率

喜欢 (2)

您必须 登录 才能发表评论!