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个币,需要修改对应的附件文件名后缀。
感谢刑不行老师的代码分享源代码
- RSI_test.py
- sh600004.csv