1. TSI積立法の考え方

PineScript

TSI(1本)をつくることで割安感を数値化する

価格の変化率(Momentum)は終値ClosePriceから求まる
m = close - close[1]

MomentumをEMAで平滑化(スムージング)する
2回実行することで十分に滑らかな線になる
ema1 = EMA(m, 長期パラメータ)
ema2 = EMA(ema1, 短期パラメータ)

絶対値の変化率も同様に平滑化する
abs_m = abs(m)
emaAbs1 = EMA(abs_m, 長期パラメータ)
emaAbs2 = EMA(emaAbs1, 短期パラメータ)

TSIはその比率を%に直したもの
TSI = 100 * (ema2 / emaAbs2)

価格の変化率を(価格の変化率の絶対値)で割ると、結果は常に-1 or 1 になります

しかし、

1月1日1月2日1月3日3日間の平均値
m-5030-20-13.3
|m|50302033.3

というように「瞬間的な比率」ではなく「3日間の比率」として考えるとm / |m| は -1 or 1 ではなくなります

m / |m| は -0.4 であり、価格が下落していて割安であることを示します

絶対値で割るのはTSI値を正規化する(-1~1の範囲に値を納める)ためです

// 25と7のEMAを用意
tsiLengthLong = input.int(25, "TSI長期", minval=1)
tsiLengthShort = input.int(13, "TSI短期", minval=1)

// EMAでClosePriceを平滑化したTSIをつくる
tsi = ta.tsi(close, tsiLengthLong, tsiLengthShort)

TSIを更に平滑化して2本目のTSIをつくる

TSIそのままでも使えます(TSIが0を下回ったら割安なので購入など)

しかし、TSIは短期的な値動きで上下に大きく揺れるので、「ド短期でみたら割安だけど、中長期的に見たら割安ではない」ということが起こります

TSIが-10以下で買いとルールを作る
→ 一瞬だけ-26になったけどすぐに戻って上がらずに、そのまま-50まで下落した
→ 損失(割安と思って買ったのに「だまし」に会う)

なので、本当の買い場かどうか見極めるためにゴールデンクロスを使います

ゴールデンクロスには2本の線が必要なので、EMAを用意して「TSIを更に平滑化した2本目の線(シグナル線)」をつくります

(青線がTSI本体、赤線がシグナル線になります)

// シグナル線用のEMAを用意
shortEmaLen = input.int(3, "短期EMA", minval=1)

// さらに平滑化して2本目の線をつくる
tsiSignal = ta.ema(tsi, shortEmaLen)

これでだましに会う確率を減らせます

BACK