当前位置: 首页 > news >正文

量化择时——均线策略及改进方法(第1部分—因子测算)

文章目录

  • 道氏理论
    • 个股股价走势阶段
    • 板块、行业股价走势
  • 均线策略交易逻辑
  • 均线策略效果测算
    • 改进一:设置策略信号偏移量
    • 改进二:生成止盈止损信号

道氏理论

使用盘面数据,根据计算出的一条或多条均线,判断入场与离场的时机,基本上就是技术面分析。而技术面分析的思想我们可以借鉴比较经典的“道氏理论”。

道氏理论是由创办了华尔街日报,创建了道琼斯公司的【查尔斯·亨利·道】发展起来的一种交易方法,同时在当时美国市场上上市公司以工业企业为主的环境下发明了道琼斯工业指数。在他去世后,由后人总结出来并予以命名“道氏理论”。

个股股价走势阶段

道氏理论以有效市场假说为基础,认为任何市场都会有这3种趋势,透过分辨不同的趋势可以找到投资机会。

  • 主要趋势:指长期趋势,持续一年及以上,大部分股票将随主要趋势上升或下跌,大致可以将市场分为牛市、熊市、盘整(横盘震荡)
  • 次要趋势:持续数周或数月,指与主要趋势相反的中期走势,常见于走到主要趋势的1/3或2/3部分时
  • 小型趋势:每日的波动,带有一定的随机性,难以分析

在上升趋势阶段,分为以下三个阶段:

  1. 筑底阶段:市场经过前期的大跌之后,此时普遍估值较低,盘面表现为持续震荡。市场看不到明天的太阳,不知道未来是震荡下跌还是震荡上涨,此时人们对未来的信心已经在逐渐恢复中
  2. 持续上涨:市场找到了上升动力,利好消息不断放出,买盘推动股价不断上涨。盘面表现是成交量随着股价的上涨不断增加。市场的向好也给予企业正反馈,企业与市场形成正向循环促进
  3. 探顶阶段:市场不断出现利好消息,参与者越来越分散,企业估值被不断推高,泡沫不断积累。此时的市场充斥着投机者,基于期待与希望支撑买方力量,但是预期已拉满,市场对于利空消息也逐渐敏感

在下跌趋势阶段,也分为以下三个阶段:

  1. 探顶阶段:紧接着上升阶段的尾巴,此时买方力量与卖方力量相互周旋,盘面表现为持续震荡,此时估值膨胀到买方力量难以支撑,卖方力量蠢蠢欲动
  2. 持续下跌:经济的恶化会导致高估值的企业因为未达预期,股价不断下跌,典型的持续下跌会表现在价格下跌的同时成交量逐渐减小,此时表明在卖方抛售的同时买方持续观望,对于估值的失望性抛售会不断拉低企业估值
  3. 探底阶段:此时市场虽然一片萧条,但是成交量逐渐恢复,企业估值整体偏低,买方蠢蠢欲动

板块、行业股价走势

我们通俗的理解牛市:行情好啊,啥啥都赚钱,熊市则是:经济完蛋了,啥啥都赔钱。同样还有一种情况,即一部分板块在大涨,而另一部分板块在暴跌,这就出现了板块之间的背离。使用道氏理论可以从宏观上佐证以下观点:

  • 牛市:板块普涨
  • 熊市:板块普跌
  • 盘整:过去相关性很高的板块,此时出现了背离,这通常是一个反转的信号。也可以佐证“行业轮动”的现象。打个比方,比如新发现了一座金矿,那么这个地区的铲子和矿泉水预期被大量需要,价格也应该会同步上升。但是,如果铲子的价格上涨,但是矿泉水的价格下降,则出现走势“背离”的现象。此时需要细致的分析。如果分析出这个地方金矿开采难度大成本高,那么铲子的价格会因为需求不及预期导致价格下跌,当时听风就是雨进去的就被坑了。

均线策略交易逻辑

我们常见的是如下的策略:

  1. 以过去10个交易日的收盘价作为快线
  2. 以过去25个交易日的收盘价作为慢线
  3. 当快线向上突破慢线,表示上涨趋势势不可挡,此时买入
  4. 当快线下穿突破慢线,表示下跌趋势不可遏制,此时卖出

这是一快一慢两个指标相互作用的策略,而均线策略通常只使用一个指标,即根据自身指标过去一段时间的走势完成择时。

均线策略思想如下:

  1. 记录过去的一个时间窗口的收盘价均值
  2. 使用滑动窗口将均值变为一条时间序列数据(均线)
  3. 股价突破极小值时买入,突破极大值时卖出

由于极小值、极大值是交替出现的,因此每一对【极小值(买点),极大值(卖点)】都可以构成一个完整的交易

比如我们以20个交易日的收盘价的均值作为参考值,20个交易日的收盘价的均值与收盘价走势图如下图所示:

在这里插入图片描述

上面的图比较典型,可以观测到:

  1. 均线相对更容易描述趋势的走势
  2. 均线相对于收盘价有一定的滞后性
  3. 均线在大方向上的变动不是特别频繁

均线策略效果测算

我们基于均线策略,构建如下策略流程:

  1. 以20个交易日为滑动窗口长度,计算每个交易日的收盘价的均值,作为均线策略的参考值
  2. 如果上一个交易日的股价是极小值点,则以当日收盘价买入
  3. 如果上一个交易日的股价是极大值点,则以当日收盘价卖出
    最后,统计每一次完整的交易,并把这期间的收益转换为年化收益率,以年化收益率>2%记为胜,胜率=胜的次数/总交易次数

买点、卖点如下图所示:
在这里插入图片描述

测算结果如下图所示:
在这里插入图片描述

但是,正如上图所示,因为当出现震荡行情时,极大值与极小值会交替出现。这时,极容易出现:

  • 第一天是极小值,买入
  • 第二天是极大值,卖出
  • 第三天是极小值,买入
  • 第四天是极大值,卖出

加上对交易日相关数据的统计:

在这里插入图片描述

可以发现,有25%的交易是在2天以内,即“今天买明天卖”,这会造成短期大量的换手,增加摩擦成本。为了避免短期频繁的交易,我们我们需要针对极大值、极小值的择时策略做一些优化。

改进一:设置策略信号偏移量

当极小值出现时,对比上一次极小值出现的时点,需要当前的极小值点相对上一个极小值点偏移n%,才会作为新的价格信号;极大值同理

这里我们定3%,因此原有测算的买点与卖点修改为:

  1. 如果上一个交易日的股价是极小值点,且相对于上次的极小值点价格偏移超过3%,则以当日收盘价买入
  2. 如果上一个交易日的股价是极大值点,且相对于上次的极大值点价格偏移超过3%,则以当日收盘价卖出

回测效果如下:

在这里插入图片描述

在这里插入图片描述

改进二:生成止盈止损信号

在买点生成的同时,同步生成止盈与止损信号:

  1. 如果上一个交易日的股价是极小值点,则以当日收盘价买入
  2. 以当日收盘价的正负6%,为止盈止损点。即涨超6%发出止盈信号,跌超6%发出止损信号
  3. 如果上一个交易日的股价是极大值点,或收盘价突破止盈止损点,则以止盈、止损点买入

回测效果如下:

在这里插入图片描述

在这里插入图片描述

及时的止盈与止损会导致交易天数明显缩短,对应的胜率也会下降,但是方差与原有策略相同。

有一点需要注意,有些改进是从以下两个角度出发:

  1. 改进思想1:买入后静默N天,再根据信号进行交易判断;(为了防止短期抖动)
  2. 改进思想2:第二次买入与上一次卖出至少相隔N天;(为了重置交易环境)

虽然上面两种方法的确可以降低交易频率,增加交易的持续时间。但是要注意,我们的目标不是为了【降低交易频率】,而是【降低频繁换手导致的摩擦成本】,只不过为了实现这个目标,“交易频率的降低”是一种可能得结果。

因此博主的建议是,如果我们是组合多种策略,上面两种思路是OK的,但我们在测算指标时,尽量在严格执行信号的情况下,引入外部的一些改进机制,而不是阉割掉原有的策略信号。

下一部分,我们将构建回测策略,对均线及其改进策略进行回测,并评估它的表现

相关文章:

量化择时——均线策略及改进方法(第1部分—因子测算)

文章目录道氏理论个股股价走势阶段板块、行业股价走势均线策略交易逻辑均线策略效果测算改进一:设置策略信号偏移量改进二:生成止盈止损信号道氏理论 使用盘面数据,根据计算出的一条或多条均线,判断入场与离场的时机,…...

封装几个有用的 Vue3 组合式API

本文将介绍如何使用Vue3来封装一些比较有用的组合API,主要包括背景、实现思路以及一些思考。 就我自己的感觉而言,Hook与Composition API概念是很类似的,事实上在React大部分可用的Hook都可以使用Vue3再实现一遍。 为了拼写方便,下文内容均使用Hook代替Composition API。相…...

MyBatisPlus中的条件构造器Wrapper

引言为什么要了解Wrapper?Wrapper解决的了什么问题?一、Wrapper:条件构造抽象类,用来解决单表操作出现的一些复杂问题,例如排序,和模糊查询等等结构图文字解释AbstractWrapper : 用于查询条件封装&#xff…...

类和对象及其构造方法

类和对象 现实世界的事物由什么组成? 属性 行为 类也可以包含属性和行为,所以使用类描述现实世界事物是非常合适的类和对象的关系是什么? 类是程序中的“设计图纸” 对象是基于图纸生产的具体实体什么是面向对象编程? 面向对象编…...

HStream Console、HStreamDB 0.14 发布

近两个月,HStreamDB 相继发布了 0.13 和 0.14 版本,包含多项已知问题修复。同时,我们也发布了全新的 HStream Console 组件,为 HStreamDB 带来了简洁友好的图形化管理界面,将帮助用户更轻松地使用和管理 HStreamDB. H…...

参考文献怎么查找,去哪里查找?一篇文章讲明白这些问题

在我们撰写论文查找参考文献时,往往不知道从哪里入手,本文小编就针对下面这三个方面给大家详细讲解下: 一、查找参考文献方法 二、参考文献资料查找网站 三、参考文献格式规范 一、查找参考文献方法: 1、知网全球最大的中文数据…...

docker-compose+HAProxy+Keepalived搭建高可用 RabbitMQ 集群

基础环境准备 系统环境:Centos7.6 Docker version: 1.13.1, build 7d71120/1.13.1 Docker Compose version: v2.2.2 三个节点: 10.10.11.79 (这一台做rabbitmq集群根节点) 10.10.11.80 (这台做haproxyke…...

自动化框架如何搭建?让10年阿里自动化测试老司机帮你搞定!自动化测试脚本怎么写?

一、何为框架?何为自动化测试框架? 无论是日常技术交流,还是在自动化测试实践中,经常会听到一个词叫:框架。之前对“框架”这个词知其然不知其所以然。现在看过一些资料以及加上我自己的一些实践有了我自己的一些看法…...

剑指 Offer 15. 二进制中1的个数

剑指 Offer 15. 二进制中1的个数 难度:easy\color{Green}{easy}easy 题目描述 编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为 汉明重量).…...

CHAPTER 3 磁盘管理

磁盘管理1 磁盘管理1.1 块设备信息(lsblk)1.2 挂载硬盘1.2.1 挂载单个硬盘(mkfs、mount)1.2.2 磁盘分区工具(fdisk)1.2.3 创建分区1.2.4 相关命令1. df2. partprobe3. mkfs1.3 逻辑卷管理器(LVM)1. 涉及概念2. 使用LVM流程1.4 磁盘检测及修复(fsck)1 磁盘…...

MS python学习(7)

Managing Keys - dotenv Managing keys usage of .env module 项目地址:https://github.com/theskumar/python-dotenv Reads the key,value pair from .env and adds them to environment variable. 将key明文(hard code)形式写在script里…...

工业物联网“杀手级”应用—预测性维护

一、预测性维护的必要性 随着新一轮科技革命和产业变革的兴起,工业物联网、大数据、人工智能等技术正与经济社会各领域加速渗透融合。由于市场竞争对精细化成本管控的要求,设备的重要性越来越凸显,设备的维护对策也必然从响应式维护&#xf…...

Java代码弱点与修复之——Explicit null dereferenced(显式空间接引用)

弱点描述 Explicit null dereferenced, 显示空间接引用。是 Coverity 静态代码分析工具检测到的一种中风险缺陷。这种缺陷通常发生在尝试使用空指针引用调用对象上的方法或访问属性时。 Explicit null dereferenced的缺陷可能会导致程序崩溃或产生不可预测的结果。 在Java语…...

一元导数与多元求导数总结

前序:文章结构 1.一元导数 ①一般函数求导 因为太简单的原因,事实上一般函数求导不会单独出现,大多数都是出现在各种特殊的求导过程中。只要掌握16个基本求导公式没问题。 ②复合函数求导(主要链式法则) 这种一般是…...

通过堆栈分析深拷贝、浅拷贝、赋值的差异

前言数据类型分为:基本数据类型String、Number、Boolean、Null、Undefined、Symbol对象数据类型Object、Array基本数据类型的特点:直接存储在栈(stack)中的数据引用数据类型的特点:存储的是该对象在栈中引用,真实的数据存放在堆内…...

网络割接概述

网络割接概述割接背景企业网络的变化割接概述割接难点割接的操作流程情景模拟及解决方案常见的割接场景割接背景 随着企业业务的不断发展,企业网络为了适应业务的需求不断的改造和优化。无论是硬件的扩容、软件的升级、配置的变更,凡是影响现网运行业务…...

开放开源开先河(下)

目录 1.唯一性定义品牌 2.打造爆款塑造品牌 3.生态系统传播品牌 打造爆款塑造品牌 目前全球100多个开源基金会大部分都在美国,已成功孵化了800多个项目。而开放原子开源基金会现有136家捐赠单位,2020年9月,百度将区块链项目超级链&#xff0…...

maven的学习

为啥要用maven 1、不用认为添加jar包所依赖的其他jar包 2、能在本地仓库只保留一份jar包,避免了多个工程使用相同jar包,需要重复导入的问题,减少冗余 3、能够规范添加jar包,在下载需要的jar包时有多种方法,但是不能保…...

从前端到后端全面解析文件上传

从前端到后端全面解析文件上传1.前端准备(vueelement-ui)2.后端准备(SpringBootminiomysql)2.1解决跨域2.2配置minio与mysql2.3controller层2.4service层1.前端准备(vueelement-ui) <!DOCTYPE html> <html lang"en"> <head><meta charset"…...

全网火爆,软件测试面试题大全,接口测试题+回答 (18k+的offer)

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 面试测试工程师的时…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

Go 语言接口详解

Go 语言接口详解 核心概念 接口定义 在 Go 语言中&#xff0c;接口是一种抽象类型&#xff0c;它定义了一组方法的集合&#xff1a; // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的&#xff1a; // 矩形结构体…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX&#xff08;不访问内存&#xff09;XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...