TSIのダウンロードと解説|MT4インジケーター
TSIというMT4インジケーターがほしいです。
TSIはどんなインジケーターなのですか?
FXの不労所得だけで年収2000万を達成しました。
このお悩みに誠意をもって回答します。
この無料EAで不労所得が稼げます
累計テスト120年以上・リアル取引公開2020年~
このページでわかること・できること
〇TSIインジケーターのダウンロード
〇TSIについての詳しい解説
TSIのダウンロード
ここからインジケーターのダウンロードが可能。
ダウンロードするインジケーターは.ex4ファイルのため、MT4のインジケーターフォルダへ移動すれば使用できる。
TSIインジケーターのインストール
ダウンロードしたTSIインジケーターはMT4のデータフォルダからindicatorsフォルダを探しファイルを移動する。
indicatorsフォルダにファイルを移動し、MT4を再起動するとインストールが完了する。
TSIとは?|MT4インジケーター
MT4(MetaTrader 4)におけるTSI(True Strength Index)は、トレンドの強さと方向を評価するためのモメンタムベースのオシレーターだ。TSIはダブル指数移動平均(EMA)を使用し、モメンタムの滑らかな値を計算する。以下にTSIの計算方法とその意味について詳しく説明する。
TSIの計算式
TSIの計算式は以下の通り。
[math]{TSI}(\text{終値}, r, s) = 100 \times \frac{\text{EMA}(\text{EMA}(\text{mtm}, r), s)}{\text{EMA}(\text{EMA}(|\text{mtm}|, r), s)}[/math]
ここで、各項目は以下のように定義される:
- 終値: 株式や通貨ペアなどの取引の終値。
- mtm (momentum): モメンタム。通常、現在の終値から前の終値を引いたもの。つまり、
[math]{mtm}(i) = \text{Close}(i) – \text{Close}(i-1)[/math] - r: 最初のEMAの期間。
- s: 二番目のEMAの期間。
- EMA: 指数移動平均。
計算手順
- モメンタムの計算(mtm):
[math]{mtm}(i) = \text{Close}(i) – \text{Close}(i-1)[/math] - モメンタムの絶対値の計算:
[math]|\text{mtm}|[/math] - モメンタムのEMAの計算:
[math]\text{EMA}(\text{mtm}, r)[/math] - モメンタムEMAのEMAの計算:
[math]\text{EMA}(\text{EMA}(\text{mtm}, r), s)[/math]
[math]\text{EMA}(\text{EMA}(|\text{mtm}|, r), s)[/math] - TSIの計算:
[math]\text{TSI} = 100 \times \frac{\text{EMA}(\text{EMA}(\text{mtm}, r), s)}{\text{EMA}(\text{EMA}(|\text{mtm}|, r), s)} [/math]
パラメーターについて
TSI(True Strength Index)のパラメーターは、主に以下の3つ。これらのパラメーターはTSIの計算に使用され、インジケーターの応答性や滑らかさに影響を与える。
- r(短期EMA期間):
- TSI計算の最初のEMA期間。
- このパラメーターは、モメンタム(mtm)の短期的な変動を滑らかにするために使用される。
- 例えば、[math]r[/math]が7の場合、直近7期間のモメンタムを滑らかにする。
- s(長期EMA期間):
- TSI計算の2番目のEMA期間。
- このパラメーターは、短期EMAで滑らかにされたモメンタム(またはその絶対値)をさらに滑らかにするために使用される。
- 例えば、sが25の場合、短期EMAで滑らかにされたモメンタムをさらに25期間にわたって滑らかにする。
- SignalPeriod(シグナル期間):
- TSIのシグナルラインを計算するためのEMA期間。
- シグナルラインは、TSIの値のさらに滑らかなバージョンであり、トレンドの確認やエントリー/エグジットのシグナルとして使用される。
- 例えば、SignalPeriodが7の場合、7期間のTSI値を滑らかにしてシグナルラインを計算する。
パラメーターの効果
- 短期EMA期間(r):
- 短期EMA期間が短いほど、TSIは価格変動に対してより敏感になります。つまり、TSIがより速く反応し、ノイズが多くなる。
- 短期EMA期間が長いほど、TSIは滑らかになり、反応が遅くなるが、ノイズが少なくなる。
- 長期EMA期間(s):
- 長期EMA期間が短いほど、短期EMAで滑らかにされたモメンタムに対するTSIの反応が速くなる。
- 長期EMA期間が長いほど、TSIはさらに滑らかになり、遅行性が増す。
- シグナル期間(SignalPeriod):
- シグナル期間が短いほど、シグナルラインはTSIに対してより速く反応し、トレンドの変化を迅速に示すが、誤シグナルが増える可能性がある。
- シグナル期間が長いほど、シグナルラインは滑らかになり、より確実なシグナルを提供するが、遅行性が増す。
パラメーターの設定例
- デフォルト設定:一般的なデフォルト設定として、短期EMA期間(r)を25、長期EMA期間(s)を13、シグナル期間(SignalPeriod)を7とすることがよくある。
- 短期取引(スキャルピングなど):価格変動に敏感に反応するように、短期EMA期間(r)を短くし(例えば、5〜10)、長期EMA期間(s)も短めに設定する(例えば、10〜15)。シグナル期間も短めに設定する(例えば、3〜5)。
- 長期取引(スイングトレードなど):滑らかな指標を得るために、短期EMA期間(r)を長くし(例えば、30〜50)、長期EMA期間(s)も長めに設定する(例えば、20〜40)。シグナル期間も長めに設定する(例えば、10〜15)。
結論
TSIのパラメーターは、トレーダーの取引スタイルや市場の状況に応じて調整する必要がある。異なるパラメーターをテストし、自分の戦略に最適な設定を見つけることが重要となる。
TSIのプログラム
//+------------------------------------------------------------------+
//| TSI.mq4 |
//| Copyright 2024, FX-Bonus.net |
//| https://fx-bonus.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2024, FX-Bonus.net"
#property link "https://fx-bonus.net/"
#property version "1.00"
#property strict
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Gold
#property indicator_color2 DeepPink
#property indicator_maximum 100
#property indicator_minimum -100
#property indicator_level1 0
#property indicator_level2 50
#property indicator_level3 -50
extern int First_R = 7;
extern int Second_S = 7;
extern int SignalPeriod = 7;
double TSI_Buffer[];
double SignalBuffer[];
double MTM_Buffer[];
double EMA_MTM_Buffer[];
double EMA2_MTM_Buffer[];
double ABSMTM_Buffer[];
double EMA_ABSMTM_Buffer[];
double EMA2_ABSMTM_Buffer[];
int OnInit()
{
IndicatorBuffers(8);
SetIndexBuffer(2, MTM_Buffer);
SetIndexBuffer(3, EMA_MTM_Buffer);
SetIndexBuffer(4, EMA2_MTM_Buffer);
SetIndexBuffer(5, ABSMTM_Buffer);
SetIndexBuffer(6, EMA_ABSMTM_Buffer);
SetIndexBuffer(7, EMA2_ABSMTM_Buffer);
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(0, TSI_Buffer);
SetIndexLabel(0, "TSI");
SetIndexStyle(1, DRAW_LINE);
SetIndexBuffer(1, SignalBuffer);
SetIndexLabel(1, "Signal");
IndicatorShortName("TSI(" + IntegerToString(First_R) + "," + IntegerToString(Second_S) + "," + IntegerToString(SignalPeriod) + ")");
return INIT_SUCCEEDED;
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int limit = MathMax(First_R, MathMax(Second_S, SignalPeriod)) + 2;
if (rates_total <= limit)
return 0;
int start_index = rates_total - limit;
for (int i = start_index; i >= 0; i--)
{
MTM_Buffer[i] = (close[i] - close[i + 1]);
ABSMTM_Buffer[i] = MathAbs(MTM_Buffer[i]);
}
for (int i = start_index; i >= 0; i--)
{
EMA_MTM_Buffer[i] = iMAOnArray(MTM_Buffer, 0, First_R, 0, MODE_EMA, i);
EMA_ABSMTM_Buffer[i] = iMAOnArray(ABSMTM_Buffer, 0, First_R, 0, MODE_EMA, i);
}
for (int i = start_index; i >= 0; i--)
{
EMA2_MTM_Buffer[i] = iMAOnArray(EMA_MTM_Buffer, 0, Second_S, 0, MODE_EMA, i);
EMA2_ABSMTM_Buffer[i] = iMAOnArray(EMA_ABSMTM_Buffer, 0, Second_S, 0, MODE_EMA, i);
}
for (int i = start_index; i >= 0; i--)
{
TSI_Buffer[i] = 100.0 * EMA2_MTM_Buffer[i] / EMA2_ABSMTM_Buffer[i];
}
for (int i = start_index; i >= 0; i--)
{
SignalBuffer[i] = iMAOnArray(TSI_Buffer, 0, SignalPeriod, 0, MODE_EMA, i);
}
return rates_total;
}
ソースコードを詳しく解説
メタデータとパラメータの定義
#property strict
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Gold
#property indicator_color2 DeepPink
#property indicator_maximum 100
#property indicator_minimum -100
#property indicator_level1 0
#property indicator_level2 50
#property indicator_level3 -50
#property strict
:コードの厳格なチェックを有効する。#property indicator_separate_window
:インジケーターをメインチャートとは別のウィンドウに表示。#property indicator_buffers 2
:インジケーターが2つのバッファを使用することを指定。#property indicator_color1 Gold
:最初のインジケーターラインの色を金色に設定。#property indicator_color2 DeepPink
:2番目のインジケーターラインの色をディープピンクに設定。#property indicator_maximum 100
:インジケーターウィンドウの最大値を100に設定。#property indicator_minimum -100
:インジケーターウィンドウの最小値を-100に設定。#property indicator_level1 0
:レベルラインを0に設定。#property indicator_level2 50
:レベルラインを50に設定。#property indicator_level3 -50
:レベルラインを-50に設定。
外部パラメーターとバッファの宣言
extern int First_R = 7;
extern int Second_S = 7;
extern int SignalPeriod = 7;
double TSI_Buffer[];
double SignalBuffer[];
double MTM_Buffer[];
double EMA_MTM_Buffer[];
double EMA2_MTM_Buffer[];
double ABSMTM_Buffer[];
double EMA_ABSMTM_Buffer[];
double EMA2_ABSMTM_Buffer[];
extern int First_R = 7;
:最初のEMAの期間を設定(デフォルトは7)。extern int Second_S = 7;
:2番目のEMAの期間を設定(デフォルトは7)。extern int SignalPeriod = 7;
:シグナルラインのEMA期間を設定(デフォルトは7)。
初期化関数
int OnInit()
{
IndicatorBuffers(8);
SetIndexBuffer(2, MTM_Buffer);
SetIndexBuffer(3, EMA_MTM_Buffer);
SetIndexBuffer(4, EMA2_MTM_Buffer);
SetIndexBuffer(5, ABSMTM_Buffer);
SetIndexBuffer(6, EMA_ABSMTM_Buffer);
SetIndexBuffer(7, EMA2_ABSMTM_Buffer);
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(0, TSI_Buffer);
SetIndexLabel(0, "TSI");
SetIndexStyle(1, DRAW_LINE);
SetIndexBuffer(1, SignalBuffer);
SetIndexLabel(1, "Signal");
IndicatorShortName("TSI(" + IntegerToString(First_R) + "," + IntegerToString(Second_S) + "," + IntegerToString(SignalPeriod) + ")");
return INIT_SUCCEEDED;
}
IndicatorBuffers(8);
:使用するバッファの数を8に設定。SetIndexBuffer
:各バッファをインデックスに関連付けする。SetIndexStyle
:インジケーターのスタイルを設定(ここでは、線を描画)。SetIndexLabel
:各バッファのラベルを設定。IndicatorShortName
:インジケーターの短い名前を設定。
計算関数
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int limit = MathMax(First_R, MathMax(Second_S, SignalPeriod)) + 2;
if (rates_total <= limit)
return 0;
int start_index = rates_total - limit;
for (int i = start_index; i >= 0; i--)
{
MTM_Buffer[i] = (close[i] - close[i + 1]);
ABSMTM_Buffer[i] = MathAbs(MTM_Buffer[i]);
}
for (int i = start_index; i >= 0; i--)
{
EMA_MTM_Buffer[i] = iMAOnArray(MTM_Buffer, 0, First_R, 0, MODE_EMA, i);
EMA_ABSMTM_Buffer[i] = iMAOnArray(ABSMTM_Buffer, 0, First_R, 0, MODE_EMA, i);
}
for (int i = start_index; i >= 0; i--)
{
EMA2_MTM_Buffer[i] = iMAOnArray(EMA_MTM_Buffer, 0, Second_S, 0, MODE_EMA, i);
EMA2_ABSMTM_Buffer[i] = iMAOnArray(EMA_ABSMTM_Buffer, 0, Second_S, 0, MODE_EMA, i);
}
for (int i = start_index; i >= 0; i--)
{
TSI_Buffer[i] = 100.0 * EMA2_MTM_Buffer[i] / EMA2_ABSMTM_Buffer[i];
}
for (int i = start_index; i >= 0; i--)
{
SignalBuffer[i] = iMAOnArray(TSI_Buffer, 0, SignalPeriod, 0, MODE_EMA, i);
}
return rates_total;
}
関数の引数
rates_total
:現在のバーの数。prev_calculated
:以前に計算されたバーの数。time[]
、open[]
、high[]
、low[]
、close[]
、tick_volume[]
、volume[]
、spread[]
:価格データおよびその他のデータ配列。
計算処理
- 初期設定:
int limit = MathMax(First_R, MathMax(Second_S, SignalPeriod)) + 2; if (rates_total <= limit) return 0;
- 必要な最小バー数を計算。バー数が少なすぎる場合、計算を中止。
- モメンタムの計算:mql4コードをコピーする
int start_index = rates_total - limit; for (int i = start_index; i >= 0; i--) { MTM_Buffer[i] = (close[i] - close[i + 1]); ABSMTM_Buffer[i] = MathAbs(MTM_Buffer[i]); }
- モメンタム(MTM)とその絶対値を計算してバッファに格納。
- 最初のEMAの計算:
for (int i = start_index; i >= 0; i--) { EMA_MTM_Buffer[i] = iMAOnArray(MTM_Buffer, 0, First_R, 0, MODE_EMA, i); EMA_ABSMTM_Buffer[i] = iMAOnArray(ABSMTM_Buffer, 0, First_R, 0, MODE_EMA, i); }
- モメンタムとその絶対値の最初のEMAを計算してバッファに格納。
- 2番目のEMAの計算:
for (int i = start_index; i >= 0; i--) { EMA2_MTM_Buffer[i] = iMAOnArray(EMA_MTM_Buffer, 0, Second_S, 0, MODE_EMA, i); EMA2_ABSMTM_Buffer[i] = iMAOnArray(EMA_ABSMTM_Buffer, 0, Second_S, 0, MODE_EMA, i); }
- 最初のEMAの結果の2番目のEMAを計算してバッファに格納。
- TSIの計算:
for (int i = start_index; i >= 0; i--) { TSI_Buffer[i] = 100.0 * EMA2_MTM_Buffer[i] / EMA2_ABSMTM_Buffer[i]; }
- TSIの最終値を計算してバッファに格納。
- シグナルラインの計算:
for (int i = start_index; i >= 0; i--) { SignalBuffer[i] = iMAOnArray(TSI_Buffer, 0, SignalPeriod, 0, MODE_EMA, i); }
- TSIのシグナルラインを計算してバッファに格納。
- 結果の返却:
return rates_total;
- 現在のバー数を返却して計算を終了。
MT4インジケーターまとめ
-
海外FXのEA_MT4BSIのダウンロードと解説|MT4インジケーター
-
海外FXのEA_MT4平均足Smoothdのダウンロードと解説|MT4インジケーター
-
海外FXのEA_MT4エントリーサインをだすMT4インジケーター特集
-
海外FXのEA_MT4SuperTrendスーパートレンドのダウンロードと解説|MT4インジケーター
-
海外FXのEA_MT4市場の時間をチャートに表示するMT4インジケーター|MarketCrock
-
海外FXのEA_MT4ボリンジャーバンドをサブウインドウに表示するMT4インジケーター
-
海外FXのEA_MT4GMMA・グッピーのダウンロードと解説|MT4インジケーター
-
海外FXのEA_MT4MT4からインジケーターを無料でダウンロード|1350種類から検索
-
海外FXのEA_MT4【MT4】高値と安値がわかる無料インジケーター特集|High Low【海外FX】
-
海外FXのEA_MT4TTFのダウンロードと解説|MT4インジケーター
-
海外FXのEA_MT4RCIインジケーターのダウンロードと解説|MT4
-
海外FXのEA_MT4TMAのダウンロードと解説|MT4インジケーター
-
海外FXのEA_MT4【MT4】スキャルピングで使えるオシレーター解説【無料インジケーター】
-
海外FXのEA_MT4平均足をサブウィンドウに表示するMT4インジケーター
-
海外FXのEA_MT41日の区切りに垂直ラインを引くMT4インジケーター|OneDayLine
-
海外FXのEA_MT4T3のダウンロードと解説|MT4インジケーター
-
海外FXのEA_MT4TSIのダウンロードと解説|MT4インジケーター
-
海外FXのEA_MT4Donchian channelのダウンロードと解説|MT4インジケーター
-
海外FXのEA_MT4【無料】マルチタイムフレームのMT4インジケーター特集【最新版】
-
海外FXのEA_MT4Schaff Trend Cycleのダウンロードと解説|MT4インジケーター
-
海外FXのEA_MT4【MT4】ピボットのインジケーター特集【無料】
-
海外FXのEA_MT4【海外FX】ボリンジャーバンドを使ったMT4のインジケーター特集【無料】
-
海外FXのEA_MT4【無料】スキャルピングトレードのサインがでるMT4インジケーター特集【最新23選】
-
海外FXのEA_MT4Aroonのダウンロードと解説|MT4インジケーター