今天翻译一个TV的策略、用到了MACD指标、对比FMZ和TV,趋势是一致,但具体数值差别还是有点大、为了找出原因、我花了一个晚上的功夫、做了不少的尝试:
依次使用:TA.MACD,talin.MACD, 以及社区中开源的一个指标库、 对比结果:上面3个完全一致、 但与回测页面中TV图表MACD不一致、
MACD实际是EMA指标进一步计算得到的,为了简化问题分析、我把对MACD的比较、换成对EMA的比较、 但对比后发现也是不一致、我开始怀疑是EMA算法FMZ和TV不一致、
翻看了TV对EMA算法的介绍、自己手工写了一个EMA的指标算法(附最后) 再次对比、发现还是和直接用TA.EMA一致,没有任何差别。
难道是数据源的问题?
为了进一步简化分析、我将EMA的参数改成2、回测范围缩短、图表拉到最左边、我想从第一根K线开始比较EMA值、看最后到底是什么时候开始这个值不一致的、
当我拉到第一根时,却惊奇的发现TV中的第1根K线和FMZ中的第1根K线不是同一个时间,TV的要往前多出来一根、 这样的话、从第1根起这个EMA值就已经不一样了,而后面的每一根的EMA都对前面的EMA值有一定的权重、 这也就难怪后面所有的数据都不一致、分析至此结束、原因很奇葩、但总算是找到了。
function whl_ema(src, length) { var arr = []; var sum = 0; var alpha = 2 / (length + 1) for(var i in src){ if(i