博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CTA策略05_AtrRsiStrategy
阅读量:4294 次
发布时间:2019-05-27

本文共 3380 字,大约阅读时间需要 11 分钟。

基本思路

空仓并且atr>atrma:    if rsiValue>rsiBuy:        开多单    elfi rsiValue
self.rsiBuy: 平空单开多单

回测参数

atrLength = 22          # 计算ATR指标的窗口数       atrMaLength = 10        # 计算ATR均线的窗口数    rsiLength = 5           # 计算RSI的窗口数    rsiEntry = 35           # RSI的开仓信号    self.rsiBuy = 50 + self.rsiEntry    self.rsiSell = 50 - self.rsiEntry

回测结果

参数优化

回测图中看到关键参数:

对于参数:

atrLength = 22          # 计算ATR指标的窗口数      atrMaLength = 10        # 计算ATR均线的窗口数

二者只控制第一笔开仓交易时间/方向(类似择时,后续所有交易都非多即空).所以这2个参数可以暂时不理会。

较为重要的2个参数

rsiLength = 5           # 计算RSI的窗口数    rsiEntry = 35           # RSI的开仓信号

由于rsiLength控制rsi的计算周期,rsiEntry控制了买卖阈值,由于阈值对称的所以只使用一个变量就足够了,   参数优化

setting.addParameter('rsiLength', 5,55,10) setting.addParameter('rsiEntry', 15,35,5)

结果:

2019-04-16 17:04:39.688957	参数:{'rsiLength': 15, 'rsiEntry': 35},目标:1009033.04542019-04-16 17:04:39.688968	参数:{'rsiLength': 25, 'rsiEntry': 30},目标:1009033.04542019-04-16 17:04:39.688978	参数:{'rsiLength': 25, 'rsiEntry': 35},目标:1009033.04542019-04-16 17:04:39.688987	参数:{'rsiLength': 35, 'rsiEntry': 30},目标:1009033.04542019-04-16 17:04:39.688995	参数:{'rsiLength': 45, 'rsiEntry': 25},目标:1009033.04542019-04-16 17:04:39.689004	参数:{'rsiLength': 55, 'rsiEntry': 25},目标:1009033.04542019-04-16 17:04:39.689013	参数:{'rsiLength': 15, 'rsiEntry': 25},目标:1008501.461482019-04-16 17:04:39.689024	参数:{'rsiLength': 45, 'rsiEntry': 30},目标:1007747.006822019-04-16 17:04:39.689033	参数:{'rsiLength': 55, 'rsiEntry': 30},目标:1007747.006822019-04-16 17:04:39.689042	参数:{'rsiLength': 15, 'rsiEntry': 30},目标:1007084.029962019-04-16 17:04:39.689051	参数:{'rsiLength': 25, 'rsiEntry': 20},目标:1006781.837982019-04-16 17:04:39.689059	参数:{'rsiLength': 45, 'rsiEntry': 20},目标:1006625.144562019-04-16 17:04:39.689067	参数:{'rsiLength': 55, 'rsiEntry': 20},目标:1006625.144562019-04-16 17:04:39.689076	参数:{'rsiLength': 35, 'rsiEntry': 25},目标:1006493.148522019-04-16 17:04:39.689086	参数:{'rsiLength': 5, 'rsiEntry': 35},目标:1006110.0912019-04-16 17:04:39.689096	参数:{'rsiLength': 35, 'rsiEntry': 15},目标:1005903.727382019-04-16 17:04:39.689105	参数:{'rsiLength': 45, 'rsiEntry': 15},目标:1005598.380582019-04-16 17:04:39.689114	参数:{'rsiLength': 25, 'rsiEntry': 25},目标:1005228.6462019-04-16 17:04:39.689123	参数:{'rsiLength': 35, 'rsiEntry': 20},目标:1004246.281342019-04-16 17:04:39.689131	参数:{'rsiLength': 55, 'rsiEntry': 15},目标:1003646.629622019-04-16 17:04:39.689140	参数:{'rsiLength': 35, 'rsiEntry': 35},目标:1003168.869482019-04-16 17:04:39.689148	参数:{'rsiLength': 45, 'rsiEntry': 35},目标:1003168.869482019-04-16 17:04:39.689157	参数:{'rsiLength': 55, 'rsiEntry': 35},目标:1003168.869482019-04-16 17:04:39.689166	参数:{'rsiLength': 15, 'rsiEntry': 20},目标:1001145.6492019-04-16 17:04:39.689174	参数:{'rsiLength': 25, 'rsiEntry': 15},目标:1000352.441122019-04-16 17:04:39.689183	参数:{'rsiLength': 15, 'rsiEntry': 15},目标:1000313.523882019-04-16 17:04:39.689192	参数:{'rsiLength': 5, 'rsiEntry': 30},目标:999301.52862019-04-16 17:04:39.689200	参数:{'rsiLength': 5, 'rsiEntry': 25},目标:994286.313282019-04-16 17:04:39.689209	参数:{'rsiLength': 5, 'rsiEntry': 20},目标:990900.776082019-04-16 17:04:39.689218	参数:{'rsiLength': 5, 'rsiEntry': 15},目标:989164.8178

最终选择参数: 'rsiLength': 25,'rsiEntry': 30,对应收益1009033.0454

参数稳定性测试

测试各个月份最优结果的下月表现

代码段 小部件

结论:参数组合'rsiLength': 25,'rsiEntry': 30,稳定性尚可02-03月份表现不佳,但是也是正收益

(实际还需要参考历史最大回撤,近20日最大回撤等,由于中间数据没保存下来,就不再重新跑了.)

回测图:

可见这个策略其实是有问题的,仅仅开仓一次,偶然因素很大,这也是回测时为何topn的收益等完全一样的原因.

转载地址:http://owfws.baihongyu.com/

你可能感兴趣的文章
idea在搭建ssm框架时mybatis整合问题 无法找到mapper
查看>>
java设计基本原则----单一职责原则
查看>>
HashMap的实现
查看>>
互斥锁 synchronized分析
查看>>
java等待-通知机制 synchronized和waity()的使用实践
查看>>
win10 Docke安装mysql8.0
查看>>
docker 启动已经停止的容器
查看>>
order by 排序原理及性能优化
查看>>
Lock重入锁
查看>>
docker安装 rabbitMq
查看>>
git 常用命令 入门
查看>>
linux安装docker
查看>>
关闭selinx nginx无法使用代理
查看>>
shell 脚本部署项目
查看>>
spring cloud zuul网关上传大文件
查看>>
springboot+mybatis日志显示SQL
查看>>
工作流中文乱码问题解决
查看>>
maven打包本地依赖包
查看>>
spring boot jpa 实现拦截器
查看>>
jenkins + maven+ gitlab 自动化部署
查看>>