行情 · 均线设置
均线算法说明
均线把一段价格变化压成一条平滑曲线。算法决定哪些价格更重要,周期决定观察的时间尺度。同样设置“20”,不同算法也会画出不同的线。
设置与周期
DeepMoney 的“均线设置”使用当前主图周期的收盘价。每条线分别选择算法、周期和颜色,点击“应用设置”后更新;颜色只影响显示。
周期N表示K线根数。日线的N=5观察5根日K,周线观察5根周K,5分钟图观察5根5分钟K,并不是固定的5个自然日。下文用Pₜ表示当前根的收盘价,t − 1表示前一根。
对数坐标只改变价格在图上的位置,均线仍先按原价格计算,再映射到坐标轴。
七种算法对比
先看权重分配,再决定需要哪种平滑。没有一种算法在所有行情中都更合适。
| 算法 | 通俗理解 | 主要差异 |
|---|---|---|
| SMA简单移动平均 | 最近N根收盘价同等重要 | 直观;最旧价格移出窗口也会改变结果。 |
| EMA指数移动平均 | 近期价格权重更高,旧影响逐步衰减 | 递推计算,初始化及更早历史会影响数值。 |
| WMA线性加权移动平均 | 窗口内由旧到新,权重从1增加到N | 强调近期,但只使用最近N根。 |
| DEMA双重指数移动平均 | 组合两层EMA,抵消部分滞后 | 使用加减组合,可能超出近期价格范围。 |
| TEMA三重指数移动平均 | 组合三层EMA,进一步补偿滞后 | 补偿更强,也可能出现过冲。 |
| TRIMA三角移动平均 | 窗口中间的价格权重最大 | 强调窗口中间,不是给最新价格最大权重。 |
| KAMA考夫曼自适应移动平均 | 根据价格变化的效率调整平滑速度 | N是效率观察窗口,不是固定的平滑系数。 |
SMA · 简单移动平均
把最近N根收盘价相加,再除以N。每根价格的权重相同;每出现一根新K线,就移出最旧的一根。
SMAₜ = (Pₜ + Pₜ₋₁ + … + Pₜ₋₍ₙ₋₁₎) ÷ N例如最近5根收盘价依次为10、11、12、11、13,SMA5=57÷5=11.4。如果下一根收14,窗口变为11、12、11、13、14,SMA5变成12.2。变化同时包含新价格进入和旧价格移出的影响。
算法参考:TA-Lib SMA。
EMA · 指数移动平均
每次用当前价格修正上一根EMA。近期价格影响更大,更早价格的影响逐步衰减,不会像SMA那样在窗口边界一次移出。
α = 2 ÷ (N + 1)
EMAₜ = EMAₜ₋₁ + α × (Pₜ − EMAₜ₋₁)DeepMoney 用最初N个连续有效价格的算术平均作为首个EMA值,再开始递推。仍用前面的5个价格,EMA5的首值为11.4;下一根收14时,α=1/3,结果约为12.2667。
其他软件如果从第一个价格直接递推,或使用不同长度的历史数据,开头一段数值可能不同。比较前应先核对初始化和输入范围。
算法参考:TA-Lib EMA;本产品使用首N根均值初始化。
WMA · 线性加权移动平均
只看最近N根,最旧一根权重为1,最新一根权重为N。与EMA的递推衰减不同,这是一段固定窗口内的线性权重。
WMAₜ = [1×Pₜ₋₍ₙ₋₁₎ + 2×Pₜ₋₍ₙ₋₂₎ + … + N×Pₜ]
÷ [N×(N+1)÷2]同样的10、11、12、11、13,WMA5=(10+22+36+44+65)÷15=11.8。最新的13元权重最高,所以结果高于同窗口的SMA5。
算法参考:TA-Lib WMA。
DEMA · 双重指数移动平均
先算价格的EMA,再对这条EMA算一次EMA,最后做线性组合。两层使用相同周期N。
E1 = EMA(P, N)
E2 = EMA(E1, N)
DEMA = 2×E1 − E2DEMA的最终结果不是第二层EMA本身。减去E2是为了补偿一部分平滑造成的滞后;由于包含减法,曲线可能越过近期价格区间,不能将它当成普通加权平均。
算法参考:TA-Lib DEMA。
TEMA · 三重指数移动平均
沿用DEMA中的E1、E2,再对E2计算同周期EMA得到E3,然后组合三条序列。
E3 = EMA(E2, N)
TEMA = 3×E1 − 3×E2 + E3TEMA的最终结果也不是第三层EMA本身。它通过正负系数进一步补偿滞后,代价是可能过冲,对局部变化的反应也更明显。“更贴近价格”不等于更能预测后续走势。
算法参考:TA-Lib TEMA。
TRIMA · 三角移动平均
窗口内的权重先增加、再减小,中间价格最重要。例如N=5时权重为1、2、3、2、1;N=4时为1、2、2、1。
a = 向上取整(N÷2)
b = 向下取整(N÷2) + 1
TRIMA(P, N) = SMA(SMA(P, a), b)对10、11、12、11、13,TRIMA5=(10+22+36+22+13)÷9≈11.4444。它强调窗口中部,与强调最新价格的WMA方向不同。
算法参考:TA-Lib TRIMA。
KAMA · 考夫曼自适应移动平均
先比较“净移动了多远”和“途中一共走了多远”。价格持续向一个方向移动时,两者接近;来回折返时,净移动小于总移动。这个比例叫效率比ER。
净移动 = |Pₜ − Pₜ₋ₙ|
总移动 = 最近N次相邻收盘价变化的绝对值之和
ER = 净移动 ÷ 总移动
SC = [ER×(2/3 − 2/31) + 2/31]²
KAMAₜ = KAMAₜ₋₁ + SC×(Pₜ − KAMAₜ₋₁)ER较高时,平滑系数较大;来回波动较多、ER较低时,平滑系数较小。本设置使用标准KAMA的快慢常数2和30,用户填写的N控制效率比的观察窗口。总移动为零时,计算采用ER=1处理平价窗口。
计算第一个ER要比较相隔N根的两个价格,因此至少需要N+1个收盘价;首次递推以前一根收盘价作为起始值。KAMA同样受起算位置影响,不能只看最后N根就认为与所有软件完全一致。
算法参考:TA-Lib KAMA及其初始化与平价窗口实现。
预热与数值核对
“预热”是算出第一个有效值以前所需的历史输入。以下从一段连续有效收盘价的第一根开始计数,采用本产品当前初始化口径;已有同口径历史状态时可以续算。
| 算法 | 首次输出所需收盘价数 | N=20的例子 |
|---|---|---|
| SMA | N | 第20根 |
| EMA | N | 第20根 |
| WMA | N | 第20根 |
| DEMA | 2N − 1 | 第39根 |
| TEMA | 3N − 2 | 第58根 |
| TRIMA | N | 第20根 |
| KAMA | N + 1 | 第21根 |
DEMA和TEMA需要等待前一层EMA产生足够的有效值,所以不会在第N根同时出值。预热不足的位置保留空值;未闭合或缺失的行情可能使当前范围无法计算,不会用零补齐。
第一个有效值只表示计算已经成立,不表示初始化影响已经消失。核对两条均线时,先确认算法和周期,再确认K线周期、收盘价口径、复权方式、历史起点和初始化方法。递推算法在这些条件不一致时可能出现差异。
关于窗口算法与递推算法的起点差异,见TA-Lib 数值稳定性说明。本页算例和首次输出位置已按DeepMoney使用的计算实现核对。
阅读曲线
观察同权窗口平均可选SMA;强调近期价格可比较EMA和WMA;研究滞后补偿可对照DEMA、TEMA;强调窗口中部平滑可看TRIMA;研究随路径效率调整平滑速度可看KAMA。比较算法时先保持周期和输入一致,才能看清权重造成的差异。
周期加大通常会让曲线更平滑,也更慢地响应新变化。不同周期或算法的线相交,只说明两条计算结果的相对位置变化;均线描述已经发生的价格,单次交叉不能证明之后会上涨或下跌。
在客户端点击“均线设置”,修改一条线后应用,再回到相同历史区间对照。先只改变算法或周期中的一项,比同时改动所有设置更容易理解差异。