TradingViewでトレードシステムを作る ~ 第6回 MACDを作る

投資の始め方
記事内に広告が含まれています。

投資苑2に書いてあるシステムをTradingViewで再現し、投資戦略を作り、バックテストを行う」

これを目標に少しずつトレードシステムを作っています。

前回までにオートエンベロープを実装しました。
今回は、MACDを作っていきます。

>>TradingViewのトップページへ行く

MACDについて


MACD(マックディー、エムエーシーディー)はトレンドの転換点を分析するためのツールです。

Moving Average Convergence and Divergenceの頭文字をとってMACDと呼ばれています。
日本語に訳すと移動平均収束拡散指標!・・・わかったようなわからないような。

MACDとシグナルの2本の線を使うのが特徴です。

2本の線はどちらもEMAから計算されます。

柱状グラフ(ヒストグラム)は、MACDヒストグラムです。
MACDとシグナルの差を示したものです。

MACDの計算式

MACD = EMA(12) - EMA(26)
シグナル = MACD線のEMA(9)
MACDヒストグラム = MACD線 - シグナル

()の中は期間を表しています。
期間の数値は、標準的なものを採用しています。

期間については、好みで変更できますが、
ほとんど影響はないため、忙しければそのまま使っても良いという風に投資苑2には書いてあります。

計算式を言葉で理解する

計算式からもわかるように、MACDは短期的な価格と長期的な価格の差を表しています。

短期のEMAが長期のEMAよりも上にある時は、MACDは0よりも上にあり、
短期のEMAが下にある時は、MACDはマイナスになります。

MACD線が0になると、短期のEMAと長期のEMAがクロスしていることがわかります。

MACDは移動平均が収束と拡散しているようすがわかる線なのです。
なので、移動平均収束拡散指標なんですね。

シグナルは、MACDの平均線です。
ここ最近(ここでは9期間)の短期EMAと長期EMAの差の平均を表しています。
上がっていけば短期の価格が上昇して、長期との差が広がっていることがわかります。

つまり、シグナルはMACD(EMAの価格差)のトレンドを知るための線です。

MACDヒストグラムはMACDとシグナルの差です。
「短期のEMAと長期のEMAの差」(MACD)と「短期のEMAと長期のEMAの差の平均」(シグナル)の差ということです。

現時点の差と、過去の差の平均が離れすぎていると、山の頂上。
現時点の差と過去の差の平均が同じなら0になります。

MACDの使い方

MACDはトレンドが転換しそうなところを見つけるツールです。

一番わかりやすいのは、MACDヒストグラムが0を交差したタイミングです。
上に交差した場合は、買いシグナル。
下に交差した場合は、売りシグナルです。

先回りして、山の頂上付近の上り始めたところ(または下り始めたところ)で仕掛けるのもありです。

トレンドの勢いを見るときにも使います。
MACDが0より上だと、上昇基調。
0より下だと下落基調。

他には、MACDの波の大きさを見ます。
例えば、同じ価格でもMACD線の高さが前回よりも低ければ、買い方の力が弱まっていると判断します。

MACDをPineで書く

MACDは今まで作ってきたインジケーターとは別画面に表示します。

今までの続きに書くと、同じ枠内に表示されてしまうので、新しくインジケーターを作成します。

一からMACDの計算式を実装しても良いのですが、MACDを使うための便利な関数が用意されているのでそれを使います。

//@version=3
study('MACD')
[macdLine, signalLine, histLine] = macd(close, 12, 26, 9)
plot(macdLine, color=blue)
plot(signalLine, color=orange)
plot(histLine, color=red, style=histogram)

※リファレンスに書いてあったコードをそのままもらうことにしました。

新しく登場したもの

  • macd()
  • 配列
  • plotのオプション

macd()

macd()はMACDを利用するために用意された関数です。
引数は4つ必要です。

第1引数には使用するデータ(価格)を入れます。今回は終値です。
第2引数には期間の短いほうのEMAの期間の値を入れます。
第3引数には期間が長いほうのEMAの期間の値を入れます。
第4引数にはシグナルの期間の値を入れます。

macd()の計算結果は、[MACD, シグナル, MACDヒストグラム]という風に配列で返ってきます。

受け取るときは、配列で受け取ります。

配列については、次で解説します。

配列

変数は一つの値を入れる箱でしたが、
配列は、複数の値を入れる箱という認識でほぼ問題ないです。
[a, b, c・・・]

a, b, c・・・という風に「,」で区切ると複数の値をしまっておけます。

[macdLine, signalLine, histLine] = macd(close, 12, 26, 9)

macd()の計算結果は[MACD, シグナル, MACDヒストグラム]という形で返ってくるので、
そのままわかりやすい変数名をつけて、後から使いやすいようにしています。

[a, b, c] = macd(close, 12, 26, 9)

という風に受け取っても問題ありませんが、
プログラムを見返した時に「a」を見ただけでは、MACDだとはわかりません。

変数名は後から読んでわかりやすい名前をつけましょう。

plot()のstyle

ほぼ毎回使うplot()ですが、新しいオプションが今回出てきました。

colorで色を付けたときと同じように使用します。

MACDヒストグラムは線グラフではなく、ヒストグラム(柱状グラフ)を使うのが一般的ですし、見やすいです。

plot(histLine, color=red, style=histogram)

という風に指定すると、ヒストグラムで表示できます。

styleで指定できるオプションは
全部でline、stepline、histogram、cross、area、columns、circles
となっています(詳しくは割愛します)。
デフォルトで指定されているのはlineです。

MACDの実装結果

//@version=3
study(title="Making of Trading System part 6", shorttitle="MACD")
[macdLine, signalLine, histLine] = macd(close, 12, 26, 9)
plot(macdLine, color=blue)
plot(signalLine, color=orange)
plot(histLine, color=red, style=histogram)

>>TradingViewのチャートの画面

チャートに追加すると、overlayを設定していないので、
下に今回作ったMACDのインジケーターが追加されたと思います。

これでオシレーターの定番でもあるMACDを実装できました。

MACDは便利な関数があったので、すばやく実装することができました。
楽をしようと考えるのはとても大事ですね。

ヒストグラムの部分では、グラフの種類を設定するオプションを学びました。

一応、普段使いもできるレベルのチャート画面を一から作成できました。

見づらかったら、自分で線の色などを変更したりできますし、
パラメーターを触ることで、微調整することもできます。

次回は、勢力指数です(手元の投資苑2ではP165~になります)。

>>TradingViewのトップページへ行く

コメント

タイトルとURLをコピーしました