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

在上一章节介绍了 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 聚合函数。

python 复制代码
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)。

python 复制代码
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. 绘制图形

python 复制代码
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 进行了优化。

相关推荐
一个处女座的程序猿O(∩_∩)O10 小时前
Python函数参数*args和**kwargs完全指南:从入门到精通
开发语言·python
好家伙VCC11 小时前
**发散创新:编译器优化实战——从LLVM IR到性能飞跃的奇妙旅程**
java·开发语言·python·算法
大尚来也11 小时前
Python 中使用 ezdxf:轻松读写 DXF 文件的完整指南
开发语言·python
lingliang11 小时前
Web3学习笔记:Day2-Solidity基础语法
笔记·学习·web3
小雨中_11 小时前
2.6 时序差分方法(Temporal Difference, TD)
人工智能·python·深度学习·机器学习·自然语言处理
前路不黑暗@11 小时前
Java项目:Java脚手架项目的阿里云短信服务集成(十六)
android·java·spring boot·学习·spring cloud·阿里云·maven
寒秋花开曾相惜11 小时前
(学习笔记)2.2 整数表示(2.2.3 补码编码)
c语言·开发语言·笔记·学习
@zulnger11 小时前
单元测试框架 —— unittest
python·单元测试
CappuccinoRose11 小时前
CSS 语法学习文档(十七)
前端·css·学习·布局·houdini·瀑布流布局·csspaintingapi
apcipot_rain11 小时前
原神“十盒半价”问题的兹白式建模分析
python·数学·算法·函数·数据科学·原神·数列