变化速率ROC的python实现过程

0
回复
6135
查看
[复制链接]

209

主题

26

回帖

1424

积分

超级版主

积分
1424
来源: 2019-7-10 06:53:12 显示全部楼层 |阅读模式

OC(Price Rate of Change)又称变动率指标,乃以今天的收盘价比较其N天前的收盘价的差除以N天前的收盘(本质其实是N日K线的涨幅),以比率表示之,此指标经由Gerald Apple 和 Fred Hitschler 两人于”Stock Market Trading Systems”一书中介绍,采用12天及25天周期可达到相当的效果。

计算公式

(close-ref(close,N))/ref(close,N)*100

  1. # Rate of Change code

  2. # Load the necessary packages and modules
  3. import pandas as pd
  4. import pandas.io.data as web
  5. import matplotlib.pyplot as plt

  6. # Rate of Change (ROC)
  7. def ROC(data,n):
  8. N = data['Close'].diff(n)
  9. D = data['Close'].shift(n)
  10. ROC = pd.Series(N/D,name='Rate of Change')
  11. data = data.join(ROC)
  12. return data

  13. # Retrieve the NIFTY data from Yahoo finance:
  14. data = web.DataReader('^NSEI',data_source='yahoo',start='6/1/2015',end='1/1/2016')
  15. data = pd.DataFrame(data)

  16. # Compute the 5-period Rate of Change for NIFTY
  17. n = 5
  18. NIFTY_ROC = ROC(data,n)
  19. ROC = NIFTY_ROC['Rate of Change']

  20. # Plotting the Price Series chart and the Ease Of Movement below
  21. fig = plt.figure(figsize=(7,5))
  22. ax = fig.add_subplot(2, 1, 1)
  23. ax.set_xticklabels([])
  24. plt.plot(data['Close'],lw=1)
  25. plt.title('NSE Price Chart')
  26. plt.ylabel('Close Price')
  27. plt.grid(True)
  28. bx = fig.add_subplot(2, 1, 2)
  29. plt.plot(ROC,'k',lw=0.75,linestyle='-',label='ROC')
  30. plt.legend(loc=2,prop={'size':9})
  31. plt.ylabel('ROC values')
  32. plt.grid(True)
  33. plt.setp(plt.gca().get_xticklabels(), rotation=30)
复制代码
矿石-金矿.jpg


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 免费注册
关注微信