我根据刑不行老师的部分代码,重写了使用pandas计算RSI的一个例子,并且使用RSI简单实现了一个策略,RSI突破50买入并持有的策略。当然这个策略还非常粗糙,只够练手使用,适合新入门同学看看。如果有不当的地方,请指正。直接上代码分析: 1、打开文件,只取自己需要的数据列
2.根据WMA来计算RSI,有2个小技巧,1是使用diff()来计算两个收盘价的差值,2是使用
stock_data['涨跌'] = stock_data['close']- stock_data['close'].shift(1)也可以计算前后两日的差值。
3.取第一个RSI大于50的数据,RSI大于50,随后的第二天第三天。。。的RSI都有可能大于50,而我们的策略是买入持有,所以要把第二天第三天RSI大于50的数据给去除,这里使用了shift来完成.
4.计算收益率
#计算所有的时间持有1日,2日。。。的收益率,我就不贴图片,直接上代码:
for n in [1,2,3,5,10,20]:
stock_data['随后'+str(n)+'个交易日涨跌幅'] = stock_data['adjust_price'].shift(-1*n) / stock_data['adjust_price'] - 1.0
#只取值‘RSI大于50不为0的那些数值
stock_data = stock_data[(stock_data['RSI>50'] > 0)]
print '当RSI(14)大于50时发出买入信号:'
print '共发出买入信号%d次' % len(stock_data['RSI>50'] )
for n in [1,2,3,5,10,20]:
print '随后'+str(n)+'交易日涨跌幅%.2f %%' % (stock_data['随后'+str(n)+'个交易日涨跌幅'].sum() * 100 )
测试结果:
附件中含有本例子中含有的数据文件和源代码,小卖2个币,需要修改对应的附件文件名后缀。
感谢刑不行老师的代码分享源代码