SuperTrendスーパートレンドのダウンロードと解説|MT4インジケーター

SuperTrendアイキャッチ
  • URLをコピーしました!

SuperTrendというMT4のインジケーターが欲しいです。

ホシノ

FXの不労所得だけで年収2000万を達成しました。
このお悩みに誠意をもって回答します。

BBF_MQL5-202400601
リアルトレード公開|EA BBF

このページでわかること・できること

〇SuperTrend(MT4インジケーター)のダウンロード

〇SuperTrendの使い方やプログラムについて

目次

SuperTrendのダウンロード

ここからインジケーターのダウンロードが可能。
ダウンロードするインジケーターファイルは.ex4ファイルとなる。
MT4のインジケーターフォルダへ移動すれば使用可能だ。

SuperTrendのインストール

ダウンロードしたSuperTrendインジケーターはMT4のデータフォルダからindicatorsフォルダを探しファイルを移動する。

ファイル>データフォルダを開く>MQL4>indicators

indicatorsフォルダにファイルを移動し、MT4を再起動するとインストールが完了する。

SuperTrendはどんなインジケーターか?

SuperTrendチャート画像
SuperTrend

SuperTrendインジケーターは、トレンドフォロー型のトレード戦略において現在の市場トレンドを識別し、エントリーポイントやエグジットポイントを見つけるために使用されるテクニカルインジケーター。
以下にSuperTrendインジケーターの基本的な使い方をわかりやすく説明する。

基本概念

SuperTrendインジケーターは、主に以下の要素で構成される:

  1. ATR(Average True Range):市場のボラティリティ(価格変動の幅)を測定する指標。
  2. Multiplier:ATRに乗じる倍率。

インジケーターの構成

SuperTrendインジケーターは、チャート上に1本のラインとして表示される。このラインは、価格の上または下に位置し、トレンドの方向を示している。

  • ラインが価格の下に位置する場合:現在のトレンドは上昇(Bullish)と判断される。
  • ラインが価格の上に位置する場合:現在のトレンドは下降(Bearish)と判断される。

インジケーターの計算方法

  1. Median Price
    • 高値(High)と安値(Low)の平均。
      [math]{Median Price} = \frac{\text{High} + \text{Low}}{2}[/math]
  2. 上下バンドの計算
    • [math]{Upper Band} = \text{Median Price} + (\text{Multiplier} \times \text{ATR})
    • [math]{Lower Band} = \text{Median Price} – (\text{Multiplier} \times \text{ATR})[/math]
  3. トレンドの判定
    • 価格が上のバンドを超えると、トレンドは上昇に変わる。
      トレンドが上昇に変わる条件:[math]{Close}_i > \text{Upper Band}_{i-1}[/math]
    • 価格が下のバンドを下回ると、トレンドは下降に変わる。
      トレンドが下降に変わる条件:[math]{Close}_i < \text{Lower Band}_{i-1}[/math]

トレードのシグナル

SuperTrendインジケーターを使ったトレードの基本的なシグナルは以下の通り:

  1. 買いシグナル(Buy Signal)
    • SuperTrendラインが価格の下に移動したとき。
    • このとき、ラインは上昇トレンドを示す色になる。
  2. 売りシグナル(Sell Signal)
    • SuperTrendラインが価格の上に移動したとき。
    • このとき、ラインは下降トレンドを示す色になる。

基本的な使用方法

SuperTrendトレンド方向
SuperTrendでトレンド方向をみる
  1. チャートにインジケーターを追加
    • MT4にSuperTrendインジケーターを追加する。
    • パラメータとして、ATRの期間(例えば10日)とMultiplier(例えば3.0)を設定する。
  2. トレンドの確認
    • チャート上に表示されたSuperTrendラインの位置を確認する。
    • ラインが価格の下にある場合は上昇トレンド、価格の上にある場合は下降トレンドと判断。
  3. エントリーとエグジット
    • 買いポジションはラインが価格の下に移動したときにエントリーし、下降トレンドに変わったときにエグジット。
    • 売りポジションはラインが価格の上に移動したときにエントリーし、上昇トレンドに変わったときにエグジット。

実践的な使用

SuperTrendはその名の通り、トレンドの視覚化を補助するインジケーターだ。
そのため、トレンドが発生していない状況ではサインの反転が頻発し、俗に言うダマシの状態となる。
ダマシを防ぐためにも、SuperTrend単体で分析せず、上位足の監視と合わせたフィルタリングなどでサインを絞ることが肝要となる。上位足でのトレンド方向のみにエントリーする、上位足のトレンド終了までポジション保有する、など。

まとめ

SuperTrendインジケーターは、そのシンプルさと視覚的な明瞭さから多くのトレーダーに愛用されている。トレンドフォロー型の戦略を採用する場合、このインジケーターはエントリーとエグジットのタイミングを見つけるための強力なツールとなりえる。ただし、市場の状況によってはダマシも発生するため、他のテクニカル指標と併用することが推奨される。

SuperTrendのプログラム

//+------------------------------------------------------------------+
//|                                                  Super Trend.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_chart_window
#property indicator_color1 Yellow
#property indicator_color2 Red
#property indicator_width1 2
#property indicator_width2 2
#property indicator_buffers 2
double TrendUp[], TrendDown[]; // 上向きトレンドと下向きトレンドのバッファー
int changeOfTrend; // トレンド転換のフラグ
extern int Nbr_Periods = 10; // ATR の期間
extern double Multiplier = 3.0; // マルチプライヤー

//+------------------------------------------------------------------+
//| カスタムインジケーターの初期化関数                                |
//+------------------------------------------------------------------+
int init() {
    // インジケーターの設定
    SetIndexBuffer(0, TrendUp);
    SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
    SetIndexLabel(0, "上向きトレンド");
    SetIndexBuffer(1, TrendDown);
    SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 2);
    SetIndexLabel(1, "下向きトレンド");

    return 0;
}

//+------------------------------------------------------------------+
//| カスタムインジケーターの終了処理関数                              |
//+------------------------------------------------------------------+
int deinit() {
    return 0;
}

//+------------------------------------------------------------------+
//| カスタムインジケーターの計算関数                                  |
//+------------------------------------------------------------------+
int start() {
    int limit, i, flag, flagh, trend[];
    double up[], dn[], medianPrice, atr;

    int counted_bars = IndicatorCounted();
    if (counted_bars < 0) 
        return (-1);
    if (counted_bars > 0) 
        counted_bars--;
    limit = Bars - counted_bars;
    if (counted_bars == 0) 
        limit -= 1 + 1;

    int xsize = ArraySize(TrendUp);
    ArrayResize(trend, xsize);
    ArrayResize(up, xsize);
    ArrayResize(dn, xsize);
    //---- 計算処理
    for (i = limit; i >= 0; i--) {
        atr = iATR(NULL, 0, Nbr_Periods, i);
        medianPrice = (High[i] + Low[i]) / 2;
        up[i] = medianPrice + (Multiplier * atr);
        dn[i] = medianPrice - (Multiplier * atr);
        trend[i] = 1;

        if (Close[i] > up[i + 1]) {
            trend[i] = 1;
            if (trend[i + 1] == -1) 
                changeOfTrend = 1;
        }
        else if (Close[i] < dn[i + 1]) {
            trend[i] = -1;
            if (trend[i + 1] == 1) 
                changeOfTrend = 1;
        }
        else if (trend[i + 1] == 1) {
            trend[i] = 1;
            changeOfTrend = 0;
        }
        else if (trend[i + 1] == -1) {
            trend[i] = -1;
            changeOfTrend = 0;
        }

        if (trend[i] < 0 && trend[i + 1] > 0) {
            flag = 1;
        }
        else {
            flag = 0;
        }

        if (trend[i] > 0 && trend[i + 1] < 0) {
            flagh = 1;
        }
        else {
            flagh = 0;
        }

        if (trend[i] > 0 && dn[i] < dn[i + 1])
            dn[i] = dn[i + 1];

        if (trend[i] < 0 && up[i] > up[i + 1])
            up[i] = up[i + 1];

        if (flag == 1)
            up[i] = medianPrice + (Multiplier * atr);

        if (flagh == 1)
            dn[i] = medianPrice - (Multiplier * atr);

        //-- インジケーターを描画
        if (trend[i] == 1) {
            TrendUp[i] = dn[i];
            if (changeOfTrend == 1) {
                TrendUp[i + 1] = TrendDown[i + 1];
                changeOfTrend = 0;
            }
        }
        else if (trend[i] == -1) {
            TrendDown[i] = up[i];
            if (changeOfTrend == 1) {
                TrendDown[i + 1] = TrendUp[i + 1];
                changeOfTrend = 0;
            }
        }
    }

    return 0;
}
//+------------------------------------------------------------------+

ソースコードを詳細に解説

ヘッダ情報

#property strict
#property indicator_chart_window
#property indicator_color1 Yellow
#property indicator_color2 Red
#property indicator_width1 2
#property indicator_width2 2
#property indicator_buffers 2
  • #property strict: コードの厳密なチェックを有効にする。
  • #property indicator_chart_window: インジケーターをチャートウィンドウに表示。
  • #property indicator_color1 Yellow: インジケーターの最初のラインの色を黄色に設定。
  • #property indicator_color2 Red: インジケーターの2番目のラインの色を赤に設定。
  • #property indicator_width1 2: 最初のラインの幅を2に設定。
  • #property indicator_width2 2: 2番目のラインの幅を2に設定。
  • #property indicator_buffers 2: インジケーターが使用するバッファの数を2に設定。

グローバル変数と入力パラメータ

double TrendUp[], TrendDown[]; // 上向きトレンドと下向きトレンドのバッファー
int changeOfTrend; // トレンド転換のフラグ
extern int Nbr_Periods = 10; // ATR の期間
extern double Multiplier = 3.0; // マルチプライヤー
  • TrendUp[]TrendDown[]: 上向きトレンドと下向きトレンドの値を保持するバッファー。
  • changeOfTrend: トレンド転換を示すフラグ。
  • Nbr_Periods: ATRの計算に使用する期間。
  • Multiplier: ATRに掛ける倍率。

初期化関数

int init() {
    // インジケーターの設定
    SetIndexBuffer(0, TrendUp);
    SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
    SetIndexLabel(0, "上向きトレンド");
    SetIndexBuffer(1, TrendDown);
    SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 2);
    SetIndexLabel(1, "下向きトレンド");

    return 0;
}
  • SetIndexBuffer: バッファをインジケーターに関連付けする。
  • SetIndexStyle: インジケーターのスタイルを設定。
  • SetIndexLabel: インジケーターのラベルを設定。

終了処理関数

int deinit() { return 0; }

  • インジケーターの終了時に呼び出される。

計算関数

int start() {
    int limit, i, flag, flagh, trend[];
    double up[], dn[], medianPrice, atr;

    int counted_bars = IndicatorCounted();
    if (counted_bars < 0) 
        return (-1);
    if (counted_bars > 0) 
        counted_bars--;
    limit = Bars - counted_bars;
    if (counted_bars == 0) 
        limit -= 1 + 1;

    int xsize = ArraySize(TrendUp);
    ArrayResize(trend, xsize);
    ArrayResize(up, xsize);
    ArrayResize(dn, xsize);
  • IndicatorCounted: 計算済みのバーの数を返す。
  • ArraySize: 配列のサイズを返す。
  • ArrayResize: 配列のサイズを変更。

メインループ

    for (i = limit; i >= 0; i--) {
        atr = iATR(NULL, 0, Nbr_Periods, i);
        medianPrice = (High[i] + Low[i]) / 2;
        up[i] = medianPrice + (Multiplier * atr);
        dn[i] = medianPrice - (Multiplier * atr);
        trend[i] = 1;

        if (Close[i] > up[i + 1]) {
            trend[i] = 1;
            if (trend[i + 1] == -1) 
                changeOfTrend = 1;
        }
        else if (Close[i] < dn[i + 1]) {
            trend[i] = -1;
            if (trend[i + 1] == 1) 
                changeOfTrend = 1;
        }
        else if (trend[i + 1] == 1) {
            trend[i] = 1;
            changeOfTrend = 0;
        }
        else if (trend[i + 1] == -1) {
            trend[i] = -1;
            changeOfTrend = 0;
        }

        if (trend[i] < 0 && trend[i + 1] > 0) {
            flag = 1;
        }
        else {
            flag = 0;
        }

        if (trend[i] > 0 && trend[i + 1] < 0) {
            flagh = 1;
        }
        else {
            flagh = 0;
        }

        if (trend[i] > 0 && dn[i] < dn[i + 1])
            dn[i] = dn[i + 1];

        if (trend[i] < 0 && up[i] > up[i + 1])
            up[i] = up[i + 1];

        if (flag == 1)
            up[i] = medianPrice + (Multiplier * atr);

        if (flagh == 1)
            dn[i] = medianPrice - (Multiplier * atr);

        //-- インジケーターを描画
        if (trend[i] == 1) {
            TrendUp[i] = dn[i];
            if (changeOfTrend == 1) {
                TrendUp[i + 1] = TrendDown[i + 1];
                changeOfTrend = 0;
            }
        }
        else if (trend[i] == -1) {
            TrendDown[i] = up[i];
            if (changeOfTrend == 1) {
                TrendDown[i + 1] = TrendUp[i + 1];
                changeOfTrend = 0;
            }
        }
    }

    return 0;
}
  • iATR: ATR(Average True Range)を計算する。
  • 各バーについて以下を行う:
    • medianPrice を計算。
    • up および dn の値を計算。
    • 現在の価格が up を超えている場合、トレンドは上向き。逆に、dn を下回っている場合、トレンドは下向き。
    • トレンドが変わった場合、changeOfTrend フラグを設定。
    • トレンドに基づいて TrendUp および TrendDown バッファに値を設定。

MT4インジケーターまとめ

  • URLをコピーしました!
  • URLをコピーしました!

このEAを使って、将来の見通しが立ちました

収入を増やしたい、将来のための資産が欲しい、支払いに縛られない自由な生活がしたい

このEAを使うと将来が見通せます。

22年以上で無敗の安定取引。リスク0%運用も可能なロジック。年利100%越えの上級者向け取引も可能。

マネーマシンとして育て上げることで大きな不労所得を得られます。

BBF-Girl
ドリームEA_BBF 無料ダウンロード
BBF_MQL5-202400601
リアルトレード公開|EA BBF

ポジション監視の時間

集中力は続いてますか?


オートクローズツールを使ってポジション管理を自動化


自動ポジション管理だから万が一でも大丈夫

あなたは空いた時間を自由に、効率的に使えます

自動決済ルールは独自にカスタム可能

ストップ、リミット変更にも対応。

エントリー後のポジション管理をすべて自動化できるトレーディングサポートツール。

トレード中のちょっとした離席など、念のためセットといった使い方も可能。

MT4用自動決済ツール【AutoCloseTool】は無料で入手できます。

オートクローズツール

取引ごとにキャッシュバックが発生します

もらわないだけ損している
取引ごとに毎回発生する現金のキャッシュバック
海外FXのキャッシュバックはメリットしかないサービスです

取引ごとにキャッシュバック
目次