没几天就到五一假期啦,想来也有段时间没分享策略了,所以今天给大家准备了一个期货量化策略作为节前福利,请收下~

本篇分享的策略是在掘金量化终端所提供的示例策略的基础上进行优化的,该策略名为Dual Thrust策略,以期货作为交易标的

此处我们先简单回顾下策略逻辑。

Dual Thrust策略是一个趋势跟随策略,它是以开盘价±历史N天的波幅作为震荡区间上下轨,突破这个震荡区间上下轨便跟随开仓,上下轨和波幅的计算方式如下:

上轨:开盘价+K1*波动

下轨:开盘价-K2*波动

波幅:max(HH - LC, HC - LL)

其中,HH为历史N天最高价的最大值LC为历史N天收盘价的最小值HC为历史N天收盘价的最大值LL为历史N天最低价的最小值

了解策略逻辑后,我们开始调整参数

这里从期货比较经典的焦炭品种开始,同时将交易品种从主力合约修改成主力合约下的具体合约,并实时更换(仅平仓)

策略有三个参数:回溯周期N、上下轨波动系数K1和K2,初步设置为3、0.5、0.5;

回测时间设为最近三年:2019.06.01-2022.04.22(受目前回测机制限制,期货主力合约只能回测最近三年的数据 ),因为本策略涉及较多参数,进一步将2019.06.01-2021.09.30区间作为训练样本,2021.10.01-2022.04.22区间作为测试样本;

然后分别上调手续费和滑点为万分之2.4和万分之3.6,初始本金是10W;

最后,在on_order_status()中新增平今仓和平昨仓的信号(因为期货实盘信号中有今仓和昨仓的区别,从回测到实盘需进一步处理)。

修改参数后,运行回测,结果如下

从回测情况来看,焦炭后半段表现较好,但在2019年下半年,策略大幅回撤近70%

出现这一问题的原因在于:焦炭行情处于转折区域,波动放大,策略不够灵敏。行情波动加大,导致策略上下轨宽幅放大,调仓速度过于滞后。

针对该问题,可以有多种方式来处理。比如,动态调整K值或增加止盈止损条件等。

我们先试着动态调整K值。

增加一个指标,当指标呈多头趋势时,K1值下调至0.2,使K1小于K2,更易触发多头信号;当指标呈空头趋势时,K2值下调至0.2,使K2小于K1,更易触发空头信号。

指标选KDJ,多空趋势设定为:K>D时,多头趋势;K<=D时,空头趋势

KDJ指标的计算主要依托于talib模块包,使用常用参数KDJ(21,3,3):

K, D = talib.STOCHF(high, low, close, context.kdj_param1, context.kdj_param3, fastd_matype=0)
K = np.array(list(map(lambda x: SMA(K[:x], context.kdj_param2), range(1, len(K) + 1))))
D = np.array(list(map(lambda x: SMA(K[:x], context.kdj_param3), range(1, len(K) + 1))))
J = 3 * K - 2 * D

为了能够更灵敏地进行K值调整,需要计算动态KDJ,每分钟计算一次

由于每分钟计算一次KDJ,数据下载的耗时会很大,所以在代码设计上,需要在盘前预先存储历史数据,每分钟更换最新价格。为此,我们将KDJ的计算封装成如下函数,同时增加是否计算动态值的控制参数:

def cal_KDJ(context,security,include_now=False):"""计算KDJ:param security:证券代码,str形式:param include_now:是否计算动态值,默认为False"""

再次运行回测后,结果如下:

可以看到,策略各个方面都有比较大的提升,最大回撤从67.52%下降到28.12%,年化收益从70.43%提升到97.65%。

我们进一步看下参数优化的结果,以3个参数(N,K1,K2)进行测试:

本次回测是基于训练样本(2019.06.01-2021.09.30),从夏普比率折线图来看,0.7是不同K值中的最优参数;而从历史回溯时间来看,4天回溯时间能够实现的收益是最优的。

再来看下测试样本(2021.10.01-2022.04.22)的回测结果:

从夏普比率折线图来看,策略夏普比率在K值从0.6至1.0区间趋于稳定,当K值为0.7时,3天回溯时间的夏普比率>5天回溯时间的夏普比率>4天回溯时间的夏普比率,但三者之间的差异相对较小,4天回溯时间的策略夏普比率在各K值参数下更为平滑。

最后,以回溯时间为4天,K值为0.7为例,运行回测后,结果如下:

(1)训练样本时期(2019.06.01-2021.09.30)

(2)测试样本时期(2021.10.01-2022.04.22)

通过回测结果可以发现,趋势策略往往都是在震荡期亏钱,在大行情中赚钱。如果通过使用不同的趋势指标,或者增加止盈止损条件,又或者新增仓位管理等方式就可以进一步优化该策略了,感兴趣的朋友不妨试试~

如需获取策略源码,请访问:https://bbs.myquant.cn/thread/2861

在掘金量化社区,还有更多量化策略,等你来拿!

声明:本内容由掘金量化原创,仅供学习、交流、演示之用,不构成任何投资建议!如需转载请联系掘金小Q(VX:myquant2018)授权,否则作侵权处理!

魔改Dual Thrust示例策略相关推荐

  1. 行情平淡期做市商如何刷量 说一个网格策略魔改高频刷单策略的思路

    行情平淡期做市商如何刷量 说一个网格策略魔改高频刷单策略的思路 本文介绍一个牛熊市都能稳定开跑的刷量方法,只要行情有波动就有量,平淡期也能做出一定程度的量,给大家参考. 这个方法就是用网格策略来刷量. ...

  2. python量化外汇交易_用Python实现一个Dual Thrust数字货币量化交易策略

    Dual Thrust交易算法介绍 Dual Thrust交易算法是由Michael Chalek开发的著名量化交易策略.它通常用于期货,外汇和股票市场.Dual Thrust的概念属于典型的突破交易 ...

  3. python 用while输出数字金字塔_用Python实现一个Dual Thrust数字货币量化交易策略

    Dual Thrust交易算法介绍 Dual Thrust交易算法是由Michael Chalek开发的著名量化交易策略.它通常用于期货,外汇和股票市场.Dual Thrust的概念属于典型的突破交易 ...

  4. 第四章:经典量化策略集锦(第四篇:进军交易系统,从 Dual Thrust 中学“趋势”)

    导语: "趋势"这个字眼,大家肯定不陌生,炒股票的老股民天天口里说着 "趋势为王", 那么今天我们向大家介绍一个趋势跟踪交易系统:Dual Thrust ,其简 ...

  5. 【网络结构】小议如何跳出魔改网络结构的火坑

    公众号关注 "ML_NLP" 设为 "星标",重磅干货,第一时间送达! 机器学习算法与自然语言处理出品 @公众号原创专栏作者 纵横 知乎专栏 | 机器不学习 引 ...

  6. 推荐!小议如何跳出魔改网络结构的火坑(完整版)

    点击我爱计算机视觉标星,更快获取CVML新技术 本文原载于知乎,已获作者授权转载,请勿二次转载, https://zhuanlan.zhihu.com/p/108838471 昨天发布过上半部分,不少 ...

  7. 小议如何跳出魔改网络结构的火坑

    点击我爱计算机视觉标星,更快获取CVML新技术 本文原载于知乎,已获作者授权转载,请勿二次转载, https://zhuanlan.zhihu.com/p/108838471 引言 0202 年,CV ...

  8. 《Windows办公指南》魔改C:\Windows\System32\drivers\etc\hosts实现一个数据中心

    <Windows办公指南> 魔改hosts实现一个数据中心 hosts: hosts是Microsoft TCP/IP用于Windows的一个示例hosts文件. 文件位置:C:\Wind ...

  9. 1060显卡支持dx12吗_P106矿卡魔改驱动修改及安装详解(含修改INF文件安装最新驱动,双独立显卡使用等)...

    20190323从小黑屋放出来后更新:据说NVIDIA已经把这个漏洞堵上了:不仅新版驱动已经不能把P106改DirectX支持(即GTX1060)了:官网上下载的老版驱动也不可以了(应该是官方偷偷做了 ...

  10. 魔改车钥匙实现远程控车:(1)整体思路及控制方案实现

    前言 作为一个在互联网时代成长起来的人,怎么能忍受自己的爱车不支持远程控制呢. 连我的小电驴都支持手机靠近自动解锁,蓝牙/网络远程控车.而我的汽车却不支持,实在是说不过去,所以萌发了自己改造一下让它支 ...

最新文章

  1. zabbix 监控tomcat实例
  2. 禅道设置bug模板_JPress v3.0 beta.2 发布,修复 bug 和完善产品细节
  3. Linux的rsync远程数据同步工具
  4. 双 11 模块 79.34% 的代码是怎样智能生成的?
  5. Linux基本服务命令
  6. Error: listen EACCES: permission denied 0.0.0.0:80
  7. 福州大学计算机学院软件实力,福建五大重点大学,哪一所实力最好?
  8. nodejs操作redis总结
  9. Caffe学习:pycaffe利用caffemodel进行分类=批处理
  10. 学习笔记一 线性代数
  11. 在mdk使用swd最后一步无反应_STM32应用笔记: 使用STM32CubeMonitor实时监测变量
  12. CISSP重点知识总结1
  13. 跳转第三方App或网页进行导航
  14. 利用网络实现自己的六度人脉
  15. 无人机航测案例-湘南某县增减挂钩拆旧地块航拍任务
  16. 【MindManager软件常用快捷键】Mindjet MindManager快捷键教程
  17. 陈天桥向私服取经 盛大免费放手一搏
  18. AD域更新计算机配置组策略无效的解决,Window server 2012 R2 AD域的组策略设置
  19. 火绒规则 禁止所有软件的安装_火绒阻止流氓全家桶规则
  20. linux 读 键盘,Linux下直接读键盘

热门文章

  1. python实现bm3d图像去噪
  2. select默认选中及赋值问题
  3. el-select默认选中第一个,设置默认值
  4. 台式电脑windows10蓝屏代码 SYSTEN_THREAD_EXCEPTION_NOT_HANDLED 失败的操作rtl8188gu.sys
  5. MS Navision专业BBS
  6. Java多线程常用面试题(含答案,精心总结整理)
  7. mysql 批量插入(记录帖)
  8. 数据库注入提权总结(一)
  9. 华为u2000v200r018 同步网元失败 提示 服务器不可达 解决办法
  10. 【Yolov5】1.认真总结6000字Yolov5保姆级教程(2022.06.28全新版本v6.1)