量化策略开发,高质量社群,交易思路分享等相关内容
大家好,今天我们分享2023年度第4期通用策略——ORB魔改框架+自适应动量过滤模板。
本期策略是2023年通用系列第4篇。本期主要内容有对ORB原版的逻辑魔改,其次我们将跨日周期均线过滤,改为自适应动量过滤。具体魔改主要针对的ORB进场,添加SF32的出场,以及降低跨日周期过滤延迟性。
当然在这个策略中,还有很多很多可以“增删改查”的地方,如:多种出场逻辑的自适应切换等。
在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)日间出场运用在节假日、月历、周历效应上等。
组合
Ap
eb
pk
1、该策略第一次尝试使用低通滤波器进行行情择时过滤,同样该方法也可以用于主进场逻辑。
2、出场逻辑适用于趋势、隔日波段、高低开等行情结构,对于日线级别长度K线一定积极作用,因此大家可以根据该逻辑进行反向品种筛选。
3、在资金管理方面,我注意到一个问题,以往都是按照复权价格计算,但是资金却没有复权,所以这里实际上这里应该将价格除权计算,如下图所示:
由于各平台差异,回测绩效以TBQ版本为准!!!
本策略仅作学习、交流使用,实盘交易盈亏投资者个人负责!!!