控制回撤哪家强?魔改DMA指标,比MACD更强大!

一、DMA的基本原理

前边我们讲过MACD,它利用了短期EMA和长期EMA的偏离来做文章,今天要讲的DMA也是类似的思路。DMA和MACD的本质区别在于,它在计算均线时将EMA替换为了SMA,其他的两者基本一致。

其完整的计算公式如下。很明显,如果我们用第三行得到的DMA是否穿越0轴来作为交易信号的话,那这就是一个经典的均线金叉/死叉策略。

S M A 1 = S M A ( C L O S E , M 1 ) S M A 2 = S M A ( C L O S E , M 2 ) D M A = S M A 1 − S M A 2 A M A = S M A ( D M A , M 3 ) SMA1 = SMA(CLOSE, M1) \\ \quad \\ SMA2 = SMA(CLOSE, M2) \\ \quad \\ DMA = SMA1 - SMA2 \\ \quad \\ AMA = SMA(DMA, M3) SMA1=SMA(CLOSE,M1)SMA2=SMA(CLOSE,M2)DMA=SMA1SMA2AMA=SMA(DMA,M3)

我们从统计学的角度做一个不太严谨的分析。

根据中心极限定理,随机变量的均值的分布服从正态分布。因此SMA1和SMA2均服从正态分布。我们又知道两个服从正态分布的随机变量的差值也服从正态分布,因此,DMA也服从正态分布。

对于服从正态分布的随机变量来说,均值回归就是最可靠的真理。因此,我们可以对DMA做移动平均来求得一个锚,即上述公式中的AMA。很容易想到,DMA会一直围绕着AMA波动:比AMA涨多了,就要跌回来;比AMA跌多了,就要涨回来。于是金叉、死叉的策略就出来了。

当然,这里有很多不严谨的地方,因为收盘价并不一定是随机变量,它的均值、标准差也可能会随着公司发展、宏观变化等而不断变化。但是在周期长度有限时,我们不妨将其看做一个服从正态分布的随机变量。

毕竟理想的假设太难满足,基于一定的假设做推论是很常见的操作。

二、DMA的魔改思路

参数

很明显,M1,M2,M3三个参数是我们最容易想到的魔改点。一般来说,默认的DMA会使用10、50、10这一版参数。但是在过往的研究中,我们早就发现了绝大多数指标并不能以一套参数适用于所有股票。

所以我们往往要探索针对自己关注的那些资产最合适的参数是什么。

DMA

对于DMA的计算,我们可以考虑下在MTM那里的魔改操作。即将SMA1-SMA2改为SMA1/SMA2*100-100,这时它就变成了一个中枢为0的指标,它的取值含义类似于BIAS指标。

好了,考虑到很多朋友不太喜欢这种理论性的东西,所以我们尽快进入到效果评测环节。

三、DMA的策略效果

DMA原版参数的效果在沪深300上表现并不太好,甚至没有跑赢基准。

image

我们尝试在原版公式的基础上来寻找更好的参数组合,看能否以比较低的成本取得比较好的效果。可以看到,相比于原版参数,(16,35,7)的组合不管是在累计收益还是最大回撤方面的表现都远远好于原版,胜率也提升到了50%,这会大大提高交易体验。

image

从交易信号来看也还可以,没有错过大的波段,但在震荡行情中胜率的确不高,这一般是因为有些假突破信号单纯从这一指标中无法比较好地识别,可能需要我们组合其他指标一起来看才会更好。

image

整体来看,DMA的底子还是很好的,值得进一步魔改或者用到组合策略中。

四、DMA魔改

我们再尝试下在DMA的计算公式中引入BIAS的思路,可以看到,策略效果进一步提升。收益和回撤都有了更好的表现,但胜率方面略有下滑。值得一提的是,魔改策略在10月初的反弹中创下了历史新高!

image

总的来说,第一个参数的最佳范围大概在10-20之间,第二个参数的最佳范围大概在20-40之间,第三个参数的最佳范围大概在2-10之间。大家可以根据自己日常关注的标的,来看下哪一套参数更加适合。

老Q也把魔改后的策略编成了通达信指标。大家可以加入圈子来获取魔改通达信公式和Python回测代码!

image

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/902895.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++设计模式创建型模式———简单工厂模式、工厂方法模式、抽象工厂模式

文章目录 一、引言二、简单工厂模式三、工厂方法模式三、抽象工厂模式四、总结 一、引言 创建一个类对象的传统方式是使用关键字new , 因为用 new 创建的类对象是一个堆对象,可以实现多态。工厂模式通过把创建对象的代码包装起来,实现创建对…

生成式 AI 与向量搜索如何扩大零售运营:巨大潜力尚待挖掘

在竞争日益激烈的零售领域,行业领导者始终在探索革新客户体验和优化运营的新途径,而生成式 AI 和向量搜索在这方面将大有可为。从个性化营销到高效库存管理,二者在零售领域的诸多应用场景中都展现出变革性潜力,已成为保持行业领先…

leetcode438. 找到字符串中所有字母异位词

题目描述: 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 示例 1: 输入: s "cbaebabacd", p "abc" 输出: [0,6] 解释: 起始索引等于 0 的子串是 &quo…

【IC每日一题】

IC每日一题 1 组合逻辑VS时序逻辑1.1 组合逻辑1.1.1 竞争冒险1.1.2 解决方法 1.2 时序逻辑1.3 比较1.4 场景 2 计数器2.1 代码片段法2.2 实现计数器--异步复位,带clear端,计10则归0; 1 组合逻辑VS时序逻辑 1.1 组合逻辑 组合逻辑&#xff1…

MySQL练习题-求连续、累计、环比和同比问题

目录 准备数据 1)求不同产品每个月截止当月最近3个月的平均销售额 2)求不同产品截止当月的累计销售额 3)求环比增长率和同比增长率 准备数据 -- product 表示产品名称,ym 表示年月,amount 表示销售金额&#xff…

【K8S系列】Kubernetes Service 基础知识 详细介绍

在 Kubernetes 中,Service 是一种抽象的资源,用于定义一组 Pod 的访问策略。它为这些 Pod 提供了一个稳定的访问入口,解决了 Pod 可能频繁变化的问题。本文将详细介绍 Kubernetes Service 的类型、功能、使用场景、DNS 和负载均衡等方面。 1.…

react 总结+复习+应用加深

文章目录 一、React生命周期1. 挂载阶段(Mounting)补充2. 更新阶段(Updating)补充 static getDerivedStateFromProps 更新阶段应用补充 getSnapshotBeforeUpdate3. 卸载阶段(Unmounting) 二、React组件间的…

windows 训练yolov8官方数据集

第一步:安装Anaconda3-2024.06-1-Windows-x86_64.exe 下载地址:https://repo.anaconda.com/archive/ 第二步:创建环境 打开Anaconda Prompt 输入 conda info -e 打印: 已经安装了一些环境,然后我们创建新的环境&a…

大模型面试挺水的,面试官听到这些直接过

AI大模型600道面试总结(LLM) 1、目前主流的开源模型体系有哪些? 目前 主流的开源模型体系 分三种: 第一种:prefixDecoder系 介绍:输入双向注意力,输出单向注意力 代表模型:ChatGLM、ChaGLM2、U-PaLM 第二种:causal Decader系 介绍:从左到右的单向注意力 代表…

【状态机DP】力扣1186. 删除一次得到子数组最大和

给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和。换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只能…

驱动-----LED

前面我们学习了demo1的驱动的编写,在写LED的时候,我们可以在demo1的基础上修改。 1.首先就是修改名字,把所有的demo改成led,使用一个字符串替换指令。 2.设备号要变 3.想操作硬件,LED的初始化,亮灭 LED的初始化,在open的时候实现。 亮灭在write的时候实现。 现在就是…

技术成神之路:设计模式(二十三)解释器模式

相关文章:技术成神之路:二十三种设计模式(导航页) 介绍 解释器模式(Interpreter Pattern)是一种行为设计模式,用于定义一种语言的文法表示,并提供一个解释器来处理这种文法。它用于处理具有特定语法或表达…

移远通信斩获两项车载大奖,引领全球智能网联汽车产业发展

10月24日,由盖世汽车主办的2024第六届金辑奖中国汽车新供应链百强颁奖盛典在上海隆重举行。 作为全球领先的物联网和车联网整体解决方案供应商,移远通信凭借智能座舱模组AG855G、车载5G模组AG59x系列,以及公司在海外市场的优异表现&#xff0…

Mac 上无法烧录 ESP32C3 的问题记录:A fatal error occurred:Failed to write to target RAM

文章目录 问题描述驱动下载地址问题解决:安装 CH343 驱动踩的坑日志是乱码 问题描述 我代码编译可以,但是就是烧录不上去 A fatal error occurred:Failed to write to target RAM(result was 01070000:Operation timed out) Uploaderror:上传失败&…

selenium脚本编写及八大元素定位方法

selenium脚本编写 上篇文章介绍了selenium环境搭建,搭建好之后就可以开始写代码了 基础脚本,打开一个网址 from selenium import webdriver driver webdriver.Chrome()#打开chrome浏览器 driver.get(https://www.baidu.com) #打开百度 打开本地HTML文件 上篇…

ctfshow(265->266)--反序列化漏洞--指针引用与php://input读取请求体

Web265 源代码: error_reporting(0); include(flag.php); highlight_file(__FILE__); class ctfshowAdmin{public $token;public $password;public function __construct($t,$p){$this->token$t;$this->password $p;}public function login(){return $this…

企业贷款大揭秘:税贷VS票贷,哪个更适合你?

在金融界,资金就像是现代经济的血液,特别是对于企业的发展来说,银行的资金支持简直是不可或缺的。最近,多家银行可是动作频频,加快了资金投放的步伐,尤其是制造业、小微企业、专精特新以及“三农”这些领域…

网络编程 Linux环境 C语言实现

进程间通信的延续 跨电脑进程间通信 一、远程通信方式 电路交换------老式有线电话通信 ​ 报文交换 ​ 分组交换 支持分时机制的(分片机制)报文交换 ​现行网络大部分都是采用分组交换形式 二、网络&互联网&因特网 网络Network:多台计算机通过某种传输…

Javaee---多线程(一)

文章目录 1.线程的概念2.休眠里面的异常处理3.实现runnable接口4.匿名内部类子类创建线程5.匿名内部类接口创建线程6.基于lambda表达式进行线程创建7.关于Thread的其他的使用方法7.1线程的名字7.2设置为前台线程7.3判断线程是否存活 8.创建线程方法总结9.start方法10.终止&…

微积分复习笔记 Calculus Volume 1 - 3.5 Derivatives of Trigonometric Functions

3.5 Derivatives of Trigonometric Functions - Calculus Volume 1 | OpenStax