前言

布林带通道(Bollinger Bands)是非常经典的技术指标,常用于研判市场中长期运动趋势。

比如我们以[350, 2,2] 这组长线参数来绘制恒瑞医药、贵州茅台10年行情走势的布林带通道,如下所示:

不少星球学员向我发起了支持布林带通道策略的需求。其实在QTYX量化分析系统中支持这个策略还是非常容易的,于是我们升级了版本至V2.4.7来支持这个策略。

如何实现策略

布林带通道的应用网上介绍了很多,比如股价突破上轨为超买,跌破上轨为超卖等等,此处不再赘述。这里主要介绍下如何在QTYX中添加布林带通道策略。

我们看到图上布林带通道由三条轨道线组成,分别是上轨 、中轨和下轨。中轨线是N日移动平均线(MA),上轨线和下轨线分别是中轨线的正负N倍标准差。

布林带通道的计算可以直接使用talib的接口:

upper, middle, lower = talib.BBANDS(close, timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)

根据收盘数据可以计算出一个通道轨迹值,upper为上限,lower为下限,middle为平均位置。

调用参数:

  • close:收盘价

  • timeperiod:计算的周期,通常选择20天

  • nbdevup:上限价格相对于周期内标准偏差的倍数,取值越大,则上限越大,通道越宽

  • nbdevdn:下限价格相对于周期内标准偏差的倍数,取值越大,则下限越大,通道越宽

  • matype:平均值计算方法,用于设定哪种类型的MA。0=SMA, 1=EMA, 2=WMA, 3=DEMA, 4=TEMA, 5=TRIMA, 6=KAMA, 7=MAMA, 8=T3 (Default=SMA)

在/QTYX/StrategyGath/StrategyGath.py的Base_Strategy_Group类中添加策略代码,如下所示:

@staticmethod
def get_bbands_signal(stock_dat, period = 20, nup = 2, ndn = 2):# 布林带通道突破 买入/卖出信号stock_dat['H_line'], stock_dat['M_line'], stock_dat['L_line'] = talib.BBANDS(stock_dat.Close, timeperiod=period,nbdevup=nup, nbdevdn=ndn, matype=0)# 当天收盘价穿越昨天通道顶部 第二天买入股票buy_index = stock_dat[stock_dat.Close > stock_dat.H_line].index# 当天收盘价跌破昨天通道底部 第二天卖出股票sell_index = stock_dat[stock_dat.Close < stock_dat.L_line].indexstock_dat.loc[buy_index, 'Signal'] = 1stock_dat.loc[sell_index, 'Signal'] = -1stock_dat['Signal'] = stock_dat.Signal.shift(1)  # 当天出信号则第二天买入# print(stock_dat[stock_dat['signal'].notna()])stock_dat['Signal'].fillna(method='ffill', inplace=True)  # 与前面元素值保持一致stock_dat['Signal'].fillna(value=-1, inplace=True)  # 序列最前面几个NaN值用-1填充return stock_dat

策略的关键是得到买卖信号序列。比如将买入当天的 Signal 值设置为 1,将卖出当天的 Signal设置为−1。

然后在QTYX/MainlyGui/ElementGui/DefTreelist.py的colleges中注册接口:

colleges = {u'经典策略': [{u'名称': u'N日突破', u'标识': u'趋势', '函数': u'已定义', 'define': "get_ndays_signal"},{u'名称': u'ATR止盈止损', u'标识': u'趋势', '函数': u'已定义', 'define': "get_ndays_atr_signal"},{u'名称': u'布林带突破', u'标识': u'趋势', '函数': u'已定义', 'define': "get_bbands_signal"}],u'自定义策略': [{u'名称': u'yx-zl-1', u'标识': u'综合', '函数': u'未定义'},{u'名称': u'yx-zl-2', u'标识': u'趋势', '函数': u'未定义'},{u'名称': u'yx-zl-3', u'标识': u'波动', '函数': u'未定义'}],u'衍生指标': [{u'名称': u'均线交叉', u'标识': u'cross', '函数': u'已定义'},{u'名称': u'跳空缺口', u'标识': u'jump', '函数': u'已定义'},{u'名称': u'黄金分割', u'标识': u'fibonacci', '函数': u'已定义'}],u'K线形态': [{u'名称': u'乌云盖顶', u'标识': u'CDLDARKCLOUDCOVER', '函数': u'已定义'},{u'名称': u'三只乌鸦', u'标识': u'CDL3BLACKCROWS', '函数': u'已定义'},{u'名称': u'十字星', u'标识': u'CDLDOJISTAR', '函数': u'已定义'},{u'名称': u'锤头', u'标识': u'CDLHAMMER', '函数': u'已定义'},{u'名称': u'射击之星', u'标识': u'CDLSHOOTINGSTAR', '函数': u'已定义'}]
}

这样就把策略添加到QTYX系统中了,可以看到布林带策略已经在界面的策略列表中了。

回测时只要点击左边树形控件的策略名称,选中的策略就生效了!

使用talib库设计择时策略原来这么方便!

同样地,按这个思路我们可以基于均线、MACD、KDJ、RSI、OBV……以及多指标组合,设计出各式各样的策略。

因为我们直接在本地的Python环境下编程,只要生成出买卖信号序列即可,编写的逻辑过程可以任意发挥,非常灵活,而且不存在黑盒子!

说明

1. 我们会把完整的源码上传到知识星球《玩转股票量化交易》中,帮助小伙伴们更好地掌握这个方法。

2. 想要加入知识星球《玩转股票量化交易》的小伙伴记得先微信call我获取福利!

添加布林带择时策略有多便捷!股票量化分析工具QTYX-V2.4.7​​​​​​​

​​​​​​​

添加布林带择时策略有多便捷!股票量化分析工具QTYX-V2.4.7相关推荐

  1. 股票量化分析工具QTYX使用攻略——小市值轮动选股策略(更新2.5.9)

    搭建自己的量化交易系统 如果要长期在市场中立于不败之地!必须要形成一套自己的交易系统. 如何学会搭建自己的量化交易系统? 边学习边实战,在实战中学习才是最有效地方式.于是我们分享一个即可以用于学习,也 ...

  2. 线上培训!如何添加自定义形态选股策略!股票量化分析工具QTYX-V2.5.6

    前言 股票分析中选股是很重要的一个环节,特别是随着A股市场的逐步扩容,存量资金有限,主力们会偏重于某些板块和概念去操作,从而出现结构化的上涨行情. 因此,要想资金的使用效率最大化,选股比择时更为重要. ...

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

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

  4. 基于北向资金指数择时策略验证与思考

    基于北向资金指数择时策略验证与思考 本文思路华泰金工研量化资产配置7月月报<北向资金走向预示市场短期或震荡>关于北上资金的择时思路,构建基于北向资金的股市择时策略,并进行历史回测.结果表明 ...

  5. RSRS(阻力支撑相对强度)择时策略(上)

    概述 本篇基于光大证券研报<基于阻力支撑相对强度(RSRS)的市场择时>,给出了RSRS斜率指标择时,以及在斜率基础上的标准化指标择时策略. 一. 阻力支撑相关概念 阻力位是指指标价格上涨 ...

  6. 搭建系统|别只盯MA、KDJ、MACD这些技术指标,择时策略也能叠加基本面指标!

    前言 "搭建系统"专栏系列一直按以下的进程再不断地迭代开发工具: 我一直强调要搭建属于适合自己的股票量化交易系统,而不是照搬着拿别人的来用呢.也就是说我们要掌握搭建的方法,不断去调 ...

  7. 量化择时策略入门与实操-笔记(同花顺金融量化实验室python实现)

    文字与代码来源:2022年第三届"大湾区杯"粤港澳金融数学建模竞赛在线讲座-6_哔哩哔哩_bilibili 目录 指数估值择时策略 指数轮动择时策略 基于风险平价模型的仓位管理策略 ...

  8. quantrader和matlab不匹配,【Matlab量化投资】支持向量机择时策略

    原标题:[Matlab量化投资]支持向量机择时策略 感谢国泰安与本公众号合作 推出[Matlab量化投资系列] 机器学习 所谓机器学习,其实就是根据样本数据寻找规律,然后再利用这些规律来预测未来的数据 ...

  9. jq使用教程08_基于估值波动周期的择时策略

    一.前言 在变化莫测的A股市场上,永远流传着三个终极问题:我该买什么?什么时候买?什么时候卖?多少人以为自己知道答案,直到股灾降临,灰飞烟灭.在经历了一轮又一轮牛市和熊市的洗礼后,我们终于透过估值数据 ...

最新文章

  1. “23岁本科生发14篇SCI”,文章被学校官网悄悄删了,你怎么看?
  2. [日期工具分享][Shell]为特定命令依次传入顺序日期执行
  3. 华容道与数据结构 (1)
  4. python怎么验证两个json是不是一样_比较Python中的两个JSON树
  5. oracle数据库集群日志,Oracle集群数据库中恢复归档日志
  6. 前端学习(2009)vue之电商管理系统电商系统之渲染商品属性的结构
  7. 服务器无法通过系统非页面共享区进行分配,服务器无法通过系统非页面共享区来进行分配的解决方法...
  8. C#设计模式之6-适配器模式
  9. 跟我一起认识axure(三)
  10. 解决 Error L6915E 问题
  11. java+控制台-学生选课管理系统
  12. 阿里云怎么进入mysql_阿里云进入mysql数据库
  13. kali系统下libtorrent的安装编译
  14. 一元三次方程求解matlab_为什么一元n次代数方程必有n个根?
  15. 抓取腾讯校园招聘的第一页
  16. 科普类(二)先有鸡还是先有蛋?看看C语言怎么说......
  17. 弗洛伊德(Floyd)算法详解
  18. 一台台式计算机应该具有哪些设备,电脑硬件有哪些?组装一台电脑需要哪些配件详解...
  19. 只有蓝色www.zcool.com.cn
  20. 2020年中国滚刀行业产销及市场规模分析[图]

热门文章

  1. 矿业工程毕业论文题目
  2. 手动查杀skypee病毒(AutoIt3木马)
  3. ESP32 HttpServer模式下 本地OTA 例程(基于ESP-IDF类似Arduino下OTAWebUpdater例程)
  4. 新导部队营房室内人员定位系统解决方案
  5. PCIe中断--INTx
  6. 借着谈转正感想的时机,再聊聊外企和互联网公司的工作体验
  7. 项目开发流程(简述)
  8. 《文渊阁四库全书》书目
  9. bitbake中bb文件的描述
  10. 操作系统-移动操作系统-百科: iOS(苹果公司的移动操作系统)