布林带止盈止损策略改进

万维钢的《高手》里提到了《算法之美 指导工作与生活的算法》这本书,里面提到了诸如“什么时候开始谈女朋友”、“看房看到什么时候才开始决定买”等择时策略问题,数学家经过严密的推理计算得到了37%这个数字,也就是在给定的时间段内,以37%作为分隔点,前37%的时间作为观察,过了这个时间点就该做决策了。

那么联想到量化策略,我们什么时候止盈止损不也是同样的问题吗?
显然我们不能简单把37%作为止盈止损点,我的想法是把每次开仓后最大利润的37%(或者1-37%)作为止盈点,止损仍然是布林带的中轨。
核心代码如下:

info_dict = {'pre_signal': 0, 'open_price': 0, 'profit': 0}# 计算当前利润
df.at[i, 'profit'] = df.at[i, 'close'] - info_dict['open_price']
# 找到利润最大值并替换字典值
if df.at[i, 'profit'] > info_dict['profit']:info_dict['profit'] = df.at[i, 'profit']# 当本周期有平多仓信号,或者需要止盈止损
# 止盈点为当前收盘价小于最大利润的37%点位
condition1 = df.at[i, 'profit'] > 0
condition2 = df.at[i, 'profit'] < info_dict['profit']
condition3 = df.at[i, 'close'] < (info_dict['profit'] * 0.37 + info_dict['open_price'])
condition = condition1 & condition2 & condition3if (df.at[i, 'signal_long'] == 0) or condition:df.at[i, 'signal'] = 0  # 将真实信号设置为0# 重置相关信息info_dict = {'pre_signal': 0, 'open_price': 0, 'profit': 0}

对比简单布林带策略的回测结果,发现只有XRP的表现最好,回测数据为Bitfinex从2017年5月20日至2019年7月31日的XRP/USD交易对:
简单布林带30分钟K线回测结果:"[550, 2.0]",1.0,13.020978994861938
此策略回测结果:"[650, 4.5]",1.0,15.271091957919307

简单布林带1小时K线回测结果:"[250, 4.0]",1.0,11.86845895898633
此策略回测结果:"[250, 3.5]",1.0,20.528533025681803

对其它币种来说,BCH和BSV的回测结果略有提高,回测数据为Bitfinex从2018年11月13日至2019年7月31日的BCH/USD、BSV/USD交易对,剩下的币种回测结果基本比简单布林带策略还要差得多,这引出两个问题:

  1. 是不是在追求单笔交易收益后,大行情抓不住?
  2. 是不是止盈止损策略适合震荡行情或者震荡多的币种?

先不考虑上述问题,将37%改成(20%,80%)范围遍历,结果如下:
BCH 15分钟:"[450, 3.0, 0.3]”,1.0,0.3,7.8139314738945815
BSV 1小时:"[800, 1.5, 0.4]",1.0,0.4,3.3144425021985353
BTC 1小时:"[700, 1.5, 0.2]",1.0,0.2,19.07141784696794
DASH 1小时:"[550, 1.5, 0.4]",1.0,0.4,6.313149688177662
EOS 1小时:"[950, 0.5, 0.2]",1.0,0.2,71.07926848532772
ETC 1小时:"[950, 1.5, 0.4]",1.0,0.4,11.392449813728463
ETH 30分钟:"[450, 1.5, 0.2]",1.0,0.2,12.198778802528139
LTC 1小时:"[600, 3.0, 0.4]",1.0,0.4,22.30675663309639
NEO 15分钟:"[450, 3.5, 0.8]",1.0,0.8,3.045600675225343
OMG 15分钟:"[800, 2.5, 0.2]",1.0,0.2,7.118352066554033
QTUM 1小时:"[350, 1.5, 0.2]",1.0,0.2,7.355790185437384
XMR 1小时:"[850, 2.0, 0.2]",1.0,0.2,5.754729568997898
XRP 1小时:"[250, 3.5, 0.4]",1.0,0.4,21.670168180676765
ZEC 1小时:"[700, 1.5, 0.2]",1.0,0.2,5.86152947574348

简单布林带回测结果:
BCH 15分钟:"[950, 2.0]",1.0,4.548056980493423
BSV 1小时:"[750, 1.0]",1.0,2.4428266310284905
BTC 1小时:"[500, 0.5]",1.0,19.19686781323508
DASH 1小时:"[150, 2.5]",1.0,30.51202416576995
EOS 1小时:"[750, 2.0]",1.0,104.33355263999118
ETC 1小时:"[700, 4.5]",1.0,17.230519477228864
ETH 30分钟:"[300, 1.5]",1.0,16.251101335487025
LTC 1小时:"[650, 3.0]",1.0,41.994913026010295
NEO 15分钟:"[950, 2.0]",1.0,7.509372549944163
OMG 15分钟:"[700, 2.5]",1.0,19.02156117250065
QTUM 1小时:"[650, 1.0]",1.0,9.577289343702825
XMR 1小时:"[150, 2.5]",1.0,13.031009898772105
XRP 1小时:"[250, 4.0]",1.0,11.86845895898633
ZEC 1小时:"[300, 1.0]",1.0,37.88666173129326

布林带止盈止损策略改进相关推荐

  1. 别人赚钱时你却在解套,是少了止盈止损环节!股票量化分析工具QTYX-V2.4.1

    前言 股票市场上流行着这么一句话:"会买的是徒弟,会卖的是师傅". 散户或多或少的总是会选到一些牛股,可能是靠运气,也可能靠自身的投资能力.但最终出现亏钱的局面,最大的原因是并不知 ...

  2. QTYX量化系统实战案例分享|短线止盈止损监测202301

    前言 我觉得非常有必要和大家分享一些股票量化分析工具QTYX在实战中的应用案例(包括失败的案例),这样能够帮助大家更好地去理解QTYX中的功能设计,也能更好地帮助大家搭建出属于自己的量化交易系统. 关 ...

  3. 九龙证券|股票为什么要设置止盈止损?止盈止损怎么设置?

    在股市上,大部分投资者在买入个股之后,都会设置止盈止损,那么,他们为什么要设置止盈止损呢?止盈止损怎样设置?下面九龙证券为我们准备了相关内容,以供参阅. 股票设置止损能够操控个股的风险性,最大程度地保 ...

  4. 【零基础】极星9.3止盈止损用法详解

    交流Q群1064240775 一.前言 止盈止损是期货交易中比较基础的部分了,但从设置上来说还是有点复杂性的,所以这篇就好好写明白极星9.3的止盈止损. 二.为啥会有止盈止损 首先得搞明白,为啥会有止 ...

  5. Python量化交易学习笔记(19)——连续下跌买入止盈止损卖出策略

    好友提出要验证连续下跌买入止盈止损卖出策略,本文对该策略回测和实现做分析记录. 买入条件中,连续下跌定义为收盘价连续4日低于前1日的收盘价.卖出条件中,止盈率设置为10%,止损率设置为5%.回测初始资 ...

  6. 【StudyQuant| Python量化投资- 量化研究 - 系列7】多种仓位管理的方法,固定止盈止损 与 移动止盈止损

    前言 StudyQuant -[量化投资教学系列帖子],通过实际案例教初学者使用python进行量化投资,分享最前沿的研究成果.希望能对大家有帮助. 量化投资文章 请点击此处 相关文章 区间震荡策略曾 ...

  7. 量化投资_止盈止损在策略中的有效性(改编)

    何时卖出恐怕是我们遇到最多的一个问题,而止盈与止损又是卖出最常见的两个策略. 我们假设最常见的理论有四种:随机游走(分为正态分布与对数正态分布).趋势理论与均值回归理论,来一一验证. 第一种:随机游走 ...

  8. 量化交易 聚宽 止盈止损策略

    聚宽官网 官网 指数代码 程序架构 策略设置函数 获取数据 交易函数 策略说明 1.设置股票池为 沪深300的所有股票 2.如果当前股价小于10元/股 并且当前不持仓.则买入 3.如果当前股价比买入时 ...

  9. 通达信交易接口可以设定自动止盈止损吗?

    虽然现在的量化软件越来越多,实现的执行效果也是存在差异,但也为不少交易者提供了方便.虽然有不少的投资用户在问通达信交易接口可以设定自动止盈止损吗?在小编看来,目前还不支持.但如果是SNB股票自动交易的 ...

最新文章

  1. 机器学习如何做好分布外异常检测?谷歌这篇 NeurIPS 2019 论文提出了方法
  2. 【干货】嘿,产品经理 ,这些技术是一定要懂的
  3. Clustered Data ONTAP Fundamentals课程第一单元学习笔记(续3)
  4. plsq如何快捷整理代码_我收藏的几个更快搬砖的vscode快捷键
  5. 关闭数据执行保护(DEP)
  6. 将html代码确析成json数据格式,JSON字符串解析成JSON数据格式
  7. file.php https,使用HTTPS链接和php方法(file_get_contents,getimagesize)
  8. vue 2.0 无法编译ES6语法
  9. P6046-纯粹容器【数学期望,组合数】
  10. iOS开发——高级篇——二维码的生产和读取
  11. 【洛谷 - P1507 】NASA的食物计划(二维费用背包,dp)
  12. linux强行卸载qt,Linux下卸载QT SDK
  13. CLR Via C# 学习笔记(5) 静态构造函数的性能
  14. Android疯狂ListView之旅 第一季 《侧滑删除条目》
  15. ping和telnet的区别
  16. Android应用层 知识体系
  17. Excel下拉框多选(支持再次选择已选项会取消选择)
  18. 稳定排序与不稳定排序
  19. 如何在DOS命令窗口中进入D盘?
  20. 《C语言程序设计》讲义

热门文章

  1. 计算机网络回环测试命令,实验二 常用网络测试命令.doc
  2. 51Nod-1299-监狱逃离
  3. 开拓者终变落荒者,火箭大胜进第二轮
  4. 免费电子书下载 网站(11个)
  5. 【Unity实用工具】TexturePacker使用教程
  6. 1032 挖掘机技术哪家强 (20 分)
  7. 用Java编写租车项目核心业务
  8. linux防火墙删除ip白名单命令,利用CentOS系统IPtables防火墙添加网站IP白名单
  9. 【Codeforces 1038D】Slime
  10. linux pam mysql,Linux-PAM PAM-MySQL的总结