【策略回归】 对均线法则的验证

本文目的是为了验证采用什么样的均线策略会比较有效;
采用策略:当开盘价>=MA_5日线并且涨跌幅>0时第二天以开盘价买入;
当开盘价

import pandas as pd
    #pd.set_option('display.max_rows',10000)

    data=pd.read_csv('overview-data-sh/index/sh000001_new.csv',encoding='gbk')
    data=data[['股票代码', '交易日期','涨跌幅','开盘价','收盘价','MA_5','MA_10','MA_20','MA_60']]
    data.交易日期=pd.to_datetime(data.交易日期)


    data=data[data.交易日期>='20050101']
    data=data.sort('交易日期')

    #第二步:按照策略计算买卖信号,计算收盘发出的信号
    #buy=data[data.开盘价<4000].index
    #sell=data[data.开盘价>=4000].index

    buy=data[(data.开盘价>=data.MA_5) & (data.涨跌幅>0)].index
    sell=data[(data.开盘价<data.MA_20) & (data.涨跌幅<0)].index
    data.loc[buy,'收盘发出的信号']=1
    data.loc[sell,'收盘发出的信号']=0
    data['当天仓位']=data['收盘发出的信号'].shift(1)
    data['当天仓位'].fillna(method='ffill',inplace=True)
    data

    #第三步:计算策略年及累积的涨跌幅
    data['策略涨跌幅']=(data.涨跌幅) * data.当天仓位

    year_rnt=data.set_index('交易日期')[['股票代码','涨跌幅','策略涨跌幅']].\
             resample('M',how=lambda x: (x+1).prod() -1)
    year_rnt['累积涨跌幅']=(year_rnt.涨跌幅+1).cumprod()
    year_rnt['策略累积涨跌幅']=(year_rnt.策略涨跌幅+1).cumprod()
    year_rnt

    %pylab
    import matplotlib.pyplot as plt
    data1=year_rnt['涨跌幅']
    data2=year_rnt['策略涨跌幅' ]
    data3=year_rnt['累积涨跌幅']
    data4=year_rnt['策略累积涨跌幅']
    plt.plot(data1,'k',label='change')
    plt.plot(data2,'g',label='strategy change')
    plt.plot(data3,'b',label='cumchange')
    plt.plot(data4,'r',label='cumstrategy change')
    plt.legend()
    plt.show()

结论上图:

以A股上市2005010年来的数据为例:
图一

以个股600148为例(20050101以来数据):

图二

这种策略对个股在某段时间或许有效,长期并不一定比一直持股有效。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值