真实强度指数

业务意义

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)

/调用函数计算指标

运行效果:

..