真实强度指数
业务意义
TSI 是基于价格变化的双重平滑动量指标,通过两次指数移动平均来过滤市场噪音,提供更平滑、更可靠的动量信号,减少虚假交易信号。
核心使用场景
1. 趋势动量确认
- TSI > 0:看涨动量,考虑做多 
- TSI < 0:看跌动量,考虑做空 
- TSI 上升:动量增强 
- TSI 下降:动量减弱 
2. 金叉死叉信号(主要交易信号)
- 金叉:TSI 线上穿信号线,买入信号 
- 死叉:TSI 线下穿信号线,卖出信号 
- 零轴金叉:在零轴以上的金叉更可靠 
- 零轴死叉:在零轴以下的死叉更可靠 
使用要点总结
核心优势:
- 双重平滑减少市场噪音 
- 提供清晰的动量方向 
- 比单一周期指标更可靠 
最佳参数设置:
- 默认参数:25/13/7(长 / 短 / 信号) 
- 短线交易:缩短所有周期 
- 长线投资:延长长周期参数 
信号优先级:
- 背离信号 > 零轴穿越 > 金叉死叉 
- 有趋势确认 > 无趋势确认 
- 有成交量配合 > 无成交量配合 
风险控制:
- TSI 在极端区域要谨慎 
- 结合价格位置确认信号 
- 设置基于 TSI 动量的动态止损 
TSI 通过双重平滑处理,提供了比其他动量指标更可靠、更平滑的信号,特别适合趋势跟踪和动量确认策略。
计算公式
第一步:计算平滑系数 k(n 为周期):
k=2/(n+1)
第二步:计算 ema:
ema =if(#>1, k* 价格列 +(1- k)*ema [-1], 价格列 )
第三步:计算 TSI:
价格变化 = 收盘 - 收盘 [-1]
绝对价格变化 =abs(价格变化)
TSI = ema(ema( 价格变化, 长周期), 短周期 )/ ema(ema( 绝对价格变化, 长周期), 短周期 )*100
第四步:计算信号线(TSI 的 EMA)
TSI_sig =ema(TSI, 信号周期)
EMA 实现代码
指标参数:
| y | 指标返回的字段名。 | 
| x | 要计算的价格字段,如收盘 | 
| n | 时间周期,如 5 | 
函数代码:
| A | B | |
| 1 | func EMA(A, $y, $x, n) | =ema_k=2/(n+1) | 
| 2 | =A.run(if(#>1,ema_k*${x}+(1-ema_k)*${y}[-1],${x}):${y}) | 
TSI 实现代码
指标参数:
| y1 | TSI 输出列名 | 
| y2 | TSI_sig 输出列名 | 
| x | 要计算的价格字段,如收盘 | 
| n1 | 长周期,缺省 25 | 
| n2 | 短周期,缺省 13 | 
| n3 | 信号线周期,缺省 7 | 
函数代码:
| A | B | |
| 1 | func TSI (A,$y1, $y2, $x,n1,n2,n3) | =A.derive@o(${x}-${x}[-1]:价格变化, abs(${x}-${x}[-1]): 绝对价格变化, :ema_l, :ema_la, :ema_s, :ema_sa) | 
| 2 | = EMA(A,ema_l,价格变化,n1) | |
| 3 | =EMA(A,ema_la,绝对价格变化,n1) | |
| 4 | =EMA(A,ema_s,ema_l,n2) | |
| 5 | =EMA(A,ema_sa,ema_la,n2) | |
| 6 | =A.run(ema_s/ema_sa*100:${y1}) | |
| 7 | =EMA(A,${y2},${y1},n3) | |
| 8 | =A.alter(;价格变化, 绝对价格变化, ema_l, ema_la, ema_s, ema_sa) | 
举例:
调用脚本计算浦发银行 2024 年的真实强度指数
| A | ||
| 1 | … | /计算出源数据 | 
| 2 | =A1.derive(:TSI, :TSI_sig) | /增加要返回的指标字段 | 
| 3 | =TSI (A2,TSI,TSI_sig,收盘,25,13,7) | /调用函数计算指标 | 
运行效果:

 
            
         
