本篇文章是基于研究报告的复现作品,旨在记录个人的学习过程和复现过程中的一些思路。

感谢中信期货研究员前辈的宝贵思路。

一、策略简介

1.双均线策略

均线是最经典的传统技术指 标之一 ,最早由美国投资专家Joseph E.Granville于 20 世纪中期提出,代表了过去一个时间周期内的平 均走势。双均线策略则是运用两条不同周期的移动平均线的相对大小,判断买 进与卖出时机的策略,具体进场规则为短周期均线上穿长周期均线时做多,短周期均线下穿长周期均线时做多。
2.Aberration 策略
Aberration 策略由 Keith Fitschen 于 1986 年发明,在进场时使用了布林带 通道,是布林带系统的突破式应用。布林带通道由三条通道线组成,中轨为一 定周期的移动均线,上下轨在中轨的基础上加减一定的标准差形成。当价格向上突破上轨时做多,向下突破下轨时做空。
3.MACD 结合均线策略
MACD 指标和 SMA 一样都使用了均线的概念,但MACD使用指数式递减加权来计算均值,即在移动平均线的基础上按照时间进行加权,越靠近当前日期的价格对未来价格影响越大,赋予更大的权重,越远离当前日期价格,赋予越小的权重,可以进一步体现价格趋势变化的快慢。当短期均值>长期均值,且MACDDiff>0,且 DIF>0,且当前价>短均线时做多;当短期均值<长期均值,且MACDDiff<0,且 DIF<0,且当前价<短均线时做空。
4.唐奇安结合均线策略
唐奇安通道的上下轨由前一个周期内的最大值和最小值形成,极易抓住单边行情。当价格向上突破唐奇安上轨,且短期均值>长期均值时做多,当价格向下突破唐安奇下轨且短期均值<长期均值时做空。

二、策略回测

1.回测标的
采用螺纹钢与豆油连续主力合约15分钟bar数据,时间从2020-01-03 14:30:00至2022-11-04 23:00:00。
回测的初始金额为200万元,手续费设置为每次成交金额的0.0001。
所有策略的出场规则都摒弃了原本传统的信号反转出场,调整为盈亏 比率达到固定比率的止盈止损出场,止盈:止损固定为 4:1。
2.SMA策略分析
双均线策略已在第一部分有所介绍,具体进场规则为短均线上穿长均线形 成金叉做多,短均线下穿长均线形成死叉做空,盈亏比率达到固定数值时止盈止损出场。单品种回测下来,回测结果差别很大。从图中可以看出,螺纹钢合约在SMA策略上的表现要优于豆油合约。
图 2.1 SMA策略回测净值

表 2.1 SMA策略指标计算结果

虽然两个合约在回测期间均取得了较高的收益,但从夏普比率与最大回测指标来看,螺纹钢合约显然在SMA策略上表现更优,其在取得较高收益的同时回测更小。

3.Aberration 策略分析

Aberration 策略由 Keith Fitschen 于 1986 年发明,在进场时使用了布林带通道,是布林带系统的突破式应用。布林带通道由三条通道线组成,中轨为一 定周期的移动均线,上下轨在中轨的基础上加减一定的标准差形成。当价格向 上突破上轨时做多,向下突破下轨时做空。在均线的基础上叠加标准差可以在 震荡行情中减少频繁开仓止损的情况,对双均线策略进行优化。从回测结果来看,豆油合约的净值表现要优于螺纹钢合约。与前文的SMA策略相比,螺纹钢与豆油的净值表现都出现了较大幅度的下降,这里思考原因,由于豆油合约以及螺纹钢合约在回测周期内的收盘价走势并未表现出过于明显的震荡行情,因此导致信号的准确度不高。
图 2.2 Aberration 策略回测净值

图 2.3 合约收盘价走势

表2.2  Aberration 策略指标计算结果

4.MACD 结合均线策略

MACD由快速线 DIF, 慢速线 DEA和柱状图MACDDiff组成。在进场规则的设定中,将原本突破时机的判断方式更改为多种状态同时满足,来缓解均线的滞后性。从回测结果来看,螺纹钢合约的表现要由于豆油合约,且单一合约的表现要明显优于Aberration 策略,可以看出将信号触发条件进行更为严格的要求后,净值的表现得到了提升。
图2.4 MACD 结合均线策略回测净值
表 2.3 MACD 结合均线策略指标计算结果

从指标计算结果可以看出,螺纹钢合约的收益率相比于SMA策略而言更高,且最大回撤更小,因此将MACD策略结合SMA策略后,通过叠加 MACD 指标同时放宽双均线的进场要求,可以增加交易频次,增加盈利点,从提升总收益率这个角度优化双均线策略。

5.唐奇安结合均线策略

唐奇安通道指标由 Richard Donchian 发明,在 1983 年被推举为首届“最佳 获利奖”,著名的海龟策略在进场时就是使用了唐奇安通道。唐奇安通道的上下 轨由前一个周期内的最大值和最小值形成,极易抓住单边行情。但在短周期内 单独使用唐奇安通道对参数周期依赖性严重,信号触发极不稳定。两者叠加使 用后,双均线能增强原本唐奇安进场信号的稳定性,唐奇安通道能弥补双均线指标滞后的缺点,有如虎添翼的作用。
从回测结果来看,虽然螺纹钢与豆油合约在周期内取得了正向收益,但是唐奇安结合均线策略的表现明显不如SMA策略。这里思考,可能是由于唐奇安通道指标的计算周期数值设置不同造成的,后续可以研究策略收益与周期窗口的敏感性分析。
图 2.5 唐奇安结合均线策略回测净值

表 2.4  唐奇安结合均线策略指标计算结果

6.策略综合对比

将上述四个策略在两个品种合约下的回测数据进行同一对比。从净值曲线来看,豆油合约与螺纹钢合约在相同策略下的表现不尽相同,但是两个品种中,表现最优的策略均为MACD策略结合SMA策略。

图 2.6策略回测净值

表 2.5 豆油合约策略指标计算结果

表 2.6 螺纹钢合约策略指标计算结果

理论上分析,MACD 结合均线策略和唐奇安结合均线策略主要是从改善均线滞后性这 一角度进行优化的,改良后的策略能更快地抓住单边行情,从而提高策略收益。但是从回测的情况来看,这两个策略的实际表现却出现明显分化,MACD 结合均线策略收益表现明显由于唐奇安结合均线策略的收益表现,这可能与唐奇安通道的计算周期有关,也是后续进一步研究的内容。
参考资料:
期货择时系列(二): 复合中短周期双均线策略简览.中信期货

【CTA系列】复合中短周期双均线策略相关推荐

  1. Python双均线策略回测(2021-10-12)

    Python双均线策略回测 1.择时策略简介 根据百度百科的解释,择时交易是指利用某种方法来判断大势的走势情况,是上涨还是下跌或者是盘整.如果判断是上涨,则买入持有:如果判断是下跌,则卖出清仓,如果是 ...

  2. Python数据分析之股票双均线策略制定

    Python数据分析之股票双均线策略制定 需求:双均线策略制定 库 tushare包 预处理数据 df = pd.read_csv('./maotai.csv').drop(labels='Unnam ...

  3. 开源量化框架Catalyst中文教程(3)——双均线策略

    GitHub:https://github.com/enigmampc/catalyst 官方文档:https://enigma.co/catalyst/index.html 参考视频:网易云课堂&l ...

  4. Tushare + Backtrader实现双均线策略 以工商银行为例

    参看文章: Welcome - Backtrader 6.如何用backtrader实现双均线策略?以工商银行为例_云金杞-CSDN博客 Python量化交易学习笔记(53)--backtrader的 ...

  5. 双均线策略(期货)——Python量化

    双均线策略 目录 双均线策略 1. 原理 均线的"前世今生" 均线理论为什么有效? 均线理论的缺陷 均线理论的改进 2. 策略逻辑 3. 策略代码 4. 回测结果与稳健性分析 1. ...

  6. SMA、EMA与双均线策略

    什么是MA MA是移动平均线(Moving Average)的缩写,是一种简单的技术分析工具,通过创建一个不断更新的平均价格来分析股票价格趋势,或者用来确定其支撑和阻力水平.这是一种滞后指标,因为它基 ...

  7. 2020-12-24 如何编写一个简单的双均线策略

    如何编写一个简单的双均线策略 目的:编写一个无需写入函数.类的简单策略,对比文字与代码表达的区别,了解编写逻辑与原理 策略类型:双均线策略 策略原理: 双均线策略,指的是运用两条不同周期的移动平均线, ...

  8. 数据分析——股票双均线策略分析

    在数据分析中,对于股票双均线策略分析是其中一个应用,这对于短期投资来说是非常有用的(虽然咱们不推荐). 什么是均线? 对于每一个交易日,都可以计算出前N天的移动平均值,然后把这些移动平均值连起来,成为 ...

  9. 量化策略初探——使用tushare进行沪深300ETF双均线策略

    使用tushare采集沪深300ETF数据,并对沪深300ETF采用简单移动平均.指数移动平均.进行双均线策略,最后使用backtrader进行回测. 一.基本概念 双均线策略:运用两条不同周期的移动 ...

最新文章

  1. python 把集合转成字典的方法
  2. 闭关纪要17.Google app engine的简单应用
  3. JavaScript 技术篇-js检测原生对象类型实例演示,js的3种对象类型
  4. 我是一位老师,讲课是我的乐趣,可是……
  5. 五行塔怎么吃第五个_中医美容——“五行美容养颜法”,善用五行,女人会越来越漂亮...
  6. PX4 的 ECL EKF 公式推导及代码解析
  7. 【小白冲冲冲!!!】补2:SLAM中最小二乘问题的引入及求解
  8. VC中,如何将十六进制字符串转换为十进制数?
  9. 获得周公解梦数据接口java_周公解梦接口调用示例
  10. 把码云项目上传到服务器,将本地项目上传到码云上(vue项目)
  11. cad修改快捷键_CAD快捷键,提高绘图速度
  12. Spring Data JPA手动管理事务
  13. 推荐系统之用户标签,以及基于标签的算法
  14. 【菜鸟逆袭记】之初识操作符
  15. 哪款蓝牙耳机跑步好用?跑步好用的耳机推荐
  16. mysql week函数参数_MySQL week()函数详解
  17. linux复制并重命名文件
  18. 双栈完全解决计算器问题
  19. 【2019-09-04】恐惧就是进化的暗示
  20. 多线程Synchronized锁的使用与线程之间的通讯

热门文章

  1. 项目目标管理——里程碑
  2. Failed to connect to /xxx.xxx.xxx:50010 for block, add to deadNodes and continue
  3. 干货 | 携程桌面应用的前端内存优化与监控
  4. yml中对特殊字符的处理
  5. java中可变类型,不可变类型,不可变引用,不可变封装
  6. Linux进程和任务管理
  7. 牛客算法周周练6---华华对月月的忠诚(C++)
  8. 互联网日报 | 6月5日 星期六 | 中国邮政跨界开奶茶店;泛海13亿美元将IDG卖给黑石;乡村振兴样本曹县又一业绩直逼上海...
  9. Nothing Ventured, Nothing Gained
  10. amd显卡多屏识别了 但是屏幕不亮_多屏宝常见问题和故障排除