移动平均线指标MA的python实现

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

209

主题

26

回帖

1424

积分

超级版主

积分
1424
来源: 2019-7-10 06:48:42 显示全部楼层 |阅读模式
移动平均线(MA)具有趋势的特性,它比较平稳,不像日K线会起起落落地震荡。越长期的移动平均线,越能表现稳定的特性。不轻易向上向下,必须等股价趋势的真正明朗。移动平均线说到底是一种趋势追踪工具,便于识别趋势已经终结或者反转,新的趋势是否正在形成。


计算公式

.N日MA=N日收市价的总和/N(即算术平均数)

  1. # Moving Averages 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. # Simple Moving Average
  7. def SMA(data, ndays):
  8. SMA = pd.Series(pd.rolling_mean(data['Close'], ndays), name = 'SMA')
  9. data = data.join(SMA)
  10. return data

  11. # Exponentially-weighted Moving Average
  12. def EWMA(data, ndays):
  13. EMA = pd.Series(pd.ewma(data['Close'], span = ndays, min_periods = ndays - 1),
  14. name = 'EWMA_' + str(ndays))
  15. data = data.join(EMA)
  16. return data

  17. # Retrieve the Nifty data from Yahoo finance:
  18. data = web.DataReader('^NSEI',data_source='yahoo',start='1/1/2013', end='1/1/2016')
  19. data = pd.DataFrame(data)
  20. close = data['Close']

  21. # Compute the 50-day SMA for NIFTY
  22. n = 50
  23. SMA_NIFTY = SMA(data,n)
  24. SMA_NIFTY = SMA_NIFTY.dropna()
  25. SMA = SMA_NIFTY['SMA']

  26. # Compute the 200-day EWMA for NIFTY
  27. ew = 200
  28. EWMA_NIFTY = EWMA(data,ew)
  29. EWMA_NIFTY = EWMA_NIFTY.dropna()
  30. EWMA = EWMA_NIFTY['EWMA_200']

  31. # Plotting the NIFTY Price Series chart and Moving Averages below
  32. plt.figure(figsize=(9,5))
  33. plt.plot(data['Close'],lw=1, label='NSE Prices')
  34. plt.plot(SMA,'g',lw=1, label='50-day SMA (green)')
  35. plt.plot(EWMA,'r', lw=1, label='200-day EWMA (red)')
  36. plt.legend(loc=2,prop={'size':11})
  37. plt.grid(True)
  38. plt.setp(plt.gca().get_xticklabels(), rotation=30)
复制代码


回复

使用道具 举报

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