Schaff Trend Cycleのダウンロードと解説|MT4インジケーター

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

Schaff Trend CycleというMT4インジケーターが欲しいです。

どんなインジケーターなのですか?

ホシノ

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

この無料EA不労所得が稼げます
累計テスト120年以上・リアル取引公開2020年~

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

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

〇Schaff Trend Cycleインジケーターのダウンロード

〇Schaff Trend Cycleの使い方や計算方法などについて

目次

Schaff Trend Cycleのダウンロード

Schaff Trend Cycleインジケーターのダウンロードはここをクリック。
ダウンロードするインジケーターファイルは.ex4ファイルとなるため、MT4のインジケーターフォルダへ移動すれば使用が可能となる。

Schaff Trend Cycleのインストール

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

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

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

Schaff Trend Cycleインジケーターとは?

SchaffTrendCycle
Schaff Trend Cycle

Schaff Trend Cycle(STC)は、ダグラス・シューフ(Douglas Schaff)が開発したテクニカル指標で、トレンドの方向性とその変化を検出するために使用される。このインジケーターは、移動平均とストキャスティクスの概念を組み合わせたもので、トレンドの転換点を早期に検出することを目指している。

Schaff Trend Cycleの計算ステップ

  1. 典型価格 (Typical Price, TP) の計算:
    • TP = (高値 + 安値 + 終値) / 3
  2. 移動平均の計算:
    • 短期EMA (MAShort) と長期EMA (MALong) をTPに基づいて計算する。
    • 短期EMAと長期EMAの差 (MACD) を計算する。
      MACD = EMA(TP, MAShort) - EMA(TP, MALong)
  1. ストキャスティクス%K (fast%K) の計算:
    • 直近のCycle期間におけるMACDの最低値 (LLV) と最高値 (HHV) を求める。
    • ストキャスティクス%Kを計算する。
      fast%K = 100 * (MACD - LLV) / (HHV - LLV)
  2. ストキャスティクス%Kの平滑化 (fast%D):
    • fast%Kにスムージング定数(α)を適用して平滑化する。α = 2 / (1 + Cycle / 2) fast%D = α * fast%K + (1 - α) * previous_fast%D
  3. ストキャスティクス%Kの再計算 (slow%K):
    • 直近のCycle期間におけるfast%Dの最低値 (LLV) と最高値 (HHV) を求める。
    • ストキャスティクス%K (slow%K) を再計算する。
      slow%K = 100 * (fast%D - LLV) / (HHV - LLV)
  4. Schaff Trend Cycle (STC) の最終計算:
    • slow%Kを再度スムージングして最終的なSTCを求める。
      STC = α * slow%K + (1 - α) * previous_STC

Schaff Trend Cycleの使い方

Schaff Trend Cycle(STC)は、トレンドフォロー型のテクニカル指標であり、特にトレンドの転換点を見つけるのに効果的だ。以下に、STCをトレードで活用するための具体的な方法について詳しく説明する。

基本的な使用方法

  1. トレンドの検出:
    • 上昇トレンド:STCが20以下のゾーンから上昇し、上向きのクロスを示した場合、上昇トレンドの開始を示唆する。
    • 下降トレンド:STCが80以上のゾーンから下降し、下向きのクロスを示した場合、下降トレンドの開始を示唆する。
  2. エントリーシグナル:
    • 買いシグナル:STCが20以下のレベルから上昇する場合。
    • 売りシグナル:STCが80以上のレベルから下降する場合。
  3. エグジットシグナル:
    • 買いポジション:STCが80以上に達した場合
    • 売りポジション:STCが20以下に達した場合

トレード戦略の具体例

  1. シンプルなクロスオーバーストラテジー:
    • ルール
      • STCが20を下から上にクロスしたら買いポジションをエントリー。
      • STCが80を上から下にクロスしたら売りポジションをエントリー。
    • エグジット
      • 逆のクロスオーバーが発生したとき、または一定の利益目標に達したときにポジションをクローズ。
  2. ダイバージェンスの活用:
    • ルール
      • 価格が新高値(または新安値)を形成しているにもかかわらず、STCが新高値(または新安値)を形成していない場合、価格の転換の可能性を示唆。
      • この場合、STCの方向に合わせてトレードを検討。
    • エグジット
      • ダイバージェンスが解消された場合、または逆方向のシグナルが発生した場合にポジションをクローズ。
  3. 他のインジケーターとの併用:
    • STCを他のトレンドフォローインジケーター(例:移動平均、MACD)と組み合わせることで、シグナルの信頼性を向上。
    • 例えば、移動平均が上昇トレンドを示している状況で、STCが買いシグナルを出した場合はそのシグナルの信頼性が高まる。

具体的なトレード例

  1. 買いポジションのエントリー:
    • 価格がレンジを抜けて上昇し始めたとき、STCが20以下から上昇し始めるのを確認。
    • このタイミングで買いポジションをエントリー。
    • 損切りは直近のスイングローに設定。
    • 利益確定はSTCが80に達したとき、または設定した利益目標に達したとき。
  2. 売りポジションのエントリー:
    • 価格がレンジを抜けて下降し始めたとき、STCが80以上から下降し始めるのを確認。
    • このタイミングで売りポジションをエントリー。
    • 損切りは直近のスイングハイに設定。
    • 利益確定はSTCが20に達したとき、または設定した利益目標に達したとき。

長期トレンドの中で押し目買い、戻り売りのタイミングを計る

表示させているチャートの上位足から長期トレンドの方向を決めておき、長期トレンドの方向にそった押し目買い、戻り売りでエントリーする。
そのタイミングを計るインジケーターとして、Schaff Trend Cycleは有効である。

注意点

  • 偽シグナル:どのテクニカル指標も偽シグナルを出す可能性がある。STCも例外ではないため、他の指標やフィルターと併用することが推奨される。
  • マーケットのコンディション:STCはトレンド市場で効果的ですが、レンジ相場ではパフォーマンス低下の可能性がある。市場の状況に応じて使用することが重要となる。

まとめ

Schaff Trend Cycleは、トレンドフォロー型のトレード戦略において有効なインジケーターだ。早期にトレンドの転換点を捉えることで、トレードのエントリーとエグジットのタイミングを改善できる。効果的に利用するためには、他の指標やフィルターと組み合わせて使用し、リスク管理を徹底することが重要となる。

Schaff Trend Cycleで勝つ|個人的見解

Schaff Trend Cycleで勝つにはどんな使い方が良いでしょう?

Schaff Trend Cycleはストキャスと移動平均線の概念で開発されたインジケーターということで、なんかそのままでも勝てそうな印象ですよね。

そのまま使うだけでなく、上位足のトレンド方向に合わせて買いと売りを決めておくといいですね。

押し目買いや戻り売りのタイミングを計るんですね。確かにそれは有効だと思います。

SchaffTrendCycleチャート画像1時間足
あきらかな下降トレンドの1時間足

こちらはあきらかな下降トレンドの1時間足チャートです。
トレンドが視覚的にわかりやすいように、インジケーターのGMMAを表示しています。

ではエントリータイミングを計るチャートとして、同じ日時の5分足チャートを見てみましょう。

SchaffTrendCycleチャート画像5分足2
SchaffTrendCycle5分足チャート

SchaffTrendCycleが下降に転じた時に売ればいいんですね。
どこで売っても良さそうに見えますが、それは結果が見えているからですね。

SchaffTrendCycleが下降に転じた部分に垂直ラインを入れてみましょう!

SchaffTrendCycleチャート画像5分足
SchaffTrendCycle5分足チャート

綺麗に戻り売りができそうですね!

上位足でトレンドが明確であれば、SchaffTrendCycleでタイミングを計るだけで簡単にトレンドフォローのトレードができそうです。

スキャルピングもやりやすい印象です。

ではトレンドが明確でないチャートの場合を見てみましょうか。

SchaffTrendCycleチャート画像1時間足2
トレンドが明確でない1時間足

GMMAは収束し、角度も方向性が定まらない状況ですね。

5分足チャートを見てみましょう。

SchaffTrendCycle5分足
SchaffTrendCycle5分足の売買タイミング

値幅によっては勝つ場合もありそうですが。
すべてにエントリーした場合には損失が上回りそうですね。

SchaffTrendCycleはトレンドが明確でない時や、値幅が小さい状況では機能しにくいインジケーターなんですね。

この会話の要約

Schaff Trend Cycleはストキャスティクスと移動平均線の概念に基づいており、上位足のトレンド方向に合わせて売買のタイミングを取ると有効。
具体例として、下降トレンドの1時間足チャートに基づき、短期の5分足チャートでエントリータイミングを計る。Schaff Trend Cycleが下降に転じた際に売りを入れることで、戻り売りが可能となった。
トレンドが明確である場合は、このインジケーターを使って簡単にトレンドフォローの取引ができ、スキャルピングにも適していると述べられている。
逆に、トレンドが明確でない場合や値幅が小さい場合では、このインジケーターは機能しにくく、エントリーが損失につながる可能性があるとされている。

Schaff Trend Cycleのソースコード

//+------------------------------------------------------------------+
//|                                             SchaffTrendCycle.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_minimum -10
#property indicator_maximum 110
#property indicator_buffers 2
#property indicator_color1 Blue

//---- 入力パラメータ
extern int MAShort = 23;
extern int MALong = 50;
extern double Cycle = 10;
extern int CountBars = 300;

//---- バッファ
double MA[];
double ST[];
double MCD_Arr[];

//+------------------------------------------------------------------+
//| カスタムインジケーター初期化関数                                |
//+------------------------------------------------------------------+
int init()
  {
   // インジケーターバッファの初期化
   IndicatorBuffers(3);
   SetIndexBuffer(0, MA);
   SetIndexBuffer(1, ST);
   SetIndexBuffer(2, MCD_Arr);
   
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2, Blue);
   IndicatorShortName("Schaff Trend Cycle");

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Schaff Trend Cycle                                               |
//+------------------------------------------------------------------+
int start()
  {
   int shift, counted_bars = IndicatorCounted();
   double MCD, LLV, HHV, MA_Short, MA_Long, prev, smconst;
   int n = 0;
   int s = 1;
   bool check_begin = false, check_begin_MA = false;
   
   // スムージング定数の初期化
   smconst = 2.0 / (1.0 + Cycle / 2.0);
   
   // 計算の開始点を設定
   if (counted_bars > 0)
     shift = Bars - counted_bars - 1;
   else
     shift = Bars - CountBars;
   
   while (shift >= 0)
     {
      // 短期および長期EMAの計算
      MA_Short = iMA(NULL, 0, MAShort, 0, MODE_EMA, PRICE_TYPICAL, shift);
      MA_Long = iMA(NULL, 0, MALong, 0, MODE_EMA, PRICE_TYPICAL, shift);
      MCD = MA_Short - MA_Long;
      
      // MCD値の保存
      MCD_Arr[n] = MCD;
      
      if (n >= Cycle - 1)
        {
         check_begin = true;
         n = 0;
        }
      else
        n++;
      
      if (check_begin)
        {
         // MCDの最低値と最高値を計算
         LLV = MCD_Arr[0];
         HHV = MCD_Arr[0];
         for (int i = 1; i < Cycle; i++)
           {
            if (MCD_Arr[i] < LLV) LLV = MCD_Arr[i];
            if (MCD_Arr[i] > HHV) HHV = MCD_Arr[i];
           }
         
         // MCDのストキャスティクス%Kの計算
         ST[shift] = (MCD - LLV) / (HHV - LLV) * 100.0;
         s++;
         
         if (s >= Cycle / 2)
           {
            check_begin_MA = true;
            s = 1;
           }
        }
      else
        {
         ST[shift] = 0;
        }
      
      if (check_begin_MA)
        {
         // ストキャスティクス%K値のEMAの計算 (MA)
         if (shift < Bars - 1)
           {
            prev = MA[shift + 1];
            MA[shift] = smconst * (ST[shift] - prev) + prev;
           }
         else
           {
            MA[shift] = ST[shift];
           }
        }
      
      shift--;
     }
   
   return(0);
  }
//+------------------------------------------------------------------+

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

プロパティ設定

#property indicator_separate_window
#property indicator_minimum -10
#property indicator_maximum 110
#property indicator_buffers 2
#property indicator_color1 Blue
  • #property indicator_separate_window:インジケーター表示をサブウィンドウに指定。
  • #property indicator_minimum -10:インジケーターのY軸の最小値を-10に設定。
  • #property indicator_maximum 110:インジケーターのY軸の最大値を110に設定。
  • #property indicator_buffers 2:インジケーターが2つのバッファを使用することを指定。
  • #property indicator_color1 Blue:インジケーターのラインの色を青色に設定。

入力パラメータ

extern int MAShort = 23; extern int MALong = 50; extern double Cycle = 10; extern int CountBars = 300;

  • extern int MAShort = 23:短期EMAの期間を23に設定。
  • extern int MALong = 50:長期EMAの期間を50に設定。
  • extern double Cycle = 10:サイクル期間を10に設定。
  • extern int CountBars = 300:計算するバーの数を300に設定。

バッファの定義

double MA[]; double ST[]; double MCD_Arr[];

  • double MA[]:ストキャスティクス%K値のEMAを保存するバッファ。
  • double ST[]:ストキャスティクス%K値を保存するバッファ。
  • double MCD_Arr[]:EMAの差(MCD値)を保存するバッファ。

初期化関数

int init()
  {
   // インジケーターバッファの初期化
   IndicatorBuffers(3);
   SetIndexBuffer(0, MA);
   SetIndexBuffer(1, ST);
   SetIndexBuffer(2, MCD_Arr);
   
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2, DarkOrchid);
   IndicatorShortName("Schaff Trend Cycle");

   return(INIT_SUCCEEDED);
  }
  • IndicatorBuffers(3):インジケーターが3つのバッファを使用。
  • SetIndexBuffer(0, MA):最初のバッファ(MA)を設定。
  • SetIndexBuffer(1, ST):2番目のバッファ(ST)を設定。
  • SetIndexBuffer(2, MCD_Arr):3番目のバッファ(MCD_Arr)を設定。
  • SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2, Blue):1番目のバッファをラインスタイルで描画し、太さを2、色をBlueに設定。
  • IndicatorShortName("Schaff Trend Cycle"):インジケーターの短縮名を設定。

メイン計算関数

int start()
  {
   int shift, counted_bars = IndicatorCounted();
   double MCD, LLV, HHV, MA_Short, MA_Long, prev, smconst;
   int n = 0;
   int s = 1;
   bool check_begin = false, check_begin_MA = false;
   
   // スムージング定数の初期化
   smconst = 2.0 / (1.0 + Cycle / 2.0);
   
   // 計算の開始点を設定
   if (counted_bars > 0)
     shift = Bars - counted_bars - 1;
   else
     shift = Bars - CountBars;
   
   while (shift >= 0)
     {
      // 短期および長期EMAの計算
      MA_Short = iMA(NULL, 0, MAShort, 0, MODE_EMA, PRICE_TYPICAL, shift);
      MA_Long = iMA(NULL, 0, MALong, 0, MODE_EMA, PRICE_TYPICAL, shift);
      MCD = MA_Short - MA_Long;
      
      // MCD値の保存
      MCD_Arr[n] = MCD;
      
      if (n >= Cycle - 1)
        {
         check_begin = true;
         n = 0;
        }
      else
        n++;
      
      if (check_begin)
        {
         // MCDの最低値と最高値を計算
         LLV = MCD_Arr[0];
         HHV = MCD_Arr[0];
         for (int i = 1; i < Cycle; i++)
           {
            if (MCD_Arr[i] < LLV) LLV = MCD_Arr[i];
            if (MCD_Arr[i] > HHV) HHV = MCD_Arr[i];
           }
         
         // MCDのストキャスティクス%Kの計算
         ST[shift] = (MCD - LLV) / (HHV - LLV) * 100.0;
         s++;
         
         if (s >= Cycle / 2)
           {
            check_begin_MA = true;
            s = 1;
           }
        }
      else
        {
         ST[shift] = 0;
        }
      
      if (check_begin_MA)
        {
         // ストキャスティクス%K値のEMAの計算 (MA)
         if (shift < Bars - 1)
           {
            prev = MA[shift + 1];
            MA[shift] = smconst * (ST[shift] - prev) + prev;
           }
         else
           {
            MA[shift] = ST[shift];
           }
        }
      
      shift--;
     }
   
   return(0);
  }

変数の初期化

  • int shift, counted_bars = IndicatorCounted();:計算するバーのシフト位置と、以前計算されたバーの数を取得する。
  • double MCD, LLV, HHV, MA_Short, MA_Long, prev, smconst;:各種計算に使用する変数を定義する。
  • int n = 0; int s = 1;:カウンタ変数を初期化する。
  • bool check_begin = false, check_begin_MA = false;:計算開始のフラグを初期化する。

スムージング定数の初期化

smconst = 2.0 / (1.0 + Cycle / 2.0);

  • サイクルに基づいてスムージング定数を計算する。

計算の開始点を設定

if (counted_bars > 0) shift = Bars - counted_bars - 1; else shift = Bars - CountBars;

  • 以前計算されたバーの数に応じて計算を開始するシフト位置を設定。

メインループ

while (shift >= 0)
  {
   // 短期および長期EMAの計算
   MA_Short = iMA(NULL, 0, MAShort, 0, MODE_EMA, PRICE_TYPICAL, shift);
   MA_Long = iMA(NULL, 0, MALong, 0, MODE_EMA, PRICE_TYPICAL, shift);
   MCD = MA_Short - MA_Long;
   
   // MCD値の保存
   MCD_Arr[n] = MCD;
   
   if (n >= Cycle - 1)
     {
      check_begin = true;
      n = 0;
     }
   else
     n++;
   
   if (check_begin)
     {
      // MCDの最低値と最高値を計算
      LLV = MCD_Arr[0];
      HHV = MCD_Arr[0];
      for (int i = 1; i < Cycle; i++)
        {
         if (MCD_Arr[i] < LLV) LLV = MCD_Arr[i];
         if (MCD_Arr[i] > HHV) HHV = MCD_Arr[i];
        }
      
      // MCDのストキャスティクス%Kの計算
      ST[shift] = (MCD - LLV) / (HHV - LLV) * 100.0;
      s++;
      
      if (s >= Cycle / 2)
        {
         check_begin_MA = true;
         s = 1;
        }
     }
   else
     {
      ST[shift] = 0;
     }
   
   if (check_begin_MA)
     {
      // ストキャスティクス%K値のEMAの計算 (MA)
      if (shift < Bars - 1)
        {
         prev = MA[shift + 1];
         MA[shift] = smconst * (ST[shift] - prev) + prev;
        }
      else
        {
         MA[shift] = ST[shift];
        }
     }
   
   shift--;
  }
  1. 短期および長期EMAの計算
    • MA_ShortMA_LongiMA関数を使って計算し、MCD(短期EMAと長期EMAの差)を求める。
  2. MCD値の保存
    • MCD_Arr[n]にMCDの値を保存し、カウンタnを更新する。
  3. ストキャスティクス%Kの計算
    • MCDの最低値(LLV)と最高値(HHV)を計算し、ストキャスティクス%Kを求めてSTバッファに保存。
  4. ストキャスティクス%K値のEMAの計算 (MA)
    • STバッファの値を使ってEMAを計算し、MAバッファに保存。

関数の終了

return(0);

  • 関数が正常に終了することを示す。

MT4インジケーターまとめ

まとめ

Schaff Trend Cycleは、トレンドの転換点を早期に捉えるために開発されたインジケーターであり、移動平均とストキャスティクスの概念を組み合わせたものだ。特に、トレンドフォロー型の戦略において効果を発揮する。基本的な使用方法は、STCの数値が20以下で買い、80以上で売るといったシンプルなルールだが、他のインジケーターと併用することでシグナルの精度を向上させることが推奨される。レンジ相場ではパフォーマンスが低下することがあるため、トレンドの有無を確認し、リスク管理を徹底することが重要である。

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

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

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

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

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

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

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

ポジション監視の時間

集中力は続いてますか?


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


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

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

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

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

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

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

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

オートクローズツール

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

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

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