量化交易----常见指标的python实现01

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

209

主题

26

回帖

1424

积分

超级版主

积分
1424
来源: 2019-7-10 06:45:19 显示全部楼层 |阅读模式
顺势指标CCICCI中文译名为:随顺市势指标。它属于超买超卖指标中较特殊的一种。波动于广向正值无限大和微向负值无限小之间。本指标专门用以测量股价是否已超出常态分布范围

计算公式

CCI(N日)=(TP-MA)÷Std÷0.015

其中,TP=(最高价+最低价+收盘价)÷3
MA=近N日收盘价的累计之和÷N
Std=近N日数据的标准差

  1. # Load the necessary packages and modules
  2. import pandas as pd
  3. import pandas.io.data as web
  4. import matplotlib.pyplot as plt
  5. # Commodity Channel Index
  6. def CCI(data, ndays):
  7. TP = (data['High'] + data['Low'] + data['Close']) / 3
  8. CCI = pd.Series((TP - pd.rolling_mean(TP, ndays)) / (0.015 * pd.rolling_std(TP, ndays)),
  9. name = 'CCI')
  10. data = data.join(CCI)
  11. return data

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

  15. # Compute the Commodity Channel Index(CCI) for NIFTY based on the 20-day Moving average
  16. n = 20
  17. NIFTY_CCI = CCI(data, n)
  18. CCI = NIFTY_CCI['CCI']

  19. # Plotting the Price Series chart and the Commodity Channel index below
  20. fig = plt.figure(figsize=(7,5))
  21. ax = fig.add_subplot(2, 1, 1)
  22. ax.set_xticklabels([])
  23. plt.plot(data['Close'],lw=1)
  24. plt.title('NSE Price Chart')
  25. plt.ylabel('Close Price')
  26. plt.grid(True)
  27. bx = fig.add_subplot(2, 1, 2)
  28. plt.plot(CCI,'k',lw=0.75,linestyle='-',label='CCI')
  29. plt.legend(loc=2,prop={'size':9.5})
  30. plt.ylabel('CCI values')
  31. plt.grid(True)
  32. plt.setp(plt.gca().get_xticklabels(), rotation=30)

复制代码

比特币.jpg



回复

使用道具 举报

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