MACDによる取引システムの設計方法を学ぶ

Mohamed Abdelmaaboud | 19 7月, 2022

はじめに

今回は、最も人気があり、よく使われている取引ツールの1つについて研究してみましょう。MACD(移動平均収束発散)指標についてお話します。それを詳しく研究し、取引に利用することでどのような利益を得られるかを見ていきます。これまでの記事で、市場のトレンドや方向性を見極めることは、その方向性に沿って適切な売買判断をおこなって適切なポジションを取るために非常に重要であることを述べました。

よって、まずは相場の方向性を見極めます。方向性によって2種類の動きがあります。

方向性とは、価格が上下に動く方向を明確に見出すことができることを意味します。つまり、このような動きによって、上昇トレンドと下降トレンドという2種類のトレンドを識別することができるのです。


上昇トレンド


下降トレンド

方向性のない動きとは、価格の動きの方向性を明確に見出すことができないこと、すなわち価格が上に動くか下に動くかを判断できないことを意味します。このような動きは、横ばいと呼ぶことができます。つまり、一般的には、上昇トレンドと下降トレンド以外の動きは、横ばいと呼べます。横ばいのフォーメーションと言えるものはたくさんあります。

プライスアクションを確認し、その方向性を判断する方法がわかったところで、もう1つ述べておかなければならないことがあります。それはプライスアクションについてより高度なものです。価格変動速度を参照するために勢いを識別するという別の次元が必要だということです。勢いを判断し、方向性が強いかどうかを判断するのに役立つツールはたくさんあります。

そのようなツールの1つがMACD(移動平均収束発散)指標で、テクニカルトレーダーの間で最も人気があり、一般的に使用されている指標の1つです。この記事では、この指標をより詳しく研究し、この指標に基づいた取引システムを設計することを学びます。そのために、次のようなトピックで進めていきます。

MACD指標について、何を測定しどのように計算するのか、そして例を見ながら、より詳しく学びます(「MACDの定義」)。そして、MACDを使った簡単な戦略を学び、取引に役立てます(.「MACD戦略」)。その後、前述のMACD戦略の取引システムを設計する際に役立つ設計図の作成方法を学びます(「MACDの設計図」)。そして、これらの言及された戦略に対して、この取引システムをどのように設計するかを学びます。

今回もMetaTrader 5の取引プラットフォームと、MetaTrader 5に統合されているMetaQuotes言語エディタを使って、この取引システムを設計していきます。 MetaTrader 5をお持ちでない場合は、次のリンクからダウンロードできます。https://www.metatrader5.com/ja/download

ダウンロードしてインストールすると、次のMetaTrader 5のウィンドウが表示されます。

MT5取引ターミナル

その後、MetaTrader5を開いた状態でF4を押すか、以下のウィンドウのように[ツール]メニュー>[MetaQuotes言語エディタ]でMetaQuotes言語エディタを開くことができます。

MQL5を開く

または、IDEボタンを押します。

MT5ターミナルのIDEボタン

すると、以下のようなMetaQuotes言語エディタのウィンドウが表示されます。

MetaEditor - 新規ファイルウィンドウ

このウィンドウでは、エディタを使ってできることのうち、さまざまなオプションが提供されます。

1.新規ファイルを開いて、プログラムの条件を自動実行できるEA(エキスパートアドバイザー)を作成する

2.新規ファイルを開いて、チャートを明確に読み、チャートに表示されないものを見るのに役立つカスタム指標を作成する

3.新規ファイルを開いて、ワンタイム命令を実行できるスクリプトを作成する

今回は、プログラムの指示を自動的に実行してくれるEAを作成するために、最初の選択肢を選択することにします。

それに加えて、学んだことはすべて、使う前にテストすることをお勧めします。知識を深めるためには、学んだことを自分で実践する必要があります。これにより、取引に役立つ新しいアイデアや洞察を見つけることができます。

免責条項:情報は「現状有姿」で提供され、情報提供のみを目的としており、取引目的やアドバイスを目的としたものではありません。また、いかなる成果を保証するものでもありません。 読者がこれらの資料を自分の取引口座で使用する場合、自己責任で行ってください。

では、トピックに沿って、取引についての知識を深め、その新たな知識をもとに取引システムを作っていきましょう。


MACDの定義

この興味深いトピックのこの部分では、取引で使用できる最も人気のある、便利なツールの1つについてより詳細に学びます。MACDとして知られている移動平均変換発散です(通常M-A-C-Dまたはマックディーとして発音されますが、これは重要ではありません)。大切なのは、この指標がどのように使用されるのか、また何を測り、どのように算出するのかを知ることです。このような知識は、結果を向上させ、取引に有益な新しいアイデアに目を向けることができるため、取引に役立つことがあります。

MACDについて

MACDはMoving Average Conversion Divergenceの略で、Gerald Appelが作成/開発したオシレーター系指標です。計算には2本の指数移動平均が使用されます。移動平均とその種類についてもっと知りたい方は、以前の記事さまざまな移動平均システムを設計する方法を学ぶをご覧ください。MACDはトレンドに追従し、それを確認する指標でもあるため、トレンドフォロ系の指標でもあります。

2つの線が含まれます。

MACD指標にはもう1つ、MACDヒストグラムという構成要素があります。これは、MACDラインとシグナルラインの差の結果です。2つのMACDとシグナルラインの違いや、幅の広さと狭さを示しています。しかし、今回は、この2本のラインの使い方と読み方によって使える戦略に焦点を当てます。

つまり、MACD指標の計算は、以下の手順で構成されています。

  1. 12期間の指数移動平均(12 EMA)を取得する
  2. 26期間の指数移動平均(26 EMA)を取得する
  3. 12EMAと26EMAの差=MACDラインを取得する
  4. MACDラインの9期間移動平均=シグナルラインを取得する

ここで、EMA = (終値*(2/(n+1)))+(前回MA*(1-(2/(n+1))))です。最初に計算される移動平均は単純で、その後に指数移動平均が計算されていることに注意してください。

この計算を応用した例を見てみましょう。

12EMAを計算するには12期間、26EMAを計算するには26期間でそれらの差がMACDラインとなり、その後シグナルラインを計算するにはMACDラインが9期間以上必要となるので、最小期間34のデータが必要です。必要な期間について、次のようなデータがあるとします。

期間 終値
1 100
2 130
3 140
4 130
5 120
6 140
7 160
8 170
9 155
10 140
11 160
12 180
13 190
14 200
15 210
16 200
17 190
18 185
19 195
20 200
21 210
22 220
23 215
24 225
25 230
26 235
27 230
28 225
29 220
30 215
31 225
32 235
33 240
34 245

MACD指標の計算ですが、まず12EMAを計算すると以下のようになります。

12 EMA

次に、26 EMAを計算します。

26 EMA

12EMAと26EMAの差を計算してMACDラインを算出すると、以下のような感じになります。

MACDライン

そして、MACDラインを計算します。

シグナルライン

この例ではMACDラインを計算しました。Meta Trader 5にそのまま搭載されている指標なので、手動で計算する必要がないことに注意してください。指標の細部まで理解することで、より良く概念を学ぶことができます。先ほど述べたように2本のライン(MACDラインとシグナルライン)があるため、MetaTrader5で挿入する際に表示が異なり、以下のように表示されることがわかります。

しかし、これは2本線と同じ指標であり、見た目以外の違いはありません。それでは、指標の挿入方法とチャート上での表示方法を確認しましょう。

MetaTrader 5ターミナルで、[挿入]メニューをクリックし、[インディケータ]、[オシレーター]、[MACD]の順に選択します。

MACDの挿入

MACDパラメータのウィンドウが表示されます。

MACD挿入ウィンドウ

このウィンドウには、以下のMACDパラメータがあります。

1~3:MACDの計算で使用する期間を決定

4:MACDの計算で使用する価格の種類を決定

5:MACD線の色とバーの太さを設定

6:シグナルラインの色、線種、太さを設定

MACDのパラメータを決定し、[ok]を押すと、チャート上に以下のように表示されます。

MACDの接続

ここまでで、MACDとは何か、どのように計算するのか、チャート上にどのように表示されるのかを学びました。


MACD戦略

このセクションでは、MACD指標に基づいた取引で使用できる2つの簡単な戦略を学びます。MACDはオシレーター系指標であり、前に述べたようにゼロ付近で振動するため、この戦略は交差に依存することになります。MACD自体は2本の線で構成されており、この2つの概念に従って戦略を立てることになります。

この戦略では、市場の設定(買いの設定または売りの設定)を識別する必要がありますつまり、相場の方向性(強気なのか弱気なのか)を見極める必要がありますが、これはMACDによっておこなうことができます。MACDメインラインがゼロレベルを上方に突破した場合は買い(強気)設定となり、逆にMACDメインラインがゼロレベルを下方に突破した場合は売り(弱気)設定となります。

そこで、

MACDメインライン > 0 = 強気設定

MACDメインライン < 0 = 弱気設定

この戦略では、MACDのメインラインとシグナルラインの交差を基に、生成されたシグナルが買いシグナルか売りシグナルかを識別する必要があります。MACDのメインラインがシグナルの上に出れば買いシグナル、シグナルの下に出れば売りシグナルとなります。

そこで、

MACDメインライン > MACDシグナルライン = 買いシグナル

MACDメインライン < MACDシグナルライン = 売りシグナル

これらはMACD指標に基づいて使用できる2つの簡単な戦略です。一般に、MACDを利用した戦略は数多くあって非常に有用ですが、ここではMACDの概念を理解するために使用できる簡単な戦略のみを参照します。次に、これらの簡単な戦略を使って、どのように取引システムを設計するかについて、以下のトピックを通じて学びます。


MACDの設計図

このセクションでは、私たちが設計したシステムまたはプログラムを通じてコンピュータに正確に何をすべきかを知らせるために、前述の2つの戦略の取引システムを設計するのに役立つ設計図を作成する必要があります。この設計図は、この取引システムを作成するために必要なことを段階的に説明するためのものです。

この戦略では、MACDメインラインの値を1ティックごとにチェックし、ゼロレベルと比較した値に基づいて設定を出力するようにコンピュータに指示する必要があります。MACDメインラインがゼロより上にある場合、チャート上に「Bullish Setup As MACD MainLine is... 」コメントと現在のMACDメインラインの値が表示される必要があります。あるいは、MACDメインラインがゼロ以下であれば、「Bearish Setup As MACD MainLine is...」と現在のMACDメインラインの値がチャート上にコメント表示される必要があります。

次の図は、この戦略の設計図です。

設定戦略設計図

この戦略では、MACDのライン(MACDのメインラインとシグナルライン)が交差したときに、適切なシグナルを出すようにコンピュータに指示する必要があります。プログラムに、1ティックごとにMACDのラインをチェックさせ、MACDのメインラインがシグナルラインを上抜けたら、チャート上に「Buying Signal As MACD MainLine is Above MACD SignalLine」とコメントし、その後、チャート上に「MACD Main Line Value is...」と現在のMACDメインライン値、そして「MACD Signal Line Value is...」と現在のMACDシグナルライン値とコメントした新たな行を表示させることにしました。

次の図は、この戦略の設計図です。

シグナル戦略設計図

MACD取引システム

このセクションでは、プログラミング言語MQL5を使用して、これらの戦略をコード化して取引システムを作成する方法を学びます。出来上がったプログラムは、MetaTrader 5の取引プラットフォームで実行され、あらかじめ決められた条件に従って、あらかじめ決められた出力が得られます。ただし、この2つの簡単な戦略を作る前に、MACDの値をチャート上にコメントとして表示できるプログラムを作る方法を学びます。

コメントとMACDメインラインの値を表示するプログラムのコードは以下の通りです。

//+------------------------------------------------------------------+
//|                                  Simple MACD MainLine System.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   //cretaing an array for prices
   double MACDMainLine[];
   
   //Defining MACD and its parameters
   int MACDDef = iMACD(_Symbol,_Period,12,26,9,PRICE_CLOSE);
   
   //Sorting price array from current data
   ArraySetAsSeries(MACDMainLine,true);
   
   //Storing results after defining MA, line, current data
   CopyBuffer(MACDDef,0,0,3,MACDMainLine);
   
   //Get values of current data
   float MACDMainLineVal = (MACDMainLine[0]);
   
   //Commenting on the chart the value of MACD
   Comment("MACD Value is ",MACDMainLineVal);
  }
//+------------------------------------------------------------------+

そして、このEAは、私たちが必要とするもの(チャート上でのMACDメインラインの値の表示)を生成します。こちらです。

シンプルなMACDメインラインシグナル

さて、MACDメインラインの値を自動生成するためには、ファイルをチャートに接続する必要があります。ナビゲータでプログラムを見つけます。MetaTrader 5を開いた状態でctrl+Nで開くことができます。

MACDナビ1


このファイルを実行するにはチャート上にドラッグ&ドロップするか、ファイルをダブルクリックします。次のようなウィンドウが表示されます。

シンプルなMACDのメインラインシステムウィンドウ

[アルゴリズム取引を許可]オプションを有効にして[OK]をクリックすると、EAがチャートに追加され、以下のようにMACDメインラインが自動的に生成されます。

シンプルなMACDのメインラインシステムの接続

そこで、MACDのメインラインだけでなく、シグナルラインも生成できるようなコードを作成する必要があります。以下は、チャートにMACDのメインラインとシグナルラインのコメントを新たに表示することができるプログラムを作成するためのコードです。

//+------------------------------------------------------------------+
//|                                      Simple MACD TwoLines System |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   //cretaing an array for prices for MACD main line, MACD signal line
   double MACDMainLine[];
   double MACDSignalLine[];
   
   //Defining MACD and its parameters
   int MACDDef = iMACD(_Symbol,_Period,12,26,9,PRICE_CLOSE);
   
   //Sorting price array from current data for MACD main line, MACD signal line
   ArraySetAsSeries(MACDMainLine,true);
   ArraySetAsSeries(MACDSignalLine,true);
   
   //Storing results after defining MA, line, current data for MACD main line, MACD signal line
   CopyBuffer(MACDDef,0,0,3,MACDMainLine);
   CopyBuffer(MACDDef,1,0,3,MACDSignalLine);
   
   //Get values of current data for MACD main line, MACD signal line
   float MACDMainLineVal = (MACDMainLine[0]);
   float MACDSignalLineVal = (MACDSignalLine[0]);
   
   
   //Commenting on the chart the values of MACD main line and MACD signal line
   Comment("MACD Main Line Value is ",MACDMainLineVal,"\n" 
   "MACD Signal Line Value is ",MACDSignalLineVal);
  }
//+------------------------------------------------------------------+

このコードを書いてテストすると、次の画像に示すように、MACDのメインラインとシグナルラインが生成されます。

シンプルなMACDの2線線のシステムシグナル

さて、このEAのファイルをチャートに貼り付けると、MACDラインとシグナルラインの値が2行のコメントとしてチャートに自動生成されるようになります。ナビゲータでプログラムを選択します。

MACDナビ2

ファイルをダブルクリックするか、チャートにドラッグ&ドロップします。その後、以下のEAウィンドウが表示されます。

シンプルなMACDの2本線のシステムウィンドウ

[OK]を押すと、EAが添付され、チャート上に値が自動的に生成されます。次の図で示します。

シンプルなMACDの2本線システムの接続

次に、MACDメインラインとゼロレベルとの交差と、MACDメインラインとMACDシグナルラインとの交差の2つの戦略をコーディングする必要があります。この目的のために使用できるツールは、指標自体やプライスアクションのようにたくさんあるため、ここではテイクプロフィットなしで生成されたシグナルにのみ言及します。ここでは、生成されたシグナルに着目して説明します。では、これらの戦略のコードを作成していきましょう。

MACDメインライン > 0 = 強気設定

MACDメインライン < 0 = 弱気設定

以下は、MACDメインラインとゼロレベルとの交差、およびMACDメインラインの値に応じて市場の設定をおこなうコメントを生成するプログラムのコードです。

//+------------------------------------------------------------------+
//|                                         MACD Setup Dectector.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   //cretaing an array for prices for MACD main line
   double MACDMainLine[];
   
   //Defining MACD and its parameters
   int MACDDef = iMACD(_Symbol,_Period,12,26,9,PRICE_CLOSE);
   
   //Sorting price array from current data
   ArraySetAsSeries(MACDMainLine,true);
   
   //Storing results after defining MA, line, current data
   CopyBuffer(MACDDef,0,0,3,MACDMainLine);
   
   //Get values of current data
   float MACDMainLineVal = (MACDMainLine[0]);
   
   //Commenting on the chart the value of MACD
   if (MACDMainLineVal>0)
   Comment("Bullish Setup As MACD MainLine is ",MACDMainLineVal);
   
   if (MACDMainLineVal<0)
   Comment("Bearish Setup As MACD MainLine is ",MACDMainLineVal);
  }
//+------------------------------------------------------------------+

このコードを書いてテストした結果、次の図は、MACDメインラインとゼロレベルとの交差に応じて、現在の設定を生成する方法を示しています。

強気の設定シグナル

MACD設定の検出:強気シグナル

弱気の設定シグナル

MACD設定の検出:弱気シグナル

その後、このEAファイルをチャートにドラッグ&ドロップするか、ナビゲータウィンドウからダブルクリックすると、シグナルが自動生成されます。

MACDナビ3

以下のEAウィンドウが表示されます。

MACD設定の検出ウィンドウ

[OK]を押すと、EAがチャートに接続され、チャート上にコメントとして自動的にシグナルが生成されます。

強気の設定シグナルとMACDのメインライン値

MAC設定の検出:接続

弱気の設定シグナルとMACDのメインライン値

MACD設定の検出:接続(弱気)

MACDメインライン > MACDシグナルライン = 買いシグナル

MACDメインライン < MACDシグナルライン = 売りシグナル

以下のコードでは、MACDのメインラインとシグナルラインの交差に応じて、MACDのメインラインとシグナルラインの値を持つ新しい2本の線で、買いまたは売りのシグナルをチャート上にコメントとして生成するプログラムを作成します。

//+------------------------------------------------------------------+
//|                          MACD Lines Crossover Signals System.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   //cretaing an array for prices for MACD main line, MACD signal line
   double MACDMainLine[];
   double MACDSignalLine[];
   
   //Defining MACD and its parameters
   int MACDDef = iMACD(_Symbol,_Period,12,26,9,PRICE_CLOSE);
   
   //Sorting price array from current data for MACD main line, MACD signal line
   ArraySetAsSeries(MACDMainLine,true);
   ArraySetAsSeries(MACDSignalLine,true);
   
   //Storing results after defining MA, line, current data for MACD main line, MACD signal line
   CopyBuffer(MACDDef,0,0,3,MACDMainLine);
   CopyBuffer(MACDDef,1,0,3,MACDSignalLine);
   
   //Get values of current data for MACD main line, MACD signal line
   float MACDMainLineVal = (MACDMainLine[0]);
   float MACDSignalLineVal = (MACDSignalLine[0]);
   
   
   //Commenting on the chart the value of MACD
   if (MACDMainLineVal>MACDSignalLineVal)
   Comment("Buying Signal As MACD MainLine is Above MACD SignalLine","\n"
   "MACD Main Line Value is ",MACDMainLineVal,"\n" 
   "MACD Signal Line Value is ",MACDSignalLineVal);
   
   if (MACDMainLineVal<MACDSignalLineVal)
   Comment("Shorting Signal As MACD MainLine is Below MACD SignalLine","\n"
   "MACD Main Line Value is ",MACDMainLineVal,"\n" 
   "MACD Signal Line Value is ",MACDSignalLineVal);
  }
//+------------------------------------------------------------------+

このコードを書いてテストすると、シグナルとライン値を生成するプログラムを得ることができます。

MACDメインラインがシグナルラインを上回っていることを言及し、MACDメインラインとシグナルラインの値を表示する買いシグナル

MACDラインの交差シグナル:買いシグナル

MACDメインラインがシグナルラインを下回っていることを言及し、新しいラインとその値を表示する売りシグナル

MACDライン交差シグナル:売りシグナル

コードを書いたら、EAファイルをダブルクリックするか、ナビゲータウィンドウからチャートにドラッグ&ドロップして接続すると、シグナルが自動生成されるようになります。

MACDナビ4


その後、EAがチャートに接続され、チャート上にシグナルが表示されます。

買いシグナルと戦略に基づいたその理由、そしてMACDラインの値をコメントとした新ラインが表示されます。

MACDライン交差シグナルの接続

売りシグナルと戦略に基づいたその理由、そしてMACDラインの値をコメントとした新しい2つのラインが表示されます。

MACDライン交差シグナル接続( 売り)


結論

移動平均収束発散(MACD)指標は、取引に有益な最も便利なツールの1つで、取引でより良い結果を得るために役立つ多くの有用な戦略を備えています。この素晴らしいツールを自動化する方法を学び、取引をより簡単、効果的、有益にするのに役立つ取引システムを作ることは非常に重要です。この記事では、いくつかの概念を共有してみました。

MACDという指標自体について、その意味や計算方法を実例で詳しく考察し、この指標に対する理解を深め、交差の概念からMACDで使える簡単な戦略を知り、その戦略の取引システムを設計する方法を学ぶために設計図を作成し、MACDと述べた戦略を詳細にコード化してその戦略によって取引システムを作成する方法を知ることができました。ご自分の取引と計画に適していることを確認するために、実際の口座で使用する前にテストすることをお勧めします。

また、何かを詳細に知っていれば、そのトピックに関連するしないに関わらず新しい洞察やアイデアにつながるかもしれないと信じています。この記事を読んで、違いを生み出すことができる新しいアイデアに目を開き、より良い結果を得るために取引に役立てることができればと思います。この記事が読者とその取引に役立つことを願っています。