首先普及基本知识,就是MACD的计算公式:

3个参数(这3个参数可以根据实际情况自己设定,默认为12,26和9):(12)日快速移动平均线,(26)日慢速移动平均,(9)日移动平均
EMA(12)= 前一日EMA(12)×11/13+今日收盘价×2/13
EMA(26)= 前一日EMA(26)×25/27+今日收盘价×2/27
DIFF=今日EMA(12)- 今日EMA(26)
DEA(MACD)= 前一日DEA×8/10+今日DIF×2/10
BAR=2×(DIFF-DEA)
关键是第一日和第二日的DIFF,DEA和BAR(MACD)是多少:
第一日都为0
DIFF=0,DEA=0,BAR(MACD)=0
第二日
EMA(12)=前一日收盘价(即第一日收盘价)+(今日收盘价 - 前一日收盘价)* 2 / 13
EMA(26)=前一日收盘价(即第一日收盘价)+(今日收盘价 - 前一日收盘价)* 2 / 27
DIFF=EMA(12)-EMA(26)
DEA(9)=0(即前一日DEA(9))+今日DIFF*2/10

BAR=2*(DIFF-DEA)
第三日就可以按最上面的公式计算了,因为前一日(即第二日)的EMA(12),EMA(26),DEA(9)都已经有了,后面以此类推。

由于计算当天的DIFF,DEA和BAR(MACD)需要前一天的EMA数据,所以除非这些数据是已知的,否则需要从第一天收盘后开始计算,这也是MACD比较麻烦的地方。

根据以上的公式给出代码就不困难了:

元数据的获取使用了Tushare第三方金融数据库,可以见之前的blog:python 经济数据第三方库 tushare 简单试用

元数据格式是这样的(以沪深300指数为例):

函数实现:

def calMACD(df, fast_ma, slow_ma, ma):""":param df: original dataframe, index = 'date',columns ='open','high','close','low','volume','amount':param fast_ma: fast period:param slow_ma: slow period:param ma: moving average:return: DateFrame"""# sort by datesort_df = df.sort_index(ascending=True)# create list to save resultEMA10 = []EMA22 = []DIFF = []DEA8 = []MACDN = []# get close pricesclose = sort_df['close']# print(close[:10])# need to be calculated# cal ema,diff,dea,macdfor i in range(1, close.count() + 1):# print("Is calculating the %d lines" % i)ema10 = CalMACD.emaN(days=fast_ma, i=i, close=close, lastemaN=EMA10)# print("ema10" + str(ema10))EMA10.insert(i, ema10)ema22 = CalMACD.emaN(days=slow_ma, i=i, close=close, lastemaN=EMA22)# print("ema22" + str(ema22))EMA22.insert(i, ema22)diff = CalMACD.diff(ema10, ema22)DIFF.insert(i, diff)dea = CalMACD.deaN(ma=ma, dea=DEA8, diff=DIFF, i=i)DEA8.insert(i, dea)macdN = CalMACD.macd(diff, dea)MACDN.insert(i, macdN)# insert result to dataframesort_df['ema' + str(fast_ma)] = EMA10sort_df['ema' + str(slow_ma)] = EMA22sort_df['diff' + str(fast_ma)] = DIFFsort_df['dea' + str(slow_ma)] = DEA8sort_df['macd' + str(ma)] = MACDNreturn sort_df

结果:

最后的3列数据就是我们想要获得的数据,可以与任意股票软件中的数据对比,完全一致

到此,完成计算。

python 实现股票MACD计算相关推荐

  1. python分析股票MACD指标

    股民朋友肯定熟悉股票中的MACD指标,比如5日均线.10日均线.15日均线等等.通过这些指标可以辅助进行交易的决策(比如经典的金叉.死叉理论),下面就以5日均线和20日均线为例,用python来画出指 ...

  2. python股票技术指标计算_通达信指标python都实现,python计算macd等技术指标,有什么包吗...

    Q1:python计算macd等技术指标,有什么包吗 有的,包的链接如下: https://github.com/lovelylain/pyctp/tree/master/example/ctp/ta ...

  3. python股票指标计算库_GitHub - unclevicky/stock: stock,股票系统。使用python进行开发。...

    pythonstock V1 项目简介 特别说明:股市有风险投资需谨慎,本项目只能用于Python代码学习,股票分析,投资失败亏钱不负责,不算BUG. PythonStock V1 是基于Python ...

  4. 使用Python对股票数据进行数据分析(一)-计算日线行情、5日均线、10日均线行情并显示

    使用Python对股票数据进行数据分析(一)-计算日线行情.5日均线.10日均线行情并显示 各种炒股软件上可以显示各种技术指标,可以帮助投资者进行技术分析.这些股市中的这些指标都是怎么计算出来的呢?这 ...

  5. python做股票系统_GitHub - hetingqin/stock: stock,股票系统。使用python进行开发。

    pythonstock V1 项目简介 特别说明:股市有风险投资需谨慎,本项目只能用于Python代码学习,股票分析,投资失败亏钱不负责,不算BUG. PythonStock V1 是基于Python ...

  6. python做股票系统_GitHub - yeyaowen/stock: stock,股票系统。使用python进行开发。

    pythonstock V1 项目简介 特别说明:股市有风险投资需谨慎,本项目只能用于Python代码学习,股票分析,投资失败亏钱不负责,不算BUG. PythonStock V1 是基于Python ...

  7. Python实现股票量化交易学习进阶(二)之简单交易策略的定义实现

    Python实现股票量化交易学习进阶第二篇之简单交易策略的定义实现 1.backtrader回测框架知识 2.需求一自定义MACD指标 3.需求二自定义实现KDJ指标 4.需求三自定义CCI指标 1. ...

  8. 用python画股票分时图 github_GitHub - DogeWatch/stock: stock,股票系统。使用python进行开发。...

    pythonstock V1 项目简介 特别说明:股市有风险投资需谨慎,本项目只能用于Python代码学习,股票分析,投资失败亏钱不负责,不算BUG. PythonStock V1 是基于Python ...

  9. python做股票系统_GitHub - pustar/stock: stock,股票系统。使用python进行开发。

    pythonstock V1 项目简介 特别说明:股市有风险投资需谨慎,本项目只能用于Python代码学习,股票分析,投资失败亏钱不负责,不算BUG. PythonStock V1 是基于Python ...

最新文章

  1. iOS开发之ImageView复用实现图片无限轮播
  2. 外包公司做遗留项目有意思么?
  3. 重温Android四大组件(一)—Activity的生命周期
  4. 高性能网络编程1----accept建立连接
  5. 华为主题锁屏壁纸换不掉_快来看看华为与荣耀手机的这16款主题!别一直用系统默认主题啦!...
  6. C# Windows服务相关
  7. 图解iPhone开发新手教程
  8. 新型发明创造大赛计算机类,2017年发明杯全国高职高专大学生创新创业大赛
  9. stm32 内部sram大小_在SRAM、FLASH中调试代码的配置方法(附详细步骤)
  10. 设计一个笔记本电脑类,属性随意,并且进行属性私有化,对外提供公开的set和get方法。 设计一个可插拔的接口:InsertDrawable,该接口有什么方法自行定义。
  11. 浅谈App-V(附:参考资料)
  12. 保护REST API / Web服务的最佳实践[关闭]
  13. concurrenthashmap获取不到_面试必问的ConcurrentHashMap
  14. 上市公司风险预警案例可视化演示系统(附代码)
  15. matlab tic and toc,什么是Python等价于Matlab的tic和toc函数?
  16. Springboot集成rabbitmq
  17. 进阶学习9:ECMAScript——概述、ES2015 / ES6新特性详解
  18. Java中的Enum的简单使用
  19. 猕猴桃酵素的功效_过路老熊_新浪博客
  20. EIGRP特点包括:

热门文章

  1. Mission Planner初学者安装调试教程指南(APM或PIX飞控)2——安装与更新
  2. 银行计算机信息系统安全检查,银行网络安全自查报告.docx
  3. GCJ-02火星坐标系、BD-09百度坐标系和WGS-84坐标系转换
  4. 江西农业大学计算机信息学院,江西农业大学计算机及信息工程学院.doc
  5. Stewart平台及其数学运算
  6. 中小型企业erp管理系统
  7. LInux7系统支持华硕H81,华硕h81主板bios设置方法步骤
  8. loadrunner监控windows系统资源
  9. 使用jQuery中ajax实例
  10. 电脑某个磁盘空间不够,想进行磁盘扩展