楼主: 邢不行
284 5

[交易策略] 【邢不行|量化小讲堂系列49-实战篇】量化投资中,计算技术指标时常见的8个坑(下) [推广有奖]

回帖奖励 496 个论坛币 回复本帖可获得 1 个论坛币奖励! 每人限 2 次

助理

学科带头人

72%

还不是VIP/贵宾

-

威望
1
论坛币
27011 个
通用积分
53.5142
学术水平
471 点
热心指数
486 点
信用等级
442 点
经验
41642 点
帖子
400
精华
26
在线时间
872 小时
注册时间
2010-4-30
最后登录
2019-8-30

邢不行 在职认证  发表于 2019-5-30 17:27:35 |显示全部楼层
本帖最后由 邢不行 于 2019-5-30 17:29 编辑

引言:

邢不行的系列帖子“量化小讲堂”,通过实际案例教初学者使用python进行量化投资,了解行业研究方向,希望能对大家有帮助。


【必读文章】:《10年400倍策略分享-附视频逐行讲解代码》

                     《EOS期现套利,一周时间,15%无风险收益》

【历史文章汇总】:https://bbs.pinggu.org/thread-3950124-1-1.html

微信个人号:xingbuxing0807,有问题欢迎交流



量化投资中,计算技术指标时常见的8个坑(下)

1.jpg


接上文

05

数字货币市场中数据之间的时差

数字货币是7*24小时交易,不同地区的交易所会显示不同的时区。那此时我们就要特别注意,我们自己数据的时区和交易所行情数据显示的时区是否一致


比如币安交易所,它的主流用户在中国,所以网页上显示的数据默认是就是北京时间。但是如果你使用接口去抓取币安的K线数据,它使用的却是UTC时间,也就是英国的格林威治时间。


那么此时当你计算技术指标的时候,使用的是UTC时间,很明显就会和交易所页面上显示的UTC+8的指标数据对不上了。


此时的应对方法就是修改交易所页面展示数据的时区,一般交易所都提供这个功能。下图是在bitfinex交易所修改时区的方式,右下角点击UTC时间,就会弹出选择时区的框框。




9.jpg



06

数字货币数据缺失



数字货币市场中有无数的“垃圾币”,这些币的成交量很低,经常会在1个小时之内一笔交易都没有。那么面对这样的一个小时,如何来画这一根K线呢?


有的交易所会直接略去这一根K线,把这个时间段给删了。而有的交易所是根据前一根K线的收盘价作为这根缺失K线的开高低收价,同时成交量设置为0来补全这根K线数据。


例如下图中的K线,大家看到一些横线,就是代表这根K线的时间内,没有发生一笔交易。

10.jpg





那么对于没有交易的K线数据,我们要确保,我们数据中的处理方式和交易所是一样的,不然计算得到的技术指标就会不一致。




07

同一技术指标的计算方法不一样



大部分的技术指标都是源于国外,在翻译的过程中难免有些不准确,还有可能夹带着主观思想。因此经常会发现,同一名称的技术指标,在不同的地方,采用的是不同计算方法。


比如TA-lib库计算的ATR指标和国内主流行情软件中显示的指标就是不一样的。因为他们计算方法不一样。

国内行情软件一般是取TR(真实波幅)的简单平均,而TA-lib则是采取类似EMA平均一样的方法求TR的平均值。


通达信行情软件中计算ATR的公式如下图:

11.jpg




那TA-lib库计算ATR的公式是什么样的呢?通过深挖TA-lib库的底层代码发现这么一个注释:





talib.ATR的作者Wilder采用了移动平均的概念来使每一个新的ATR都包含前一个ATR的信息:ATR(t)=(ATR(t-1)*(Period-1)+TR(t))/Period,所以不是简单的算术平均。


这里提到的TA-lib库,在我们之前的量化小讲堂系列文章中有提到过。简单来说就是一个技术分析库,里面包含了大部分主流的技术指标,让使用者不用再重复造轮子。具体可参考之前的文章:


1)不用再自己写技术指标了 | TA-lib视频教程

2)建议收藏 | Windows下安装TA-Lib终极教程


还有的技术指标长得很像,而且计算思路也类似,比如刚刚提到的MA和EMA。MA是简单移动平均线,是根据最近n天的收盘价求算数平均值得到;而EMA看起来和MA很像,英文名字一不小心就看错,它是指数移动平均值,相当于是一个加权平均值,但是它的加权方式很特别,感兴趣的可以自己搜索下,或者加我微信交流。




12.jpg



所以当我们使用其他工具或者自己编写代码计算技术指标时,计算结果和交易所对不上,在排除数据源的问题后,很有可能就是指标的计算公式不一致。




08

特别容易忽视的小差别



同一技术指标的计算除了那些“肉眼可见”的区别之外,还有很多不容忽视的坑。


比如我们熟悉的布林线指标,在计算其中的标准差的时候,有的地方分母是使用的样本数,而有的地方采用的是样本数-1。


再比如很多指标在选择数据的时候,有的取包含今日在内的过去n根K线数据,有的取不包含今日数据的前n根K线。这样计算出来的结果显然是有差别的。


这些细小的差距对结果的影响不大,但差距又确实在那。往往会让你花很多时间去寻找为什么不同,最终发现的时候只给你带来一句:卧槽...




09

总结



以上分析了计算指标和行情软件不同的几个原因,都来自于我实际的经验。其中有的可以解决,也一定要解决,不然你的策略结果就是错的。


而有的问题其实也解决不了,比如股票复权之类的问题。面对这种窘境,完美主义者可能会刨根问底且想方设法去找到原因并将其修正过来,但这种方式并不见得是最好的解决方案。


相信我,与其将时间花在这上面不如花更多的时间去研究策略。一般来说,只要确保数据源没问题,以及计算逻辑没错,就可以了。


关于技术指标的计算,还有其他想法的朋友,欢迎在评论区留言。留言还可以获得论坛币哦~



不管去哪里 只要在路上
stata SPSS
wuyan11 发表于 2019-6-1 17:40:22 |显示全部楼层

回帖奖励 +1 个论坛币

回复

使用道具 举报

chenlianzhe 发表于 昨天 10:16 |显示全部楼层

回帖奖励 +1 个论坛币

太好了,楼主好人啊!正需要!
回复

使用道具 举报

chenlianzhe 发表于 昨天 10:17 |显示全部楼层

回帖奖励 +1 个论坛币

太好了,楼主好人啊!正需要!
回复

使用道具 举报

chenlianzhe 发表于 昨天 10:18 |显示全部楼层
太好了,楼主好人啊!正需要!
回复

使用道具 举报

熙熙攘攘9 发表于 昨天 14:49 |显示全部楼层

回帖奖励 +1 个论坛币

哈哈哈哈
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 我要注册

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2019-9-20 12:14