MACD 源码定义
要理解MACD ,首先要理解指数衰减加权平均,下文有EMA源码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Nov 12 16:36:02 2018
@author: lg
"""
import tushare as ts
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import talib
df=ts.get_k_data('600600')
def EMA(ps,period=5,exp=0.1):
ewma=pd.Series(0.0,index=ps.index)
ewma[period-1]=ps[:period].mean()
for i in range(period,len(ps)):
ewma[i] =exp*ps[i]+(1-exp)*ewma[i-1]
return ewma
ps=df.close
ema=EMA(ps)
DIF=EMA(ps,12,2/(12+1))-EMA(ps,26,2/(26+1))
DEA=EMA(DIF,9,2/(9+1))
MACD=DIF-DEA
def mplot(DIF,DEA,MACD,CUT=300):
# CUT=300
plt.subplot(211)
plt.plot(DIF[CUT:],\
label="DIF",color='k')
plt.plot(DEA[CUT:], label="DEA",\
color='b',linestyle='dashed')
plt.title("信号线DIF与DEA")
plt.legend()
plt.subplot(212)
plt.bar(left=MACD[CUT:].index,\
height=MACD[CUT:],\
label='MACD',color='r')
plt.legend()
mplot(DIF,DEA,MACD,CUT=500)
用talib 实现结果是一样的
dif, dea, macd = talib.MACD(df['close'].values, fastperiod=12, slowperiod=26, signalperiod=9)
dif=pd.Series(dif)
dea=pd.Series(dea)
macd=pd.Series(macd)
mplot(dif,dea,macd,CUT=500)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)