1. TSI積立法の考え方
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 | -50 | 30 | -20 | -13.3 |
| |m| | 50 | 30 | 20 | 33.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