12回目では、MACDを使ってみようと思います!
↑バナークリックでトレーディングビューのサイトに行けます
MACDとは
MACDはマックディーと読む人が多いと思いますが、エムエーシーディーっていう人もいます。
どちらもありだと思いますが、Moving Average(MA)をエムエーと読むことが多いので、エムエーシーディーの方が近いのかなと思います。がどうでもいい話
1960年代にGerald Appelによって考案されたとされています。
Moving Average Convergence Divergenceの略でトレンドフォロー型のインジケーターです。MACDのMA部分が移動平均(Moving Average)ですよね。Convergenceは収束、Divergenceは拡散を意味します。異なる期間の2本のMAの価格差を示しています。
つまり、MAが収束するか、拡散しているかを判断する指標であることから、パーフェクトオーダーを視覚化していると言えるでしょう。
一般的な数値は12,26のEMAの差分をMACDとして、さらにsignalラインと呼ばれるMACDの9EMAを使います。
ただ、差分をインジケーターとして示していますので、MAの表記とは少し見た目が異なり、0を通るとき、MAのクロスが起こっていて、マイナス方向では下落傾向、プラス方向では上昇傾向にあると認識できます。
MACD = EMA(12)-EMA(26)
Signal = MACDのMA(9)
ヒストグラムは上記2つのラインの差分を表しています
コードを書いてみよう!
MACDはテクニカルなのでta.を頭につけてやれば書くことが出来ます
ta.macd(値、早いMAの期間、遅いMAの期間、signalを計算するMACDの期間)
です。
戻り値(計算結果のこと)は3種類の数値で、タプルと呼ばれる状態なので、 []記号を用いて3つの値を取得できるように記述します。
//@version=5
strategy("MACD", overlay=false, margin_long=100, margin_short=100)
[macd1,macd2,macd3] = ta.macd(close, 12, 26, 9) //3種の戻り値を受け取れるように[]で記述
plot(macd1)
plot(macd2,color = color.new(color.lime,0))
plot(macd3,color = color.new(color.fuchsia,0))
//MACDとSignalのクロスで売買
longCondition = ta.crossover(macd1, macd2)
if (longCondition)
strategy.entry("My Long Entry Id", strategy.long)
shortCondition = ta.crossunder(macd1, macd2)
if (shortCondition)
strategy.entry("My Short Entry Id", strategy.short)
MACDとsignalラインとのクロスで売買するようなストラテジーを組みました
何も調整しなくてもそこそこ良い結果になりました
MACDをSMAで書いてみよう!
MACDをta.macdを用いて書くことが出来ました。この計算式をおさらいすることと、EMAではなくSMAを使って書いてみるってのを実践してみます
MACDは
MACD = EMA(12)-EMA(26)
Signal = MACDのMA(9)
でした。また、上記2つの差分で構成されています。これらをSMAで記述してみましょう。
// © FP嶋
//@version=5
strategy("MACD-sma", overlay=false, margin_long=100, margin_short=100)
// まずは関数の定義
sma1 = ta.sma(close,12)
sma2 = ta.sma(close,26)
macd1 = sma1-sma2 //MACDは2つのMAの差分
macd2 = ta.sma(macd1,9) //signalは差分のMA
macd3 = macd1 - macd2 // ヒストグラムはMACDとsignalの差分
//ta.macdで書いたものと同じ配色
plot(macd1)
plot(macd2,color = color.new(color.lime,0))
plot(macd3,color = color.new(color.fuchsia,0))
longCondition = ta.crossover(macd1, macd2)
if (longCondition)
strategy.entry("My Long Entry Id", strategy.long)
shortCondition = ta.crossunder(macd1, macd2)
if (shortCondition)
strategy.entry("My Short Entry Id", strategy.short)
当たり前ですが、EMAで記述されたta.macd()とほぼ同じラインが書ける上に、戦略としても同じような結果になりました。EMAでもSMAでもそんなに差が無いと言えるでしょう。ただ、期間が長くなるともしかしたら結構違ったりするかもしれません。
戦略的にはどうなのかな?
MACDは戦略的には結局のところ複数のMAとの関係性を見ているだけなので、チャートに複数のMAを表示している場合には改めて出す必要もないのかなっと思います。
気にする人はダイバージェンスと呼ばれる状況を見たりするかもしれません。MACDのDがダイバージェンスなので、ややこしいかもしれませんが、若干異なる概念です。どこかで解説してたかな…
ただ、MAを見るのになれていなかったり、自動売買戦略を考える上で、単純に計算量やコードを減らす上では役立つかもしれません。色々と考えてみてください
今回はMACDを使ってみました。ではこのへんで!
おすすめFXアイテム
過去検証や分析はMT4かFT4、Trading viewがおすすめです。
無料が良い人はMT4で、MT4を使わせてくれる口座を使用すると良いです。おすすめはFXTF
チャート分析に毎月課金してもいいよって人はTrading viewがおすすめです。無料もあります