[量化投资-学习笔记006]Python+TDengine从零开始搭建量化分析平台-MACD-CSDN博客

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

在上一章节介绍了 EMA 均线的计算本节主要介绍均线的进化形态之一MACD

MACD (Moving Average Convergence / Divergence) 指数平滑移动平均线。MACD 是通过计算不同时间的 EMA 的差值俩判断价格趋势。

MACD 包括 3 个值
长短期 EMA 差值DIF = EMA(close,12)-EMA(close,26) 计算 12 日和 26 日 EMA 均线差值
信号线 DEA = EMA(DIF,9) 计算差值的 EMA 均线
柱状图 OSC = DIF - DEA

通过以上公式可以看出 MACD 可反应如下信息

  1. DIF>0 价格上涨DIF<0 价格下跌
  2. DEA>0 价格加速上涨DEA<0 价格加速下跌
  3. OSC 绝对值越大说明价格变化越剧烈

1. 从数据库获取收盘价

上一节对数据进行了清洗可以直接查询每天的收盘价不用再使用 interval 聚合函数。

st = '2022-06-01'
et = '2022-10-01'
sql = 'select tdate,close from trade_data_c.tdata where fcode="000001" and tdate>="'+st+'" and tdate<="'+et+'"'

rt = fun.request_post(tdurl,sql,username,password)

2. 使用 pandas 直接计算EMA

这里 MACD 的周期设置为12,26,9。

df = request_get_d(rt)
df['DIF'] = pd.DataFrame.ewm(df['close'],span=12).mean() - pd.DataFrame.ewm(df['close'],span=26).mean()
df['DEA'] = pd.DataFrame.ewm(df['DIF'],span=9).mean()
df['OSC'] = df['DIF'] - df['DEA']

3. 绘制图形

plt.title("MACD")
plt.plot(df['DIF'],'r',linewidth=1.0,label='DIF')
plt.plot(df['DEA'],'y',linewidth=1.0,label='DEA')
plt.bar(df.index,df['OSC']*3,label='OSC')
plt.legend()
plt.grid()
plt.show()

为了让图片更美观将 OSC 进行了优化。

在这里插入图片描述

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: python