前言

相信大家都听说了量化交易这个东西了吧!量化交易是一种新兴的系统化金融投资方法。

那么,什么才是普通股民所适合的量化交易打开方式呢?

本文就用一个接地气的股票分析场景 —— 用量化回测来识别技术指标到底能不能赚钱 来和大家分享一下,普通股民如何去使用量化交易!

技术指标的优点 

技术指标分析股票走势,由于其简单、直观、便于理解,是小散们最为广泛使用的炒股方法。行情软件上会提供各种技术指标的走势,各路股评大V也都乐此不疲地拿技术指标来预判行情。

确实对于中小散户来说,很难解读政策层面是利好还是利空,也无法了解上市公司内部运营的实质状况以及发布的公告对股价的影响有多大。

由于市场行为会包容消化一切盘面信息,所以最终会体现在了股价的走势上。于是当指标走好时,表明有资金进场,我们只需要跟着主力进场就行。当资金离场时一切指标都会走坏,我们也只需要跟着主力离场即可。

如何实现量化回测 

通常的炒股书籍上会介绍某个技术指标的用法,然后配上一幅相匹配的股价走势图,来验证这个用法是可行的。

我们做量化的话不能管中窥豹,要用回测的方法从各个角度去评估指标的效用。

关于回测的方式。我们使用BackTrader这个开源量化框架。BackTrader的作者是个德国人,相比较而言,框架的代码结构比较合理、扩展性和性能也不错、使用文档比较详细清晰,于是从综合上选择了BackTrader。

关于交易标的选择。由于技术指标关注的点在于股价和成交量的变化,并不会去考虑该股的行业属性。而个股的走势还与所属行业和自身经营业务呈现一定规律。为了排除这部分的干扰,此处我们使用上证指数进行回测,这样能把重点放在指标的特性上。

关于指标的选择。我们分别选取趋势类指标代表MA和震荡类指标代表KDJ进行回测。

MA指标策略:买入条件是短期MA上穿长期MA形成金叉;卖出条件是短期MA下穿长期MA形成均线死叉。

KDJ指标策略:当K线由下向上穿过D线时,即所谓“黄金交叉”释放出买入信号;当K线由上向下穿过D线时,出现“死亡交叉”释放出卖出信号。

如何使用Backtrader 

BackTrader的使用步骤大体为如下几步:

(1) 创建一个策略类,这个类要继承自backtrader.Strategy,然后就可以自定义里面的方法。

class my_strategy(bt.Strategy):

(2)  策略类中有一个属性params,用于定义一些在策略中可调参数值。

params=(('ma_short',10),('ma_long', 30),('kd_period', 5),('kd_period_dfast', 3),('kd_period_dslow', 3))

(3) backtrader.indicators内置了许多指标的计算方法,比如移动平均线、MACD、RSI等等,使用时只需要实例化策略中会使用到的技术指标即可。

# 添加移动均线指标
self.sma_short = bt.indicators.SimpleMovingAverage(self.datas[0], period=self.p.ma_short)
self.sma_long = bt.indicators.SimpleMovingAverage(self.datas[0], period=self.p.ma_long)# 添加KDJ指标
self.kd = bt.indicators.StochasticFull(self.datas[0], period=self.p.kd_period, period_dfast=self.p.kd_period_dfast, period_dslow=self.p.kd_period_dslow)
self.K = self.kd.percD
self.D = self.kd.percDSlow
self.J = self.K * 3 - self.D * 26

(4) next函数中编写交易策略,也就是进入市场和退出市场的逻辑

(5)创建一个策略决策引擎Cerebro,把定义的策略注入到决策引擎之中,把行情数据注入到决策引擎之中,设置初始资金、手续费等等,然后运行引擎

cerebro = bt.Cerebro()
cerebro.adddata(data)
cerebro.addstrategy(my_strategy)
cerebro.broker.setcash(10000000)

(6) 以可视化方式反馈回测结果

开始量化回测 

接下来先回测下MA指标策略,指标参数为常用的短期MA10,长期MA30。

Backtrader可视化回测效果如下所示:

图表包含了五个子图,由上往下分别为资金变动图、交易盈亏图、回撤跟踪图、买卖区间图、技术指标图。

(1)资金变动图:可以看到在策略回测期间,资金的盈利和损失。红色的是现金变动,蓝色是资产变动(包含了现金)

(2)交易盈亏图。在交易结束时(买入-卖出)显示实际盈利/亏损。蓝色点表示获利,红色点表示亏损,纵坐标表示获利/亏损的幅度。

(3)买卖区间图。这个图体现了买卖点在行情走势中的位置。绿色和红色箭头分别表示交易策略的进入点和退出点。行情走势图则包含了均线、K线、成交量等。

(4)回撤跟踪图。描述了买入股票后,跟踪策略会亏损多少钱。

(5)技术指标图。图表上可以扩展一些技术指标的子图,此处扩展了KDJ指标。

很遗憾,初始资金10000000.00,最终资金9999873.03,此处我还没加上手续费、滑的影响,否则亏损会更多。

所以,重点是当我们看到炒股书上介绍的某个指标有多好用时,不妨用回测的方式来验证下。

接下来再回测下KDJ指标策略,指标参数为(5,3,3)。回测效果如下所示:

这次是盈利的,最终资金为10000192.02。

以上结果只是对于上证指数而言,如果要更加客观地评价指标的效用,需要用更多地标去验证。比如换成深证综指,如下所示:

除了多个标的验证外,还有不同参数组合的验证。一方面是为了对参数优化,另一方面也是为了验证策略的稳定性,以及收益对参数变化的敏感性。

比如MA策略的话,我们验证下长期均线分别为25到35时策略的效果如何。如下所示:

2020-06-01, 金叉死叉策略 25 Ending Value 99999985.96

2020-06-01, 金叉死叉策略 26 Ending Value 99999954.95

2020-06-01, 金叉死叉策略 27 Ending Value 99999954.95

……

2020-06-01, 金叉死叉策略 34 Ending Value 99999869.05

分享以上的这些回测过程和结果,是想告诉大家,无论如何没有一个策略是不管什么阶段都能永远賺大钱的。这也是所有策略的通病,包括量化策略。

所以在制定策略的时候,如果选择平稳的策略一定要回测足够长的周期,用足够多的数据样本。十年1000次的交易会比五年500次交易要来的稳定可靠!如果是选择阶段有效的策略,那么主观上要对行情阶段要有大局上的把握,才能因地制宜地选取策略!

总结

通过这个简单而又实用的股票量化场景,希望能够给广大朋友对于量化交易有一个直观的感受。

然后,我们应该升级自己的炒股方式了,把自己以前炒股的那套方法,抽象成策略模型,用量化的方法去全市场回测评估,然后让程序帮助我们监测行情的走势。

这个才是普通股民所适合的量化交易打开方式!

关于例程中的代码,我们会上传至《玩转股票量化交易》知识星球(知识星球的目录可点击【阅读原文】查看)。

更多量化交易内容扫码加入星球!

—————————————————

往期回顾

小散量化炒股记|只用一分钟选出底部放量跳空上扬的强势股

小散量化炒股记|不用追高!Python告诉你强势股回调介入的位置

小散量化炒股记|一文揭秘主力、散户资金流入流出的来龙去脉

小散量化炒股记|搭建本地化的股票量化数据库这么几步就够了

小散量化炒股记|Python数据透视表和热力图跟踪行业板块热点切换

小散量化炒股记|趋势指标金叉死叉策略在震荡行情中怎么处理

小散量化炒股记|只花几秒钟!多任务爬虫获取A股每日实时行情数据

小散量化炒股记|股价如波浪起伏,教你用量化识别波段的极值点

元宵大师的量化交易书籍开售!!京东、当当、天猫有售!!凭订单进读者交流群获取工具源码!

小散量化炒股记|说某个指标能赚钱?不盲从,先量化回测一番!相关推荐

  1. 小散量化炒股记|趋势指标金叉死叉策略在震荡行情中怎么处理

    前言 相信大家都听说了量化交易这个东西了吧!量化交易是一种新兴的系统化金融投资方法. 那么,什么才是普通股民所适合的量化交易打开方式呢? 本文就用一个接地气的股票分析场景--典型的趋势指标金叉死叉策略 ...

  2. 小散量化炒股记|股价如波浪起伏,教你用量化识别波段的极值点

    前言 相信大家都听说了量化交易这个东西了吧!量化交易是一种新兴的系统化金融投资方法. 那么,什么才是普通股民所适合的量化交易打开方式呢? 本文就用一个接地气的股票分析场景 -- 用量化方法识别股价波段 ...

  3. 小散量化炒股记|搭建本地化的股票量化数据库这么几步就够了

    前言 相信大家都听说了量化交易这个东西了吧! 量化交易是一种新兴的系统化金融投资方法,它综合多个学科的知识,用先进的数学模型代替人的主观思维制定交易策略,利用计算机强大的运算力从庞大的股票.债券. 期 ...

  4. python 主力资金_小散量化炒股记|一文揭秘主力、散户资金流入流出的来龙去脉...

    前言 我们经常听到这样的股市要闻:"主力资金全天净流出140.95亿元--" 目前很多行情软件也提供了主力资金流入流出.散户资金流入流出等数据. 很多交易者会依据这些"主 ...

  5. 小散量化炒股记|MySQL搭建股票量化数据库完整模版来袭

    前言 数据是量化交易的源头,如何高效地管理大量数据是量化交易分析中非常关键的环节.数据库就是最佳的解决方案. 通过API接口获取到股票行情数据之后,我们可以存入到数据库之中,这样下次调用的时候只需要从 ...

  6. 小散量化炒股记|如何用MySQL搭建本地股票量化数据库

    前言 数据是量化交易的源头,如何高效地管理大量数据是量化交易分析中非常关键的环节.数据库就是最佳的解决方案. 通过API接口获取到股票行情数据之后,我们可以存入到数据库之中,这样下次调用的时候只需要从 ...

  7. python商业爬虫实战与智能投顾基础_python机器学习到量化智能投顾,人生没有彩排,交易却可能回测...

    来源:雪球App,作者: 七年实现财富自由,(https://xueqiu.com/1164950442/150097333) 之前文章对基金的分析,部分基于经验,大部分基于数据. 数据是机器学习最擅 ...

  8. 小散量化炒股记|手把手教你转换通达信公式,盘整后均线粘合突破

    前言 通达信的公式编写功能非常流行,很多高手都是在通达信上编写公式来分析股票的. 作为过来人,建议大家在初期的策略研究阶段,选一个通用的平台进行策略研究,因为有现成的功能模块可以调用,这样就能把精力聚 ...

  9. 小散量化炒股记|如何研判主力的踪迹!计算筹码分布图有妙用!

    前言 "筹码分布"自从问世以来一直受到广大投资者的追捧,它是把股票按不同价位上的流通数量做了排布,从而反映了这个股票对于全体投资者来说持仓成本的分布情况. 我们知道主力的常用手段是 ...

最新文章

  1. 港片中十个难以超越的经典人物形象
  2. 微信第三方开发者该何去何从?
  3. VS2013 使用QCustomPlot等三方库如何配置
  4. 银行招聘网计算机类笔试,中国人民银行计算机类笔试模拟题
  5. 动态游标for循环_数据结构系列循环链表
  6. python pyquery倒数第二个节点之前的节点_Python中PyQuery库的使用总结
  7. ❤️使用Mybatis对数据库进行增删改查!!!
  8. aiohttp 高并发web服务_面试官要是问你如何解决web高并发,你就这样回答
  9. H5+canvas+js实现连线题
  10. JavaScript动态检测密码强度的原理及实现
  11. 腐蚀rust服务器系统,腐蚀rust有哪些服务器命令 腐蚀rust服务器命令一览
  12. gh-ost在线主从同步MySQL下DDL生产表结构修改(初步研究)
  13. PyQt(Python+Qt)学习随笔:图例解释QFrame类的lineWidth、midLineWidth以及frameWidth属性
  14. 算法笔记方法论4 枚举法 详细笔记
  15. 毕业一年一点不平凡经历,不平常的感受,有了不平常的自信
  16. 牛客网浙江大学机试--找出直系亲属
  17. 从罗永浩想到东方时尚
  18. Intouch2020与施耐德PLC通讯
  19. python之基础语法常见错误提示总结
  20. 微信域名防拦截的最新方案,域名防举报投诉原理

热门文章

  1. 麻将游戏开发运营站在玩家角度考虑问题 切勿夸大宣传
  2. FastDFS(分布式文件系统)使用介绍
  3. 转载博客:srt-live-server:一款基于SRT的毫秒级低延时直播服务器
  4. conda activate pytorch报错
  5. 任务19:确定英雄选择
  6. android状态栏白色,Android如何实现状态栏白底黑字效果
  7. web标准中的网页:结构层、表现层、行为层
  8. cydia无法连接网络(cydia无法连接网络锤子)
  9. 【参赛作品20】【openGauss】Virtualbox+openEuler部属openGauss数据库
  10. C语言中变量定义的位置