专享策略09 | 基于成交量的阶梯均线过滤震荡行情

松鼠Quant
2024-04-18
量化策略开发,高质量社群,交易思路分享等相关内容


『正文』

ˇ

安装视频:


,时长10:01

好久不见,我是乌克兰剑圣。

今天发布2024俱乐部第三个策略:基于阶梯均线过滤震荡行情的CTA策略。利用均线构建交易策略是每一个量化交易新手的"hello world"。


均线指标实际上是移动平均线指标的简称,移动平均线(Moving Average,简称MA)由美国投资专家葛兰威尔(jogepsb ganvle)所创立,由道氏理论的“三种趋势说”演变而来,将道氏理论具体的加以数字化,从数字的变动中去预测股价未来短期、中期、长期的变动方向,为投资决策提供依据。


时至今日,均线的计算方法有多种变形,MA,EMA,SMA,AMA等计算方式。无论哪一种变形,都无法避免粘合缠绕,如下图:


图片


俗称震荡,从趋势交易的角度来看,这种没有趋势行情的就是回撤期。基于均线的交易模型在这种行情下会亏损,也就是失效。


早在2021年,我们发布过一个均线过滤的策略:SF30 | 双均线交易模型的震荡过滤。这个策略是计算波动差,也就是波动率来过滤震荡。相当于在均线的基础上增加了一个过滤指标。


然而,今天这个策略我们不再依赖过滤器,而是通过排列组合重新赋值的方法达到过滤目的,也就是不需要额外指标辅助,如下图:

图片

均线的理想状态应该就是这种样子,趋势的时候变化,震荡时候就应该走横,不要有绕来绕去的变化。在软件里实现:

图片

如上图,当出现震荡时,多条均线形成阶梯一样的形态。遇到趋势时又能恢复原样。

图片

我们都知道,均线即使肉眼观察到是“横”的状态,它具体的数值也是会有微小变动的,如果它的前值与新值一致,我们就可以通过一个简单的方法来过滤震荡:


macond=ma[-1]==ma[-2]

是的,就是这一个公式即可起到过滤效果。


图片

这是一个好方法,但是依然不能完全过滤震荡,毕竟震荡是小级别的趋势。我们只能减少因均线缠绕造成的损失。

图片

重点:

这个均线是如何计算的呢?以多头为例,我们需要保存不断创新高的值,当均线不在创新高时,我们就用前值来当作最新的均线值,其中我们也用到成交量加权来进一步优化均线,空头反之。


当然了,其中还有一些综合条件,等大家拿到源码后可以慢慢研究,特别是如何利用“阶梯形态”来改善策略,专享09这个策略条件不多逻辑不复杂,便于各位自己迭代。


我们在构建策略时,也考虑了量能的变化,放量与缩量

















If(CurrentBar == 0)    {      OBVValue = 0;   // 如果是第一个Bar,则OBV值初始化为0    }Else    {If(Close>Close[1])      {        OBVValue = OBVValue[1]+Vol;    // 如果收盘价比前一根Bar高,则OBV增加当日成交量      }Else If(Close<Close[1])      {        OBVValue = OBVValue[1]-Vol;    // 如果收盘价比前一根Bar低,则OBV减少当日成交量      }Else      {        OBVValue = OBVValue[1];    // 如果收盘价和前一根Bar相等,则OBV保持不变      }    }


策略部分逻辑

这个策略是一个基于市场趋势和成交量的趋势跟踪策略,主要分为开仓逻辑、持仓管理和出场逻辑三个部分。以下是对策略的详细解释:

  1. 开仓逻辑:

    • 首先,策略会根据移动平均线和OBV(On-Balance Volume)指标来判断当前市场趋势。

    • 如果价格高于一定周期的移动平均线且OBV指标上涨,视为多头趋势,准备开多仓。

    • 如果价格低于一定周期的移动平均线且OBV指标下跌,视为空头趋势,准备开空仓。

    • 此外,策略还考虑了一些条件过滤,例如确保开多仓时当前不持有多头仓位,开空仓时当前不持有空头仓位。

  2. 持仓管理:

    • 策略记录了自上一次开仓以来的Bar数量,用于计算持仓时间。

    • 根据持仓时间的增加,策略会逐渐减小止损止盈幅度的乘数,以动态调整风险管理。

  3. 出场逻辑:

    • 策略采用了动态调整的出场逻辑。具体来说,根据持仓方向计算了吊灯出场线。

    • 如果持有多头仓位且价格低于吊灯出场线,或持有空头仓位且价格高于吊灯出场线,则平仓

  4. 其他功能:

    • 策略还包括了移动平均线的计算、OBV指标的计算、参数自适应等功能。

    • 在代码中还对开仓次数进行了限制,避免过于频繁地开仓。

    • 对于每次开仓,记录了开仓后的最高价和最低价,用于计算吊灯出场线。

综合来看,这个策略基于市场趋势和成交量指标,通过一系列条件判断进行开仓决策,并在持仓期间动态调整止损止盈幅度,以管理风险。出场时机则是根据动态计算的吊灯出场线进行判断。策略还考虑了参数自适应和开仓次数限制等因素。需要注意的是,这只是一个简单的框架,具体的参数设置和策略细节可能需要根据具体市场和品种进行调整和优化。

TBQuant组合绩效

图片

图片

图片

图片

螺纹

图片

焦炭

图片

鸡蛋

图片

纸浆

图片

原油

图片


图片

Vn.py版本


回测螺纹数据使用松鼠数据库后复权主连数据,数据格式如下:

图片

图片

图片

图片

图片

结语

    专享09策略采用成交量和均线构建交易策略,亮点是仅使用均线一个计算方式即可实现过滤效果,无复杂的计算逻辑方便小伙伴迭代。特别是如何利用“阶梯形态”来改善策略,非常期待大佬们的迭代策略。使用python的朋友可以直接从松鼠数据库下载每日更新的期货数据用于研究,复盘。


欢迎加入2024松鼠俱乐部,获得量化策略源码,培训视频,行情数据。

1.原创策略源码,每月至少1期新策略源码。

2.专属数据库(国内商品数据每日更新)

3.个性化工具类-波动率跟踪

4.松鼠分享会(培训视频每月1期)

图片

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


分享