GMMA・グッピーのダウンロードと解説|MT4インジケーター

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

Guppy Multiple Moving AverageというMT4のインジケーターが欲しいです。

ホシノ

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

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

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

MT4インジケーターGMMAをダウンロード

GMMAの使い方や計算方法について

Guppyチャート画像
GMMA
目次

GMMAのダウンロード

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

GMMAのインストール

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

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

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

GMMAインジケーターとは?

Guppy Multiple Moving Average(GMMA)は、オーストラリアのトレーダーであるDaryl Guppyによって開発された技術分析ツールだ。このインジケーターは、複数の移動平均線を使用してトレンドの強さや方向性を評価し、トレンドの変化を予測するために設計されている。GMMAは主にトレンドフォロー型のトレーダーに利用される。

GMMAの構成

GMMAは以下の2つの移動平均線クラスターで構成されている。

  1. 短期移動平均線クラスター
    • 短期移動平均線は、価格の短期間の動きを反映する。
    • 一般的に使用される期間は、3日、5日、8日、10日、12日、15日。
    • これらの移動平均線は、トレーダーの短期的な市場の関心を反映している。
  2. 長期移動平均線クラスター
    • 長期移動平均線は、価格の長期間の動きを反映する。
    • 一般的に使用される期間は、30日、35日、40日、45日、50日、60日。
    • これらの移動平均線は、投資家の長期的な市場の関心を反映している。

GMMAの特徴と使い方

GMMAトレンド方向
GMMAはトレンド方向の視認にすぐれる
  1. トレンドの識別
    • 短期クラスターと長期クラスターの両方が平行に動いている場合、それは強いトレンドを示す。
    • 短期クラスターが長期クラスターを上回っている場合、それは上昇トレンドを示す。
    • 短期クラスターが長期クラスターを下回っている場合、それは下降トレンドを示す。
  2. トレンドの強さの評価
    • 短期クラスターと長期クラスターの間の距離が広い場合、トレンドは強いと判断される。
    • 距離が狭い場合、トレンドは弱いか、トレンドが転換する可能性があると判断される。
  3. トレンド転換のシグナル
    • 短期クラスターが長期クラスターを上から下へクロスする場合、それは下降トレンドへの転換シグナルとなる。
    • 短期クラスターが長期クラスターを下から上へクロスする場合、それは上昇トレンドへの転換シグナルとなる。
  4. エントリーとエグジットのタイミング
    • 短期クラスターが長期クラスターを上抜けたときは買いのエントリーシグナル。
    • 短期クラスターが長期クラスターを下抜けたときは売りのエントリーシグナル。
    • 逆にエグジットのタイミングとしても使用される。

GMMAの利点

  • トレンドの可視化:複数の移動平均線を使うことで、トレンドの強さと方向性が明確になる。
  • トレンド転換の早期検出:短期移動平均線が早期に反応するため、トレンドの転換点を早期に検出するのに役立つ。
  • シンプルな視覚的分析:複数の移動平均線を使っているため、チャート上でトレンドの状態を簡単に視覚的に把握できる。

GMMAの制限

  • 遅延指標:移動平均線は過去の価格データに基づいて計算されるため、リアルタイムでの価格変動には遅延がある。
  • レンジ相場でのパフォーマンス低下:トレンドが明確でないレンジ相場では、誤ったシグナルが発生しやすくなる。

まとめ

GMMAは、トレンドの強さや方向性を評価するための強力なツールだ。短期と長期の移動平均線クラスターを使うことで、トレーダーはトレンドの状態を視覚的に確認し、エントリーやエグジットのタイミングを見極めることができる。しかし、移動平均線の遅延特性やレンジ相場でのパフォーマンス低下に注意する必要がある。他のテクニカル指標を併用するなどし、その有効性を高めることができる。

GMMAを使ったトレード

GMMAはトレンドの状況を視覚的に認識しやすくなっている。
トレードではその特性をいかして分析に利用したい。
ここでは、GMMAの特性をいかした思考を相場の状況ごとに分けて紹介する。

上昇トレンドと下降トレンド

GMMA上昇トレンド
上昇トレンドのGMMAインジケーター
GMMA下降トレンド
下降トレンドのGMMAインジケーター

上昇トレンドのGMMAは長期ラインが下、短期ラインが上で推移し、下降トレンドではその逆となる。
その特性で言えば短期ラインが上にある場面で買いポジションを、短期ラインが下にある場面で売りポジションを持てば良いことになるが、そう簡単でないことは言うまでもない。それは、MAクロスでのエントリーにはダマシがつきものだからだ。

ではどのようにしてGMMAをいかすのかと言えば、押し戻り判断への利用を推奨したい。
上記の画像では価格のきれいな押し戻りが確認できる。
短期ラインや、価格が長期を割らずV時(または逆V)にトレンド継続をしているポイントが見つかるはずだ。

トレンドに乗ることを目的とするのであれば、こういった押し戻りの場面でしっかりエントリーをしていきたい。
ラインがクロスする初動でエントリーできれば当然得られる利益も大きいが、前述した通り、クロスでのエントリーではダマシの確立が高まってしまう。
相場格言にもある通り「頭と尻尾はくれてやれ」という意識で、GMMAで確認できるトレンド継続のポイントに絞ったエントリーで流れについていく、そういったトレードはおすすめできる。

また、GMMAで確認できる戻しからのトレンドフォローも、平均足やオシレーター、上位足のトレンド方向など、フィルターを併用することでさらに精度を高めることもできるため、各自検証をしていただきたい。

トレンドが発生してない

GMMAトレンドなし
トレンドがない場面でのGMMAインジケーター

トレンドが発生していない場合のGMMAはクロスを頻発し、長期と短期が近い状況にある。
こういった相場環境でトレンド初動を狙ったトレードを繰り返せば、口座の残高がどうなってしまうのかは想像に容易い。

トレンド発生時の解説でもお伝えした通り、MAクロスで初動を狙うことはおすすめできない。
MAを利用してトレードする場合、初動ではなくトレンドの継続に乗れるタイミングを計ることに利用したい。

逆に、GMMAが収束しているタイミングでレンジトレードを試みるという発想の切替は悪い考えではない。
そういった場合でも、オシレーターなどを併用してフィルタリングすると効果的だ。

また、監視チャートで収束していても、上位足でトレンドが発生している場合がある。
そういった場面では、上位足のトレンド方向に賭けて押し戻りでトレンドに乗っている方向でのエントリーも検討できる。

GMMAのプログラム

//+------------------------------------------------------------------+
//|                                                        GMMA.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_buffers 12

// デフォルトカラー
#property indicator_color1 Blue
#property indicator_color2 DodgerBlue
#property indicator_color3 MediumTurquoise
#property indicator_color4 DeepSkyBlue
#property indicator_color5 Aquamarine
#property indicator_color6 PaleTurquoise
#property indicator_color7 FireBrick
#property indicator_color8 MediumVioletRed
#property indicator_color9 Crimson
#property indicator_color10 Red
#property indicator_color11 OrangeRed
#property indicator_color12 PaleVioletRed

// 定数定義
#define SHORT_MA_COUNT 6
#define LONG_MA_COUNT 6

// インジケーターバッファ
double short_ma_buffers_0[], short_ma_buffers_1[], short_ma_buffers_2[];
double short_ma_buffers_3[], short_ma_buffers_4[], short_ma_buffers_5[];
double long_ma_buffers_0[], long_ma_buffers_1[], long_ma_buffers_2[];
double long_ma_buffers_3[], long_ma_buffers_4[], long_ma_buffers_5[];

//+------------------------------------------------------------------+
//| カスタムインジケーターの初期化関数                                |
//+------------------------------------------------------------------+
int OnInit()
  {
   // バッファを設定
   SetIndexBuffer(0, short_ma_buffers_0);
   SetIndexBuffer(1, short_ma_buffers_1);
   SetIndexBuffer(2, short_ma_buffers_2);
   SetIndexBuffer(3, short_ma_buffers_3);
   SetIndexBuffer(4, short_ma_buffers_4);
   SetIndexBuffer(5, short_ma_buffers_5);
   SetIndexBuffer(6, long_ma_buffers_0);
   SetIndexBuffer(7, long_ma_buffers_1);
   SetIndexBuffer(8, long_ma_buffers_2);
   SetIndexBuffer(9, long_ma_buffers_3);
   SetIndexBuffer(10, long_ma_buffers_4);
   SetIndexBuffer(11, long_ma_buffers_5);

   // スタイルと色を設定
   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1, Blue);
   SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1, DodgerBlue);
   SetIndexStyle(2, DRAW_LINE, STYLE_SOLID, 1, MediumTurquoise);
   SetIndexStyle(3, DRAW_LINE, STYLE_SOLID, 1, DeepSkyBlue);
   SetIndexStyle(4, DRAW_LINE, STYLE_SOLID, 1, Aquamarine);
   SetIndexStyle(5, DRAW_LINE, STYLE_SOLID, 1, PaleTurquoise);
   SetIndexStyle(6, DRAW_LINE, STYLE_SOLID, 1, FireBrick);
   SetIndexStyle(7, DRAW_LINE, STYLE_SOLID, 1, MediumVioletRed);
   SetIndexStyle(8, DRAW_LINE, STYLE_SOLID, 1, Crimson);
   SetIndexStyle(9, DRAW_LINE, STYLE_SOLID, 1, Red);
   SetIndexStyle(10, DRAW_LINE, STYLE_SOLID, 1, OrangeRed);
   SetIndexStyle(11, DRAW_LINE, STYLE_SOLID, 1, PaleVioletRed);

   // インジケーターの名前を設定
   IndicatorShortName("Guppy Multiple Moving Average with Default Colors");

   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 short_ma_periods[SHORT_MA_COUNT] = {3, 5, 8, 10, 12, 15};
   int long_ma_periods[LONG_MA_COUNT] = {30, 35, 40, 45, 50, 60};

   // 短期移動平均の計算
   for(int i = 0; i < SHORT_MA_COUNT; i++)
     {
      for(int j = prev_calculated; j < rates_total; j++)
        {
         double ma_value = iMA(NULL, 0, short_ma_periods[i], 0, MODE_EMA, PRICE_CLOSE, j);
         switch(i)
           {
            case 0: short_ma_buffers_0[j] = ma_value; break;
            case 1: short_ma_buffers_1[j] = ma_value; break;
            case 2: short_ma_buffers_2[j] = ma_value; break;
            case 3: short_ma_buffers_3[j] = ma_value; break;
            case 4: short_ma_buffers_4[j] = ma_value; break;
            case 5: short_ma_buffers_5[j] = ma_value; break;
           }
        }
     }

   // 長期移動平均の計算
   for(int i = 0; i < LONG_MA_COUNT; i++)
     {
      for(int j = prev_calculated; j < rates_total; j++)
        {
         double ma_value = iMA(NULL, 0, long_ma_periods[i], 0, MODE_EMA, PRICE_CLOSE, j);
         switch(i)
           {
            case 0: long_ma_buffers_0[j] = ma_value; break;
            case 1: long_ma_buffers_1[j] = ma_value; break;
            case 2: long_ma_buffers_2[j] = ma_value; break;
            case 3: long_ma_buffers_3[j] = ma_value; break;
            case 4: long_ma_buffers_4[j] = ma_value; break;
            case 5: long_ma_buffers_5[j] = ma_value; break;
           }
        }
     }

   return(rates_total);
  }

//+------------------------------------------------------------------+

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

1.プロパティの設定

#property strict
#property indicator_chart_window
#property indicator_buffers 12

#property indicator_color1 Blue
#property indicator_color2 DodgerBlue
#property indicator_color3 MediumTurquoise
#property indicator_color4 DeepSkyBlue
#property indicator_color5 Aquamarine
#property indicator_color6 PaleTurquoise
#property indicator_color7 FireBrick
#property indicator_color8 MediumVioletRed
#property indicator_color9 Crimson
#property indicator_color10 Red
#property indicator_color11 OrangeRed
#property indicator_color12 PaleVioletRed
  • #property strict:厳密なコンパイルモードを指定。これにより、コードのエラーや警告が厳しくチェックされる。
  • #property indicator_chart_window:インジケーターがチャートウィンドウに表示されることを指定。
  • #property indicator_buffers 12:インジケーターが12個のバッファを使用することを指定。
  • #property indicator_color1から#property indicator_color12:各バッファのデフォルトカラーを設定。

2. 定数とバッファの宣言

#define SHORT_MA_COUNT 6
#define LONG_MA_COUNT 6

double short_ma_buffers_0[], short_ma_buffers_1[], short_ma_buffers_2[];
double short_ma_buffers_3[], short_ma_buffers_4[], short_ma_buffers_5[];
double long_ma_buffers_0[], long_ma_buffers_1[], long_ma_buffers_2[];
double long_ma_buffers_3[], long_ma_buffers_4[], long_ma_buffers_5[];
  • SHORT_MA_COUNTLONG_MA_COUNT:短期と長期の移動平均の数を定義する。
  • 各バッファは、短期と長期の移動平均を保存するために使用される。

3. OnInit関数

int OnInit()
  {
   SetIndexBuffer(0, short_ma_buffers_0);
   SetIndexBuffer(1, short_ma_buffers_1);
   SetIndexBuffer(2, short_ma_buffers_2);
   SetIndexBuffer(3, short_ma_buffers_3);
   SetIndexBuffer(4, short_ma_buffers_4);
   SetIndexBuffer(5, short_ma_buffers_5);
   SetIndexBuffer(6, long_ma_buffers_0);
   SetIndexBuffer(7, long_ma_buffers_1);
   SetIndexBuffer(8, long_ma_buffers_2);
   SetIndexBuffer(9, long_ma_buffers_3);
   SetIndexBuffer(10, long_ma_buffers_4);
   SetIndexBuffer(11, long_ma_buffers_5);

   SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 1, Blue);
   SetIndexStyle(1, DRAW_LINE, STYLE_SOLID, 1, DodgerBlue);
   SetIndexStyle(2, DRAW_LINE, STYLE_SOLID, 1, MediumTurquoise);
   SetIndexStyle(3, DRAW_LINE, STYLE_SOLID, 1, DeepSkyBlue);
   SetIndexStyle(4, DRAW_LINE, STYLE_SOLID, 1, Aquamarine);
   SetIndexStyle(5, DRAW_LINE, STYLE_SOLID, 1, PaleTurquoise);
   SetIndexStyle(6, DRAW_LINE, STYLE_SOLID, 1, FireBrick);
   SetIndexStyle(7, DRAW_LINE, STYLE_SOLID, 1, MediumVioletRed);
   SetIndexStyle(8, DRAW_LINE, STYLE_SOLID, 1, Crimson);
   SetIndexStyle(9, DRAW_LINE, STYLE_SOLID, 1, Red);
   SetIndexStyle(10, DRAW_LINE, STYLE_SOLID, 1, OrangeRed);
   SetIndexStyle(11, DRAW_LINE, STYLE_SOLID, 1, PaleVioletRed);

   IndicatorShortName("Guppy Multiple Moving Average with Default Colors");

   return(INIT_SUCCEEDED);
  }
  • SetIndexBuffer関数は、各バッファをインジケーターのバッファとして設定します。
  • SetIndexStyle関数は、各バッファのスタイル(線の種類、太さ、色)を設定します。
  • IndicatorShortName関数は、インジケーターの名前を設定します。

4. OnCalculate関数

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 short_ma_periods[SHORT_MA_COUNT] = {3, 5, 8, 10, 12, 15};
   int long_ma_periods[LONG_MA_COUNT] = {30, 35, 40, 45, 50, 60};

   for(int i = 0; i < SHORT_MA_COUNT; i++)
     {
      for(int j = prev_calculated; j < rates_total; j++)
        {
         double ma_value = iMA(NULL, 0, short_ma_periods[i], 0, MODE_EMA, PRICE_CLOSE, j);
         switch(i)
           {
            case 0: short_ma_buffers_0[j] = ma_value; break;
            case 1: short_ma_buffers_1[j] = ma_value; break;
            case 2: short_ma_buffers_2[j] = ma_value; break;
            case 3: short_ma_buffers_3[j] = ma_value; break;
            case 4: short_ma_buffers_4[j] = ma_value; break;
            case 5: short_ma_buffers_5[j] = ma_value; break;
           }
        }
     }

   for(int i = 0; i < LONG_MA_COUNT; i++)
     {
      for(int j = prev_calculated; j < rates_total; j++)
        {
         double ma_value = iMA(NULL, 0, long_ma_periods[i], 0, MODE_EMA, PRICE_CLOSE, j);
         switch(i)
           {
            case 0: long_ma_buffers_0[j] = ma_value; break;
            case 1: long_ma_buffers_1[j] = ma_value; break;
            case 2: long_ma_buffers_2[j] = ma_value; break;
            case 3: long_ma_buffers_3[j] = ma_value; break;
            case 4: long_ma_buffers_4[j] = ma_value; break;
            case 5: long_ma_buffers_5[j] = ma_value; break;
           }
        }
     }

   return(rates_total);
  }
  • OnCalculate関数は、インジケーターのメイン計算ルーチン。
  • rates_totalは、利用可能な全バーの数を表す。
  • prev_calculatedは、前回の計算で処理されたバーの数を表す。
  • short_ma_periodslong_ma_periodsは、短期および長期の移動平均の期間を格納する配列。
  • forループを使用して、各移動平均を計算し、対応するバッファに値を格納する。
  • iMA関数は、移動平均を計算するMQL4の組み込み関数。
  • 計算された移動平均値は、switch文を使用して適切なバッファに割り当てられる。

MT4インジケーターまとめ

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

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

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

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

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

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

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

ポジション監視の時間

集中力は続いてますか?


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


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

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

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

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

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

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

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

オートクローズツール

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

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

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