通用策略04丨ORB魔改框架+自适应动量过滤模板

news2024/11/18 1:26:59

 量化策略开发,高质量社群,交易思路分享等相关内容

大家好,今天我们分享2023年度第4期通用策略——ORB魔改框架+自适应动量过滤模板。

本期策略是2023年通用系列第4篇。本期主要内容有对ORB原版的逻辑魔改,其次我们将跨日周期均线过滤,改为自适应动量过滤。具体魔改主要针对的ORB进场,添加SF32的出场,以及降低跨日周期过滤延迟性。

当然在这个策略中,还有很多很多可以“增删改查”的地方,如:多种出场逻辑的自适应切换等。

1、策略逻辑

在SF32策略中(2021年7月份发布),我们对ORB原版策略加入了对日级别波动率RANGE,进场时间限制,日内止损与日间开盘出场等逻辑。

如下图所示:

在进场逻辑中,网上看到的版本大部分是百分比、ATR等一个区间幅度,在SF32版本中我们采用了前一天的振幅,如下图所示:

在今天分享的版本中,我们采用的是日线级别的ATR波动率,目的就是为了防止前一天对第二天带来的波幅噪音。就好像前几日的生猪插针、以及2021年10月份的跳空跌停,这2者场景都会导致第二天的波幅无故的增大与缩小。

因此我们封装日线ATR函数,如下图所示:

但是在这里我们剔除了SF32中的时间限制因素。下面我将重点讲述一下自适应动量过滤逻辑,在该逻辑中实现了一个低通滤波器,用于平滑价格序列和提取周期性分量。主要步骤如下:

1、 计算价格的中间价price和6日均价smooth;

2、 如果当前Bar小于7,计算4日周期性分量cycle;否则递归计算周期性分量;

3、计算周期性分量的一阶差分q1和三阶差分i1;

4、 如果q1和q1[1]不为0,计算相位差delta_phase;并限制其范围在0.1到1.1之间;

5、计算delta_phase的5日中值median_delta;如果为0,则周期dc取15,否则计算周期dc;

6、 计算实时周期instperiod和低通滤波后的周期period;

7、 计算价格的一阶差分value1;

8、 定义4阶IIR低通滤波器的参数a1,b1,c1,coef1,coef2,coef3和coef4;

9、如果当前Bar小于4,filt3取value1;否则递归计算4阶IIR滤波后的value1,得filt3;

10、 最后输出包括价格中间价price,周期性分量cycle,相位差delta_phase,周期dc和instperiod,低通滤波后的周期period,以及4阶IIR滤波后的value1(filt3)。

部分代码截图如下:

4阶IIR滤波器指的是4阶无限脉冲响应(Infinite Impulse Response)数字滤波器。

数字滤波器常分为FIR滤波器(有限脉冲响应)和IIR滤波器(无限脉冲响应)两大类。其中:

FIR滤波器的输出只与当前和过去的有限个输入相关,脉冲响应是有限的,结构简单稳定。

IIR滤波器的输出不仅与当前和过去的输入相关,还与过去的输出相关,脉冲响应是无限的,结构更加复杂。IIR滤波器可以实现更高的选择性和更宽的过渡带,所以通常需要更低的阶数。

4阶IIR滤波器指的就是结构包含4个 poles 和 zeros 的 IIR 滤波器。在我们的代码案例中,这4个参数在a1,b1,c1和coef1-4这几个变量中体现

这段代码运用了平滑处理、周期性分量提取、一阶差分、低通滤波和IIR滤波等技术手段,实现了对价格序列的滤波处理和特征提取。代码的逻辑清晰,各方法之间衔接顺畅,但是部分变量命名可以更加规范和容易理解,这是可以进一步改进的地方。

出场逻辑方面,我们延续采用SF32策略中的逻辑,此处并没有去迭代。因此不再赘述,大家可以翻看2年前的文章,会员朋友可以看看源码。不过在这里可以给大家一些迭代的思路:

(1)出场中在低通滤波器的过滤下,可以自适应去切换跟踪出场还是日间出场。

(2)根据第二天开盘形态、振幅等情况切换出场逻辑。

(3)日间出场运用在节假日、月历、周历效应上等。

2、绩效

组合

Ap

eb

pk

3、总结

1、该策略第一次尝试使用低通滤波器进行行情择时过滤,同样该方法也可以用于主进场逻辑。

2、出场逻辑适用于趋势、隔日波段、高低开等行情结构,对于日线级别长度K线一定积极作用,因此大家可以根据该逻辑进行反向品种筛选。

3、在资金管理方面,我注意到一个问题,以往都是按照复权价格计算,但是资金却没有复权,所以这里实际上这里应该将价格除权计算,如下图所示:

由于各平台差异,回测绩效以TBQ版本为准!!!

本策略仅作学习、交流使用,实盘交易盈亏投资者个人负责!!!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?

停机迁移方案 最 low 的方案,就是很简单,大家伙儿凌晨 12 点开始运维,网站或者 app 挂 个公告,说 0 点到早上 6 点进行运维,无法访问。 接着到 0 点停机,系统停掉,没有流量写入了,…

设计一个高流量高并发的系统需要关注哪些点

1、设计原则 1.1、系统设计原则 在设计一个系统之前,我们先要有一个统一且清晰的认知:不要想着一下就能设计出完美的系统,好的系统是迭代出来的。不要复杂化,要先解决核心问题。但是要有先行的规划,对现有的问题有方…

字符与代表数据的转化

目的 在与设备交互当中,大都以十六进制的数进行交互。 而显示给用户时,是以字符的形式显示。 这中间就需要字符与其所代表的数值的转化,比如: ‘0F’---->0x0F 这怎么实现呢,一个是字符,另一个是数字&a…

Apache seatunnel集群部署

跳转到安装目录 cd /opt/soft/seatunnel 1.设置环境变量 export SEATUNNEL_HOME/opt/soft/seatunnel export PATH$PATH:$SEATUNNEL_HOME/bin 启动服务端 ./bin/seatunnel-cluster.sh -d 启动客户端 ./bin/seatunnel.sh --config ./config/kafka2gbase_udf.conf 这样就启…

Vue3 数字滚动插件 vue-countup-v3

文章目录 介绍效果安装属性事件配置项完整样例 介绍 vue-countup-v3 插件是一个基于 Vue3 的数字动画插件,用于在网站或应用程序中创建带有数字动画效果的计数器。通过该插件,我们可以轻松地实现数字的递增或递减动画,并自定义其样式和动画效…

软件测试职业发展的7个阶段,哪个都吃香!

首先谈谈我在软件测试行业的亲身经历:我的一位同事曾经很认真地问过我一个问题,他说他现在从事软件测试工作已经4年了,但是他不知道现在的工作和自己在工作3年时有什么不同,他想旁观者清,也许我能回答他的问题。此外他…

手写vue-diff算法(一)

Vue初始化流程 1.Vue流程图 Vue流程图: Vue的初始化流程,默认会创建一个Vue实例,执行初始化、挂载、模板编译操作,模板被编译成为render函数;在render函数初始化时会执行取值操作,从而进入getter方法对当…

【科研入门】会议、期刊、出版社、文献数据库、引文数据库、SCI分区、影响因子等基础科研必备知识

大家好,我是洲洲,欢迎关注,一个爱听周杰伦的程序员。关注公众号【程序员洲洲】即可获得10G学习资料、面试笔记、大厂独家学习体系路线等…还可以加入技术交流群欢迎大家在CSDN后台私信我! 本文目录 一、会议与期刊二、如何辨别是否…

【UE5 Cesium】07-Cesium for Unreal 从一个地点飞行到另一个地点(下)

UE版本:5.1 介绍 本文以在基督城(新西兰)和悉尼(澳大利亚)这两个城市间为例,在上一篇文章(【UE5 Cesium】06-Cesium for Unreal 从一个地点飞行到另一个地点(上)&#…

vant-weapp源码解析---Tab标签页

这个标签栏,属于一个很常见的组件,一般我不用这个组件,自己手写一个scroll-view以及样式,更加轻便。但是我写的最简单的标签页没有滚动效果,以及选中标签动画效果。因此根据标签栏滚动学习下,并且自己手写一…

动态规划的入门

https://www.bilibili.com/video/BV13Q4y197Wg/ 动态规划解题步骤 —— carl 动态规划,英文:Dynamic Programming,简称DP,如果某一问题有很多重叠子问题,使用动态规划是最有效的。 所以动态规划中每一个状态一定是由…

Postman 最被低估的功能,自动化接口测试效率简直无敌!

目录 该篇文章针对已经掌握 Postman 基本用法的读者,即对接口相关概念有一定了解、已经会使用 Postman 进行模拟请求的操作。 接口结果判断 功能区 脚本相关 代码模板 集合(批量)测试 批量执行 变化的参数数据 请求依赖问题 接口执行顺序 数据传递 解决依…

系统出错。发生系统错误 1067。进程意外终止。

问题描述 使用管理员cmd,任务管理器均无法启动mysql。 报错提示信息:系统出错。发生系统错误 1067。进程意外终止。 错误排查 1.检查3306端口是否被占用 在cmd输入netstat -aon|findstr 3306,结果如下: 如果你发现是端口被占用…

OpenAI 又赢麻了谷歌 DeepMind 创始人刚称 Gemini 能碾压 GPT-4

整理 | 褚杏娟,核子可乐 谷歌在上个月的开发者大会上公布了一系列 AI 新项目,当时首次亮相的 Gemini 曾受到不少嘲讽。但近日,DeepMind 联合创始人兼 CEO Demis Hassabis 自曝,工程师们正在使用 AlphaGo 的技术来开发 Gemini&…

Java框架之spring 的 AOP 和 IOC

写在前面 本文一起看下spring aop 和 IOC相关的内容。 1:spring bean核心原理 1.1:spring bean的生命周期 spring bean生命周期,参考下图: 我们来一步步的看下。 1 其中1构造函数就是执行类的构造函数完成对象的创建&#x…

【Java】Java核心 79:Git 教程(2)Git 安装

文章目录 目标内容总结 上一篇我们讲到:Git是一个分布式版本控制系统,常用于协同开发和版本管理的工具。它可以跟踪文件的修改、记录历史版本,并支持多人协同工作。通过Git,你可以轻松地创建和切换分支、合并代码、回滚修改等操作…

Kicad编译

Windows 1.安装visual studio Pro 2019 以上版本,建议2022,自行破解,安装时一定要勾选上cmake工具;安装Git bash 2.去Gitlab上fork kicad的master分支到自己的gitlab仓库上,在本地创建kicad-source路径,初…

【debug】:安装mmcv-full==1.2.4包过程报错

【debug】:安装mmcv-full1.2.4包过程报错This error originates from a subprocess, and is likely not a problem with pip WARNING: Ignoring invalid distribution -illow (d:\anaconda3\envs\pytorch\lib\site-packages) 这是由于安装包过程中曾经出现问题,会影…

生成特定相关系数的变量

本文转载自根据相关性生成变量 已知一组变量a,想要生成另一组变量b,要求a与b之间相关性为c。 实现思路如下: 设固定变量为x1,随机变量x2,相关系数为rho。x1与x2之间的相关性可以转化为向量之间的夹角问题,…

Linux与Windows:操作系统之争及个人体验比较

在当今数码化的世界中,操作系统扮演着关键的角色。Linux和Windows作为最受欢迎和广泛使用的操作系统之一,具有不同的特点和优势。作为一个AI模型,我虽然没有真正的使用经验,但我可以就这两个操作系统进行比较,并提供一…