通达信AVEDEV为什么和手算不同?平均绝对偏差与嵌套均线排错
适用范围:通达信桌面公式编辑器中的数值核对。AVEDEV的官方名称是“平均绝对偏差”,不是最高最低差,也不是标准差。遇到公式值与手算结果不同,先固定输入、窗口和偏差的参照值,再核对显示精度,不要通过反复改参数来追求某个数值。

一、AVEDEV输出什么
官方函数文档给出的用法是AVEDEV(X,N),返回平均绝对偏差。X是要观察的数值序列,N是周期参数。下面用围绕算术平均值的平均绝对偏差作独立数学对照:先求同一窗口的平均值,再求每个样本与这个平均值的差,取绝对值,最后求平均。
这段数学说明用于建立复核基准,不是对客户端内部代码的反向还原。官方简短条目没有详细展开缺失值、初始根或不足N根时的处理,不能把这些行为也当成已经验证。
二、用三项数字完整手算
取从旧到新的样本8、10、12。三项平均值为(8+10+12)/3=10;绝对偏差分别是2、0、2,平均绝对偏差为4/3,约1.333333。若直接求带符号的偏差平均,(-2+0+2)/3=0,正负会抵消,已经换成了另一个问题。
| 样本 | 窗口均值 | 带符号偏差 | 绝对偏差 |
|---|---|---|---|
| 8 | 10 | -2 | 2 |
| 10 | 10 | 0 | 0 |
| 12 | 10 | 2 | 2 |
同一窗口的最高最低差为12-8=4,偏差平方和为4+0+4=8,二者都不是4/3。标准差还涉及平方、平均和开方,不能只因输出都是一个非负数字,就与AVEDEV互换。
三、为什么MA(ABS(CLOSE-MA(CLOSE,3)),3)可能不相等
问题在于内层均值的日期。上面的独立手算让三项样本都减去“当前这个窗口”的同一个均值;嵌套写法则让每一根CLOSE减去它在各自日期的滚动均值,再把这些不同日期的偏差取平均。
例如五个样本依次为6、7、8、10、12。最后三项的共同均值是10,独立平均绝对偏差仍为4/3。嵌套写法在最后三根使用的均值分别为7、25/3和10,绝对偏差分别是1、5/3和2,平均为14/9,约1.555556。两个值不同来自参照均值不同,不需要先断言软件计算错误。
四、用于观察的最小公式
DEV3:AVEDEV(CLOSE,3);
MEAN3:MA(CLOSE,3);
NEST3:MA(ABS(CLOSE-MA(CLOSE,3)),3);
新建独立的技术指标公式,保留这三个输出,测试语法后再观察数据。DEV3是官方函数输出,MEAN3用于记录均值,NEST3仅用于比较上面的另一种计算口径,并不是DEV3的替代实现。公式导入步骤可参考公式导入教程,未知字符串等语法问题见公式报错排查。
五、核对时固定这些条件
在同一品种、同一周期、同一复权状态下,记录连续样本、窗口起点与结束日期。不要把日线三个交易周期与三个自然日混用。只核对已有完整窗口,不拿最左侧历史不足的根去推断初始化规则;样本范围可结合BARSCOUNT检查。
先用未舍入的数值计算,最后才按界面位数显示;约1.33的标签不代表内部值只有两位。显示与计算精度的区别可参考ROUND2说明。若比较标准差,先明确另一函数的统计口径,见STD与STDP区别。
来源与限制
原始依据为通达信官方文档目录所列《通达信公式-全部函数》的AVEDEV、MA、ABS条目;也可从用户红宝书查阅。数字、对照表和嵌套口径反例为原创数学示例,已独立复核算术,没有冒充客户端实测,也没有确认所有版本对缺失值及初始化的处理。
AVEDEV用于理解输入序列的离散程度,不直接表示涨跌方向、交易信号或未来收益。更多数据排错入口见通达信教程中心。




