MACD 的数学解释

MACD 的一般定义

\[\begin{align*}
DIF &= EMA(P, w_{fast}) - EMA(P,w_{slow}) \\
DEM &= EMA(DIF, w_{signal}) \\
BAR &= 2 \times (DIF - DEM)
\end{align*}
\]

引入延迟算子

将 \(w\) 定义为 \(EMA\) 的衰减系数,即

\[EMA_t = (1-w) \cdot P_t + w \cdot EMA_{t-1}
\]

将 \(L\) 定义为“延迟算子”,公式重写成:

\[EMA_t = \frac{1-w}{1-wL} P_t
\]

进而推导出:

\[\begin{align*}
DIF_t &= \left( \frac{1-w_{fast}}{1-w_{fast}L} - \frac{1-w_{slow}}{1-w_{slow}L} \right) P_t \\
DEM_t &= \frac{1-w_{signal}}{1-w_{signal}L} P_t \\
BAR_t &= 2\cdot DIF_t \frac{w_{signal}(1-L)}{1-w_{signal}L} \\
&= 2 \cdot \frac{w_{signal}(1-L)}{1-w_{signal}L} \cdot \frac{(w_{slow} - w_{fast})(1-L)}{(1-w_{slow}L)(1-w_{fast}L)} P_t
\end{align*}
\]

下面解析 \(BAR_t\) 的计算中,历史数据的权重。

Taylor 展开

采用最通常的参数配置 \(MACD(12,26,9)\),即

\[\begin{align*}
w_{fast} &= (12-1) / (12+1) = 11/13 \\
w_{slow} &= (26-1) / (26+1) = 25/27 \\
w_{signal} &= (9-1) / (9+1) = 8/10 = 4/5
\end{align*}
\]

要得到历史数据在公式中的权重,必须对分数形式算子做 Taylor 展开,得到多项式级数的表达形式。将上述参数代入到公式中:

\[BAR_t =2 \cdot \frac{4/5(1-L)}{1-4/5L} \cdot \frac{(25/27 - 11/13)(1-L)}{(1-25/27L)(1-11/13L)} P_t
\]

在网站 WolframAlpha 上找到 Taylor 展开,输入上述公式

taylor series 2*(4/5*(1-x))/(1-4/5*x) * ((25/27 - 11/13)*(1-x))/((1-25/27*x)*(1-11/13*x))

得到 Taylor 展开的解析形式:

\[f(L) = \sum_{n=0}^{\infty}
\frac{32\left(819(\frac{4}{5})^n - 765(\frac{11}{13})^n + 65(\frac{25}{27})^n \right)}{29835} L^n
\]

所以,历史数据 \(P_{t-n}\) 的权重是:

\[\frac{32\left(819(\frac{4}{5})^n - 765(\frac{11}{13})^n + 65(\frac{25}{27})^n \right)}{29835}
\]

权重分析

画出前 50 个历史数据的权重

整体来看,权重的分布为三段:

  1. 近期的数据赋予正的权重,但迅速衰减
  2. 中期的数据赋予负的权重,绝对值先增后减
  3. 远期的数据权重几乎为 0

\(MACD\) 中的 \(BAR\) 基本上可以看作是近期数据与中期数据的差。

共振?

如图,采用最通常的参数配置 \(MACD(12,26,9)\),最大权重出现在 \(n=0\) 时,最小权重出现在 \(n=8\) 时。如果价格序列体现出“波浪”的形态,一个波谷到邻近波峰之间索引的差值等于 \(8-0\),按照上述权重的分布,基本上可以断定这时的 \(BAR\) 同时达到了最大值,因为我们为波分和波谷分别赋予了最大和最小的权重。也就是说,价格序列波浪的长度大致等于最大最小权重对应索引的差时,价格序列和 \(BAR\) 将出现“共振”。

MACD 的数学解释的更多相关文章

  1. FFT&NTT数学解释

    FFT和NTT真是噩梦呢 既然被FFT和NTT坑够了,坑一下其他的人也未尝不可呢 前置知识 多项式基础知识 矩阵基础知识(之后会一直用矩阵表达) FFT:复数基础知识 NTT:模运算基础知识 单位根介 ...

  2. github 专案介绍 – Python 范例:透过互动式的 Jupyter 和数学解释流行的机器学习演算法

    对于机器学习有兴趣,不少人应该会先从 Andrew Ng ( 吴恩达 ) 的机器学习课程开始,但是吴恩达的课程是使用 octave 这个工具当作练习.这个 github 项目包含使用 Python 实 ...

  3. SVD分解技术数学解释

    SVD分解 SVD分解是LSA的数学基础,本文是我的LSA学习笔记的一部分,之所以单独拿出来,是因为SVD可以说是LSA的基础,要理解LSA必须了解SVD,因此将LSA笔记的SVD一节单独作为一篇文章 ...

  4. [吴恩达机器学习笔记]12支持向量机3SVM大间距分类的数学解释

    12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.3 大间距分类背后的数学原理- Mathematic ...

  5. 奇异值分解 SVD 的数学解释

    奇异值分解(Singular Value Decomposition,SVD)是一种矩阵分解(Matrix Decomposition)的方法.除此之外,矩阵分解还有很多方法,例如特征分解(Eigen ...

  6. lasso数学解释

    lasso:是L1正则化(绝对值) 注:坐标下降法即前向逐步线性回归 lasso算法:常用于特征选择 最小角算法,由于时间有限没有去好好研究(其实是有点复杂,尴尬)

  7. OpenGL坐标变换及其数学原理,两种摄像机交互模型(附源程序)

    实验平台:win7,VS2010 先上结果截图(文章最后下载程序,解压后直接运行BIN文件夹下的EXE程序): a.鼠标拖拽旋转物体,类似于OGRE中的“OgreBites::CameraStyle: ...

  8. Chrome V8引擎系列随笔 (1):Math.Random()函数概览

    先让大家来看一幅图,这幅图是V8引擎4.7版本和4.9版本Math.Random()函数的值的分布图,我可以这么理解 .从下图中,也许你会认为这是个二维码?其实这幅图告诉我们一个道理,第二张图的点的分 ...

  9. TF-IDF提取行业关键词

    1. TF-IDF简介 TF-IDF(Term Frequency/Inverse Document Frequency)是信息检索领域非常重要的搜索词重要性度量:用以衡量一个关键词\(w\)对于查询 ...

随机推荐

  1. spring4-5-事务管理

    1.简单介绍 事务管理是企业级应用程序开发中必不可少的技术,  用来确保数据的完整性和一致性. 事务就是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用 事务的 ...

  2. 15-Call to your teacher(有向图的连通判断)

    链接:https://www.nowcoder.net/acm/contest/76/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...

  3. TortoiseSVN教程

    TortoiseSVN使用教程 TortoiseSVN是一个SVN的客户端 1.Checkout Repository 首先要Checkout服务器端的Repository,所谓的Checkout就是 ...

  4. [C++] Sign and magnitude,Ones' complement and Two's complement

    Sign and magnitude,Ones' complement and Two's complement

  5. [Email] 收发邮件的协议 : IMAP and SMTP , POP3 and SMTP

    支持 IMAP 和 SMTP 的应用 与仅同步收件箱的 POP 不同,IMAP 同步所有电子邮件文件夹. 在电子邮件应用中使用以下设置. 接收 (IMAP) 服务器 服务器地址:imap-mail.o ...

  6. Excel 常用快捷键

    Excel 常用快捷键 1. 移动整列 使用Shift快捷键可以快速移动整列:选中该列,当鼠标变成十字箭头时,按住Shift键,然后将该列移动到想要的位置. 2 绝对引用 使用F4快捷键可以快速设置绝 ...

  7. 开发工具Visual Studio使用相关知识和经验的碎片化记录

    开发工具Visual Studio使用相关知识和经验的碎片化记录 1.Visual Studio提示"无法启动IIS Express Web服务器"的解决方法 有时,在使用Visu ...

  8. python 中面向对象编程简单总结2

    1.python中继承的特点: (1)总是从一个类继承,默认为object类 (2)不要忘记调用super.__init__方法来初始化父类的方法 def __init__(self,args): s ...

  9. Firefox 43无法安装xpi的问题

    Firefox 43无法安装xpi的问题 说明:Firefox 42将默认禁止安装未签名扩展   强制禁用这个首选项(高级用户): 你可以在 Firefox 配置编辑页面 (about:config ...

  10. 删除emacs临时文件

    emacs编辑文件后产生的带小尾巴(~)的文件,你有没有强迫症,要删之而后快rm -rf *~ 你有没有不小心敲成了rm -rf ~,然后爽快的按下了回车,然后欲哭无泪,哈哈- 其实,可以设置在ema ...