EXPMA 指标的一些误差疑问

CaramelDinosaur-avatar

CaramelDinosaur

2022-05-11T16:27:55+00:00

最近想自己实现一下 macd 的计算, macd 其中用到了 ema. 所以就研究了下 EMA 的计算方式,但是最终我发现,我计算的值和同花顺存在着误差,不知道有没有懂老哥知道这个事儿。

下面说一下我们俩的误差:
EMA 我也是学习了下百科里描述的表达式,链接如 [url]https://baike.baidu.com/item/EMA/12646151?fr=aladdin[/url]。

其实里面的计算方法,如果要计算某个时间,周期数量为 n 的 EMA,那么就通过上个时间周期的周期数量为 n -1 的 EMA 来计算。又定义而当周期数量为 1 时,EMA 就是数值本身。这样就可以迭代的推出来。具体表达式就是这么玩意:
[img]https://img.nga.178.com/attachments/mon_202205/21/jmQjgn-fqhkK8T1kSbq-1r.jpg[/img]

具体来说,就是如果我对 5 分钟的 k 线进行计算,如果我想要计算 13: 15 分的 EMA(8) 的值,我需要先拿到 13:10 分 EMA(7) 的值进行计算。如果我需要 13:10 分 EMA(7),那么就需要 13:05 EMA(6),以此类推,直到需要 11:10 分的 EMA(1),也就是这一刻的收盘值。然后就可以通过公式反推了。

上面是百科提供的计算方式,也没有问题。问题就出现在,当我使用了上面的方式计算后,当计算 EMA(1) EMA(2) 还没有问题,都和同花顺一样,当计算到 EMA(8) 的时候,值就和同花顺不一样了。
我当时计算的不一样是,中公教育(002607)2022-05-20 13:15 分的 EMA(8) 。我算出来的是 5.38,而同花顺计算的是 5.39。同花顺的图和我计算的过程我就不贴了。大家可以自己验证下。

但我目前得到的结论是,同花顺之所以和我不一样,是因为他每次使用上次的结果前,都会对结果保留两位小数点,并且四舍五入。随着计算周期增多,误差就会被放大。而我当时计算的时候,保留了更多的小数点,因此应该是同花顺更精准的。

我的疑问是:
我目前计算了 8 个周期,都已经出现了误差。后面我是打算通过这个值计算 MACD,MACD 一般会选择计算 EMA 12 、26 个周期,甚至还会对他们的差值计算 9 个周期的 EMA。那这个误差和同花顺的岂不是更大了。
所以,我应该怎么计算才是合理的?才能做到原本 EMA 的本意(ps. 其实计算 MACD 也是想通过缠论里描述的那样,计算一下背驰,可能能更好的选股吧)


(pps: 这里再说一下,其实在实现 EMA 的时候,我并没有通过迭代去做。因为那个表达式,其实可以通过数学的方式推到出他的通项公式,即 EMA(n) = (1 * x1 + 2 * x2 + ... n * xn) / (1 +2 + ... + n) 其中 x1 x2 .. xn 就是按照时间顺序的值。所以在这个的计算过程中,其实没有中间值,也不会产生误差,也是我发现问题的原因)
reggigens-avatar

reggigens

指标之所以有用,是因为大家都在用同样的指标,比如什么金叉死叉,如果市场都觉得金叉是买点,那么大家都买(或者庄家故意画出来诱多),股价就会上升,这叫“自我实现”

而你纠结的是这个指标正确的是什么,有意义吗,你算出了正确的指标,结果和市场用的不是一套体系,你出现买点信号的时候别人没出现,那你这个指标就没有意义。

玩过狼人杀么?你的底牌是什么并不重要,重要的是别人以为你是什么。 同样的,这个指标正确计算出来是多少不重要,重要的是市场上大多数人算出来是什么
Olle-avatar

Olle

[quote][pid=612130426,31984483,1]Reply[/pid] Post by [uid=64157192]破甲干嘛用的[/uid] (2022-05-21 00:34):

指标之所以有用,是因为大家都在用同样的指标,比如什么金叉死叉,如果市场都觉得金叉是买点,那么大家都买(或者庄家故意画出来诱多),股价就会上升,这叫“自我实现”

而你纠结的是这个指标正确的是什么,有意义吗,你算出了正确的指标,结果和市场用的不是一套体系,你出现买点信号的时候别人没出现,那你这个指标就没有意义。

玩过狼人杀么?你的底牌是什么并不重要,重要的是别人以为你是什么。 同样的,这个指标正确计算出来是多少不重要,重要的是市场上大多数人算出来是什么[/quote]我觉得你说的有道理,指标本身并没有用,而是因为相信有用的人多了,他才有了一定作用。
s0junz-avatar

s0junz

接着1楼说两句,简单比较了一下同花顺、通达信、新浪财经和我自己的券商,expma的计算结果都是一样的

既然大家都一样,那作为一种公认的指标也就无须在意计算细节,除非楼主想发论文而不是炒股赚钱
CaramelDinosaur-avatar

CaramelDinosaur

明白了。我其实纠结的也是这个,是这个数值本身真的有意义,还是和大家看到的一样有意义。可能和大家看到的一样才更具有指导意义
啵啵(bobo)-avatar

啵啵(bobo)

指标只能判断过去股票多空双方交易的趋势,而且单一指标没用,要结合其他指标的,最后说一下任何指标都是k线的变形,总结就是看懂k线结合成交量就行了,所谓看山是山,看山不是山,看山还是山,说的就是这个道理,千万不要迷恋指标,最终还是要看k线,k线看多了自然有你自己成熟的交易机制
JJKXP_JB-avatar

JJKXP_JB

楼主,想请教一下,我也想自己计算试验一下,请问你通过什么软件计算的?excel?或者自己编程?可以分享一下吗?谢谢
CaramelDinosaur-avatar

CaramelDinosaur

[quote][pid=612234262,31984483,1]Reply[/pid] Post by [uid=42516541]今天谁洗碗[/uid] (2022-05-21 15:19):

楼主,想请教一下,我也想自己计算试验一下,请问你通过什么软件计算的?excel?或者自己编程?可以分享一下吗?谢谢[/quote]我是写 java 实现的,其实 python 实现起来更简单点,我查资料的时候看到好像 numpy 有现成的库,你可以看着那个来
cxk-avatar

cxk

指标只是用来参考的,是对历史的记录,并不是未来的决定因素
Girthy-avatar

Girthy

指标能赚钱,轮不到你我。
CaramelDinosaur-avatar

CaramelDinosaur

[quote][pid=612287711,31984483,1]Reply[/pid] Post by [uid=64217281]千股玦尘[/uid] (2022-05-21 20:13):

指标能赚钱,轮不到你我。[/quote]其实也没有想依赖指标,分析还是得靠自己,只是想做一些监控,毕竟社畜没那么多时间盯盘,这样上班的时候,发生了需要关心的再看两眼
АПИР-avatar

АПИР

从科学角度说,当然误差越小越合理

从实际使用说,没区别。你5分钟周期算26根线,误差能差到哪去?0.05元顶天了吧。即使有误差又怎样呢,你报单价和成交价的误差都很可能大于0.05。
АПИР-avatar

АПИР

[quote][pid=612234262,31984483,1]Reply[/pid] Post by [uid=42516541]今天谁洗碗[/uid] (2022-05-21 15:19):

楼主,想请教一下,我也想自己计算试验一下,请问你通过什么软件计算的?excel?或者自己编程?可以分享一下吗?谢谢[/quote]python ta-lib库 ema/MACD/MA/KDJ这些常用指标都有
BBC-_-Dubz-avatar

BBC-_-Dubz

百度百科不靠谱,之前做回测写公式时查过许多指标的算法,好几个都错的,不过具体是哪些记不清了,我也是按着里面的公式写出来一算发现和同花顺不一样才发现的(顺带一提还有某个指标同花顺和通达信都不同),要找正确指标最好还是去国外网站搜索。
记得当时还在百科的讨论里面提了下,结果没通过。
<> Ψ-avatar

<> Ψ

其实不会,考虑到权重指数衰减,前期误差也是随着项数增多衰减的,最终误差和单纯抹除一次应该在同一水平上
<> Ψ-avatar

<> Ψ

而且就最多两位数期数,完全不需要递推,乘加就行了
JJKXP_JB-avatar

JJKXP_JB

[quote][pid=612293779,31984483,1]Reply[/pid] Post by [uid=731907]wking1027[/uid] (2022-05-21 20:42):

python ta-lib库 ema/MACD/MA/KDJ这些常用指标都有[/quote]谢谢[s:ac:blink]
<> Ψ-avatar

<> Ψ

[quote][pid=612135027,31984483,1]Reply[/pid] Post by [uid=37715975]codievilky[/uid] (2022-05-21 01:08):

明白了。我其实纠结的也是这个,是这个数值本身真的有意义,还是和大家看到的一样有意义。可能和大家看到的一样才更具有指导意义[/quote]数值计算(以及物理实验,工业设计)中最重要的一部分就是误差估计