简易波动指标EVM的python实现

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

209

主题

26

回帖

1424

积分

超级版主

积分
1424
来源: 2019-7-10 06:47:35 显示全部楼层 |阅读模式
简易波动指标(Ease of Movement Value)又称EMV指标,它是由RichardW.ArmJr.根据等量图和压缩图的原理设计而成,目的是将价格与成交量的变化结合成一个波动指标来反映股价或指数的变动状况。由于股价的变化和成交量的变化都可以引发该指标数值的变动,因此,EMV实际上也是一个量价合成指标。

计算公式

EVM=(Current High Price - Current Low Price)/2 - (Prior High Price - Prior Low Price)/2

  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. # Ease of Movement
  6. def EVM(data, ndays):
  7. dm = ((data['High'] + data['Low'])/2) - ((data['High'].shift(1) + data['Low'].shift(1))/2)
  8. br = (data['Volume'] / 100000000) / ((data['High'] - data['Low']))
  9. EVM = dm / br
  10. EVM_MA = pd.Series(pd.rolling_mean(EVM, ndays), name = 'EVM')
  11. data = data.join(EVM_MA)
  12. return data

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

  16. # Compute the 14-day Ease of Movement for AAPL
  17. n = 14
  18. AAPL_EVM = EVM(data, n)
  19. EVM = AAPL_EVM['EVM']

  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('AAPL Price Chart')
  26. plt.ylabel('Close Price')
  27. plt.grid(True)
  28. bx = fig.add_subplot(2, 1, 2)
  29. plt.plot(EVM,'k',lw=0.75,linestyle='-',label='EVM(14)')
  30. plt.legend(loc=2,prop={'size':9})
  31. plt.ylabel('EVM values')
  32. plt.grid(True)
  33. plt.setp(plt.gca().get_xticklabels(), rotation=30)

复制代码

黄金-一桶金.jpg

回复

使用道具 举报

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