Pharos
TATrend

TA.TRIMA() - 三角移动平均线

Triangular Moving Average (TRIMA) 三角移动平均线,对中间数据赋予更高权重,平滑效果最强。

返回趋势指标目录


语法

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

参数

参数类型说明默认值
dataarray价格数据-
timeperiodint计算周期30

返回值

返回三角移动平均线数组。


计算方法

plaintext
对于偶数周期N:
TRIMA = SMA(SMA(Close, N/2), N/2 + 1)

对于奇数周期N:
TRIMA = SMA(SMA(Close, (N+1)/2), (N+1)/2)

相当于对SMA进行二次平滑,形成三角形权重分布。


特点

  • 最强平滑:所有MA中最平滑
  • 最低噪音:过滤短期波动
  • 最高滞后:响应最慢
  • 中心权重:中间数据权重最高

基础示例

python
def main():
    records = exchange.GetRecords()
    if len(records) < 100:
        return
    
    closes = [r['Close'] for r in records]
    
    trima = TA.TRIMA(closes, 30)
    price = closes[-1]
    
    # 简单趋势判断
    if price > trima[-1] and trima[-1] > trima[-2]:
        Log("上升趋势")
    elif price < trima[-1] and trima[-1] < trima[-2]:
        Log("下降趋势")

高级应用

TRIMA长期趋势策略

python
def trima_long_term():
    records = exchange.GetRecords()
    closes = [r['Close'] for r in records]
    
    trima50 = TA.TRIMA(closes, 50)
    trima100 = TA.TRIMA(closes, 100)
    
    # 长期趋势确认
    if trima50[-1] > trima100[-1]:
        trend = "上升"
    elif trima50[-1] < trima100[-1]:
        trend = "下降"
    else:
        trend = "震荡"
    
    Log("当前长期趋势:", trend)
    
    # 仅顺势交易
    if trend == "上升":
        # 等待回调至TRIMA附近
        if abs(closes[-1] - trima50[-1]) / trima50[-1] < 0.01:
            exchange.Buy(-1, 0.5)
            Log("趋势做多")
    elif trend == "下降":
        if abs(closes[-1] - trima50[-1]) / trima50[-1] < 0.01:
            exchange.Sell(-1, 0.5)
            Log("趋势做空")

适用场景

  1. 长期投资:识别主趋势
  2. 趋势过滤:作为其他策略的过滤器
  3. 低频交易:不适合高频短线
  4. 平稳市场:大周期趋势判断

注意事项

  1. 滞后性极大,不适合快速交易
  2. 适合作为趋势背景判断
  3. 建议与快速指标配合
  4. 周期建议50以上

相关指标

  • SMA - 简单移动平均线
  • EMA - 指数移动平均线
  • KAMA - 考夫曼自适应移动平均线

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