[量化投资-学习笔记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 进行了优化。

相关推荐
啊哈哈哈哈哈啊哈哈20 分钟前
G9打卡——ACGAN
python·生成对抗网络·gan
ALLSectorSorft22 分钟前
相亲小程序用户注册与登录系统模块搭建
java·大数据·服务器·数据库·python
小一亿41 分钟前
【0基础PS】Photoshop (PS) 理论知识
学习·平面·adobe·信息可视化·photoshop
慕y2741 小时前
Java学习第九十一部分——OkHttp
java·开发语言·学习
caisexi1 小时前
Windows批量启动java服务bat脚本
java·windows·python
斜月2 小时前
Python Asyncio以及Futures并发编程实践
后端·python
No0d1es2 小时前
第15届蓝桥杯Pthon青少组_国赛_中/高级组_2024年9月7日真题
python·青少年编程·蓝桥杯·国赛·中高组
Y4090012 小时前
Java基础——实现图书管理系统交互功能
java·开发语言·笔记·交互
LiuYaoheng2 小时前
【Android】使用 Intent 传递对象的两种序列化方式
android·java·笔记·学习
九章数学体系2 小时前
九章数学体系:打破“吃苦悖论”,重构学习真谛
数据结构·学习·算法·数学建模·拓扑学