最終更新: 2026年6月
SuperTrendインジケーターは、FXトレーダーの間で広く使われているトレンドフォロー型ツールだ。
「緑ラインなら買い、赤ラインなら売り」という視覚的なシンプルさが人気の理由だが、そのシンプルさの裏側には、ATR(Average True Range)を利用したボラティリティ適応型の設計がある。設定を理解せずに使うと、相場環境によって大量のダマしシグナルを生成してしまう。
この記事では、SuperTrendの計算式から始めてMT5での設定手順、パラメータ調整の数理的根拠、そして実際のバックテストを通じた評価方法まで解説する。
SuperTrendとは——計算式から読み解く
SuperTrend(スーパートレンド)は、ATR(Average True Range: 平均変動幅)に乗数(Multiplier)をかけた幅でトレンドラインを動的に算出し、価格に対してトレンド方向を色で示すインジケーターだ。
計算式は以下の通りだ。
基準ライン(ベーシックバンド):
上限バンド = (高値 + 安値) / 2 + ATR × Multiplier
下限バンド = (高値 + 安値) / 2 - ATR × Multiplier
SuperTrendラインの決定:
- 価格が上限バンドを下回っている間 → SuperTrendラインは上限バンドに設定(赤ライン・下降トレンド)
- 価格が下限バンドを上回っている間 → SuperTrendラインは下限バンドに設定(緑ライン・上昇トレンド)
ATRを使っているため、ボラティリティが高い相場では自動的にバンド幅が広がる。これは「ボラティリティが高い時は大きな値動きに追従する」という適応性を生む。逆にボラティリティが低い相場では幅が狭くなり、細かいトレンド転換を捉えようとする。
2つのパラメータの意味
SuperTrendの設定は「ATR期間(Period)」と「乗数(Multiplier)」の2つだけだ。
ATR期間(Period)
ATRを計算する過去の期間数を指定する。
- 短い期間(7〜10): 直近の値動きに敏感に反応する。シグナルが多く出るが、ダマしも増える。スキャルピング・短期デイトレードに向いている
- 標準期間(14): 最もよく使われるデフォルト設定。多くのトレーダーが参照するため、意識されやすい節目になりやすい
- 長い期間(20〜30): 相場の大きな流れに追従する。シグナルは少ないが、遅延が増える。スイングトレード・週足・月足向き
乗数(Multiplier)
ATRに掛ける倍率だ。バンド幅の広さを決定する。
- 小さい乗数(1.5〜2.0): バンドが狭い。価格に接近するため転換シグナルが頻繁に出る。ダマしが多い
- 標準乗数(3.0): 多くのケースで使われる基本設定
- 大きい乗数(4.0〜5.0): バンドが広い。ダマしが減るが、実際のトレンド転換に対して遅れが大きくなる
数式で考えると、Multiplierが大きいほどバンドが価格から遠くなり、価格が大きく動かないとトレンドが反転しない。リスクリワード比の観点では「損切りが遠くなる代わりに精度が上がる」というトレードオフだ。
MT5へのインストール手順
SuperTrendはMT5の標準インジケーターではないため、カスタムインジケーターとして追加する必要がある。
ステップ1: インジケーターファイルの入手
MT5用のSuperTrendインジケーターは複数の無料版が公開されている。.mq5または.ex5ファイル形式のものを取得する。
ステップ2: MT5のデータフォルダを開く
MT5を起動し、メニューから「ファイル」→「データフォルダを開く」をクリックする。エクスプローラーが開く。
ステップ3: ファイルを配置する
開いたフォルダ内の「MQL5」→「Indicators」フォルダにダウンロードしたファイルを配置する。
.mq5ファイルの場合は、MT5を再起動してからコンパイルが必要な場合がある。
ステップ4: チャートへの追加
MT5の「ナビゲーター」ウィンドウを開く(Ctrl+N)。「インジケーター」→「カスタム」の中にSuperTrendが表示されれば追加完了だ。チャートにドラッグ&ドロップするか、ダブルクリックで追加できる。
ステップ5: パラメータ設定
インジケーターを追加する際にダイアログが開く。ここで「ATR Period」(ATR期間)と「Multiplier」(乗数)を設定する。
Claudeと会話しながらインジケータが作れるhedgrow.ioでSuperTrendの条件を組み合わせたカスタムインジケーターを生成することも可能だ。
相場別の推奨設定
相場環境によって効果的なパラメータが異なる。バックテストデータをもとに整理する。
トレンド相場(強い一方向の動き)
| パラメータ | 推奨値 | 根拠 |
|---|---|---|
| ATR Period | 14 | 標準値。トレンドの持続期間を適切にキャプチャ |
| Multiplier | 3.0〜4.0 | バンドを広くして頻繁な反転を避ける |
強いトレンド相場では、バンドを広く設定することで「一時的な調整」でシグナルが反転しない。
レンジ相場(横ばい・振れ幅が限定)
SuperTrendはレンジ相場でのパフォーマンスが著しく低下する。これはATRベースの動的ライン設計の根本的な性質だ。
レンジ相場でSuperTrendを使い続けると、頻繁な方向転換でシグナルが乱立し、コストだけが積み上がる。レンジ相場での適応策として「ADX(平均方向指数)でトレンド強度をフィルタリングし、ADXが25以上の時だけSuperTrendシグナルを有効にする」という手法がある。
高ボラティリティ相場(急激な値動き)
| パラメータ | 推奨値 | 根拠 |
|---|---|---|
| ATR Period | 10 | 直近のボラティリティを素早く反映 |
| Multiplier | 4.0〜5.0 | 急激な動きによるダマしを減らす |
バックテストによる設定最適化
「最適な設定は何か」という質問に対して、正直に答えると「相場環境によって異なる」だ。普遍的な最適解は存在しない。
ただし、バックテストを使った評価アプローチを体系化することはできる。
期間分割テストの重要性
特定の期間で最適化したパラメータは、別の期間で機能しないことが多い(カーブフィッティング問題)。
推奨アプローチ:
- バックテスト期間を前半・後半に2分割する
- 両方の期間でPFが1.0以上を維持できるパラメータ範囲を特定する
- 両期間で安定したパラメータが「ロバストな設定」と評価する
筆者の検証では、USDJPY H1チャートでATR Period=14・Multiplier=3.0のデフォルト設定は、2015〜2019年の低ボラ相場と2022〜2023年の高ボラ相場の両方で比較的安定したパフォーマンスを示した。ただしこれはあくまで検証データであり、将来の相場を保証するものではない。
レジーム別のパフォーマンス確認
バックテスト期間を「トレンド相場が多い期間」と「レンジ相場が多い期間」に分けて、それぞれのPFを確認する。
レンジ相場期間のPFが大きく落ちる場合は、ADXフィルターの追加を検討する。
スプレッドコストの影響
SuperTrendはシグナルが多めに出るインジケーターだ(設定によっては1日に複数シグナル)。スプレッドの影響が大きいため、バックテストのスプレッド設定を現実的な水準(USDJPY: 10ポイント以上)にしておかないと、過剰楽観なPFが出る。
MT5でのSuperTrend EA化
SuperTrendシグナルをEAに組み込んで自動売買化することは技術的に可能だ。ただし「色転換を検出してエントリーするだけ」では不十分なことが多い。標準のMT4/MT5にはSuperTrendが搭載されていないため、カスタムインジケーターのバッファを読み取るか、EA内部でSuperTrend自体を計算するかのいずれかの実装が必要になる。
アプローチ1: カスタムインジケーターのバッファを読み取る
MT4/MT5のコードベース(community library等)から入手したSuperTrendカスタムインジケーターのバッファを、EAから読み取る方法。
input string STIndicatorName = "SuperTrend"; // インジケーター名
input int STPeriod = 14; // ATR期間
input double STMultiplier = 3.0; // 乗数
int STHandle;
double STBuffer0[]; // SuperTrendライン値
int OnInit()
{
STHandle = iCustom(_Symbol, _Period, STIndicatorName,
STPeriod, STMultiplier);
if(STHandle == INVALID_HANDLE)
{
Print("SuperTrendインジケーターのロードに失敗: ", STIndicatorName);
return INIT_FAILED;
}
ArraySetAsSeries(STBuffer0, true);
return INIT_SUCCEEDED;
}
// SuperTrendの値と方向を取得
bool GetSuperTrend(double &stValue, int &direction)
{
if(CopyBuffer(STHandle, 0, 0, 3, STBuffer0) < 3) return false;
stValue = STBuffer0[0];
double close = iClose(_Symbol, _Period, 0);
direction = (close > stValue) ? 1 : -1;
return true;
}
注意: バッファのインデックス(0番がどのデータを返すか)はカスタムインジケーターの実装によって異なる。使用するインジケーターのコードを確認してバッファのマッピングを把握する必要がある。
アプローチ2: EAにSuperTrend計算を内包する
外部インジケーターに依存せず、EAの内部でSuperTrendを計算する方法。バックテストの再現性が高く、ブローカーの環境に依存しない。
input int STPeriod = 14;
input double STMultiplier = 3.0;
int ATRHandle;
double ATRBuffer[];
double upperBand[];
double lowerBand[];
bool isUpTrend[];
// 色転換シグナルの検出(前バーは下降→現バーは上昇 なら買い、その逆なら売り)
int CheckSuperTrendCross()
{
if(!CalculateSuperTrend(10)) return 0;
if(!isUpTrend[1] && isUpTrend[0]) return 1; // 買いシグナル
if(isUpTrend[1] && !isUpTrend[0]) return -1; // 売りシグナル
return 0;
}
CalculateSuperTrend()は中央値±ATR×乗数で上下バンドを算出し、前バーからの継承ロジック(バンドの動的更新)でトレンド方向を決定する内部関数だ。
EAでのSuperTrend活用パターン
パターン1: 色転換エントリー(基本)
void OnTick()
{
if(!IsNewBar()) return; // 確定バーでのみ処理
int signal = CheckSuperTrendCross();
if(signal == 1 && GetADX() >= 25.0) // 緑転換 → 買い(ADXフィルター併用)
OpenBuy();
else if(signal == -1 && GetADX() >= 25.0) // 赤転換 → 売り
OpenSell();
}
パターン2: SuperTrendをトレーリングストップとして使用 — 買いポジションでは下限ライン(lowerBand)を損切りとして追随させ、ラインが現在の損切り価格より有利な水準まで上がったらModifyStopLoss()で更新する。
EA向けパラメータ最適化の探索範囲
| パラメーター | 探索範囲 | ステップ |
|---|---|---|
| STPeriod | 7〜20 | 1 |
| STMultiplier | 1.5〜5.0 | 0.5 |
検証レポートが示す傾向として、M15〜H4足ではSTPeriod=10〜14、STMultiplier=2.5〜3.5の範囲が比較的安定したパフォーマンスを示すことが多い。ただし通貨ペアによって最適値は変わる。
SuperTrendが機能しやすい環境は、明確な方向性のあるトレンド相場・15分足〜4時間足・日足・ボラティリティが中〜高い通貨ペア(GBPJPY・XAUUSD等)。機能しにくい環境は、レンジ相場(ADXが低い局面)・超短期足(M1〜M5)での高頻度色転換・ニュース直後のスパイク時だ。ADXフィルター(ADX≥25)との組み合わせは、SuperTrendをEAに実装する際の「ほぼ必須」の追加条件と言える。
このEA化については、Claudeと会話しながらインジケータが作れるhedgrow.ioを使って対話的に実装することも可能だ。「SuperTrendのシグナルでエントリーして、ATRの2倍で損切り、5ATRで利確するEAを作りたい」という形で日本語で伝えれば、動作するMQL5コードが生成される。
SuperTrendの限界と注意点
ラグ(遅延)の問題
ATRを使ったラインは過去の値動きに基づいて計算されるため、実際のトレンド転換より遅れてシグナルが出る。急な相場反転では、適切なエントリーポイントを逃す可能性がある。
レンジ相場での破綻
SuperTrendはトレンドフォロー型インジケーターとして設計されており、レンジ相場での使用は推奨されない。横ばい相場では頻繁に赤ラインと緑ラインが交互に現れ、コストのかかるシグナルが乱発される。
単独使用のリスク
SuperTrendだけでエントリー判断するのは危険だ。ADX(トレンド強度の確認)・出来高・上位時間足の方向確認など、複数の観点を組み合わせることで精度が上がる。
免責事項
本記事はSuperTrendインジケーターに関する一般的な情報提供を目的としており、特定のトレード手法への投資を推奨するものではありません。FX取引には元本割れリスクが伴います。バックテストの結果は過去データに基づくものであり、将来の成績を保証するものではありません。投資の判断はご自身の責任で行ってください。
関連して、DMI・ADXのEAフィルター実装ガイドも参考にすると理解が深まる。
よくある質問(FAQ)
Q: SuperTrendの最もよく使われるデフォルト設定は何ですか? A: ATR Period=14・Multiplier=3.0がデフォルト設定として最も広く使われています。ただし、これが全ての相場環境に最適というわけではなく、使用する時間足・通貨ペア・相場環境に応じた調整が必要です。
Q: MT5でSuperTrendを使うためにはどこでダウンロードできますか?
A: MT5のマーケットプレイス(MetaTrader 5のMetaQuotes社の公式マーケット)やMQL5.com、または無料のMT5インジケーターサイトでダウンロードできます。ファイル形式は.mq5または.ex5です。
Q: SuperTrendはレンジ相場でも使えますか? A: SuperTrendはトレンドフォロー型インジケーターであり、レンジ相場では誤シグナルが多発します。ADX(平均方向指数)が25以上の時のみ有効にするトレンドフィルターを組み合わせることで、レンジ相場でのダマしを減らすことができます。
Q: SuperTrendのMultiplierを大きくするとどうなりますか? A: バンド幅が広がり、価格が大きく動かないとトレンドが反転しないため、ダマし(誤シグナル)が減少します。ただし、実際のトレンド転換に対して反応が遅くなるというトレードオフがあります。
Q: SuperTrendをEA(自動売買)に使うことはできますか? A: 技術的には可能です。SuperTrendシグナルをMQL5のコードに組み込んで自動売買化できます。Claudeと会話しながらインジケータが作れるhedgrow.ioでは、SuperTrendのシグナルをベースにしたEAを対話的に生成することもできます。
Q: SuperTrendのバッファ番号はどう確認しますか?
A: 使用するカスタムインジケーターのMQL4/MQL5コードをMetaEditorで開き、SetIndexBuffer()の呼び出し順序を確認します。バッファ0が何のデータかはインジケーターの実装によって異なります。
Q: ATR期間とSuperTrendのATR期間を統一すべきですか? A: SuperTrendのATR期間はSuperTrend専用のパラメーターです。ADXやATR損切りに使うATR期間は別途設定でき、それぞれ独立して最適化できます。
Q: SuperTrendとSMA/EMAを組み合わせる場合の推奨設定は? A: SuperTrend(トレンド方向)とSMA200(長期トレンドの確認)の組み合わせが一般的です。SuperTrendが緑かつ価格がSMA200上方にある場合のみ買いエントリーとするフィルター設計が使いやすいです。
著者情報: 金融工学専攻・アルゴリズム取引経験者
