Pharos
TATrend

TA.WMA() - 加权移动平均线

Weighted Moving Average (WMA) 加权移动平均线,赋予近期数据更高权重,对价格变化更敏感。

返回趋势指标目录


语法

python
TA.WMA(data)
TA.WMA(data, timeperiod=30)

参数

参数类型说明默认值
dataarray价格数据(通常为收盘价)-
timeperiodint计算周期30

返回值

返回加权移动平均线数组。


计算方法

plaintext
WMA = Σ(Price[i] × Weight[i]) / Σ(Weight[i])
其中:Weight[i] = n - i + 1(最近的权重最高)

示例(周期5):
价格:[100, 102, 104, 103, 105]
权重:[1, 2, 3, 4, 5]
WMA = (100×1 + 102×2 + 104×3 + 103×4 + 105×5) / (1+2+3+4+5)
    = (100 + 204 + 312 + 412 + 525) / 15
    = 103.53

特点

  • 加权机制:近期价格权重更高
  • 响应速度:比SMA快,比EMA慢
  • 平滑效果:比SMA好,保持趋势追踪
  • 适用场景:短期趋势跟踪

基础示例

python
def main():
    records = exchange.GetRecords()
    if len(records) < 50:
        return
    
    closes = [r['Close'] for r in records]
    wma5 = TA.WMA(closes, 5)
    wma10 = TA.WMA(closes, 10)
    wma20 = TA.WMA(closes, 20)
    
    # 多周期趋势判断
    if wma5[-1] > wma10[-1] > wma20[-1]:
        Log("多头排列,趋势向上")
    elif wma5[-1] < wma10[-1] < wma20[-1]:
        Log("空头排列,趋势向下")

高级应用

WMA交叉策略

python
def wma_cross_strategy():
    records = exchange.GetRecords()
    closes = [r['Close'] for r in records]
    
    wma_fast = TA.WMA(closes, 10)
    wma_slow = TA.WMA(closes, 30)
    
    # 金叉做多
    if wma_fast[-1] > wma_slow[-1] and wma_fast[-2] <= wma_slow[-2]:
        exchange.Buy(-1, 0.5)
        Log("WMA金叉,开多仓")
    
    # 死叉做空
    elif wma_fast[-1] < wma_slow[-1] and wma_fast[-2] >= wma_slow[-2]:
        exchange.Sell(-1, 0.5)
        Log("WMA死叉,开空仓")

与SMA/EMA对比

指标灵敏度滞后性噪音适用
SMA长期趋势
WMA中期趋势
EMA短期趋势

注意事项

  1. WMA对突发异常值仍敏感
  2. 权重分配线性,不如EMA指数衰减合理
  3. 实际应用中EMA更常用
  4. 适合与其他指标结合

相关指标

  • SMA - 简单移动平均线
  • EMA - 指数移动平均线
  • DEMA - 双重指数移动平均线
  • TEMA - 三重指数移动平均线

返回趋势指标目录 | 返回 TA 指标总目录