简单移动平均线(SMA)的计算方法
直接答案
SMA(简单移动平均线)是通过对最近N个数据点(通常是所选时间周期的收盘价)取算术平均值来计算的。每次新增一个数据点时,会剔除最旧的数据点并加入最新的数据点,从而形成一个滚动平均值。
机制与定义
SMA的定义基于三个选择:
- 你所平均的数据类型:常见的选择是时间序列数据,例如价格(如收盘价)或由价格衍生出的指标值。计算本身是相同的:你对一组数值进行平均。
- 窗口长度(N):N是每个平均值中包含的数据点数量。
- 时间对齐方式:你为序列中的每个位置计算一个SMA值,在最常见的实际定义中,该值位于窗口的末尾。
公式
设数据序列为 (x_t)。对于窗口长度 (N),在时间 (t) 的SMA为:
[ \text{SMA}t = \frac{1}{N}\sum{i=0}^{N-1} x_{t-i} ]
通俗地说:对于 (\text{SMA}_t),将当前值 (x_t) 和前 (N-1) 个值相加,然后除以 (N)。
参数与数据要求
要准确计算SMA,你需要:
- 完整有序的序列 (x_t) 值(在你要平均的序列部分内不能有缺失点)。
- 一致的采样频率(例如每日数据或1小时K线)。如果你混合不同频率,那么“最近N个点”将不再代表相同的时间跨度。
- 为每个比较的序列选定N值。
- 关于首个可用SMA值的约定:只有当你至少有N个观测值时,SMA值才能开始计算。
实例或计算示例
假设你想对一个代表连续时间步长上类似价格指标的数值序列计算3点SMA。
设序列为:
- (x_1 = 10)
- (x_2 = 12)
- (x_3 = 14)
- (x_4 = 13)
当 (N=3) 时:
- (\text{SMA}_3 = (x_3 + x_2 + x_1)/3 = (14 + 12 + 10)/3 = 12)
- (\text{SMA}_4 = (x_4 + x_3 + x_2)/3 = (13 + 14 + 12)/3 = 13)
这展示了滚动行为:(\text{SMA}_4) 重用了 (\text{SMA}_3) 中的两个值((x_3) 和 (x_2)),并将最旧的值((x_1))替换为新点((x_4))。
SMA在实际中的工作方式
由于SMA是一种平均值,它相对于单个数据点减少了短期噪音。然而,由于它反映了多个过去的观测值,其响应速度通常比原始序列更慢。
局限性与风险
SMA虽然简单,但在某些情况下可能无法准确反映你期望的结果。
-
滞后(延迟)于最新变化 由于SMA对过去数值赋予同等权重,即使序列已经移动,它仍可能受到早期水平的影响。在快速变动的市场条件下,SMA可能表现为“跟随”而非“预测”。
-
N值的选择影响行为 较大的N值平滑效果更强,但反应更慢;较小的N值反应更快,但可能波动更剧烈。如果有人比较不同N值的SMA线,由于时间范围不同,这种比较可能会产生误导。
-
数据选择问题 SMA完全依赖于输入序列 (x_t)。如果你平均了错误的字段(例如使用了衍生值而不是预期值)或使用了不一致的采样(混合了不同的时间周期),结果将不符合预期的计算。
-
缺失或不规则数据 如果存在数据缺口或缺失点,“最近N个值”可能无法对应一致的时间窗口。一些系统通过填充或跳过处理缺失数据;这两种方法都会改变计算出的SMA。
-
历史关系不能保证未来表现 即使SMA在过去匹配了某些模式,过去数值的平均值也不能保证未来的行为。市场状况可能发生变化,相同的参数选择在不同时期可能表现出不同的行为。
验证与后续问题
你可以通过以下三个检查独立验证SMA的计算:
- 确认所使用的窗口长度N。
- 使用 (\text{SMA}t = (x_t + x{t-1} + \dots + x_{t-N+1})/N) 手动重新计算一小段数据的SMA。
- 确保输入序列和时间周期符合定义(相同频率、相同顺序)。
如果你想进一步了解,一个有用的后续问题是:SMA与其他使用不同加权方式的移动平均线相比如何?尽管目标相似,但公式会发生变化。