TATrend
TA.TRIMA() - 三角移动平均线
Triangular Moving Average (TRIMA) 三角移动平均线,对中间数据赋予更高权重,平滑效果最强。
语法
python
TA.TRIMA(data)
TA.TRIMA(data, timeperiod=30)参数
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| data | array | 价格数据 | - |
| timeperiod | int | 计算周期 | 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("趋势做空")适用场景
- 长期投资:识别主趋势
- 趋势过滤:作为其他策略的过滤器
- 低频交易:不适合高频短线
- 平稳市场:大周期趋势判断
注意事项
- 滞后性极大,不适合快速交易
- 适合作为趋势背景判断
- 建议与快速指标配合
- 周期建议50以上