iMACD 関数
この関数は、任意に設定したパラメータのMACD (移動平均 収束 分岐) の値を計算して、その値を取得します。MACDはトレンド系・オシレータ系の両方の特性を持ったインジケータになります。
MACD
MACD (Moving Average Convergence Divergence [移動平均 収束 分岐]) とは、通称「マックデー」とも言われ、指数移動平均線を使用して、トレンドの方向性や転換点を分析します。
長期的なトレンドと短期的なトレンドの両方を考慮し、トレンド転換のサインを見つけ出すことができます。MACDは、2本の移動平均線を使用して作成されます。一方は短期の指数移動平均線 (たとえば、EMA12) 、もう一方は長期の指数移動平均線 (たとえば、EMA26) です。この2本の移動平均線の差を表すシグナル線と呼ばれる移動平均線も同時に計算されます。MACDは、移動平均線同士の乖離とその乖離の変化からトレンド転換のサインを探ることができます。
MT4でチャート上にMACDをプロットする時はナビゲーター中のインディケータ → 「MACD」インジケータを使用します。
(MACDの計算式)
MACDは、短期EMA12と長期EMA26の差を表す指標であり、以下の計算式で求めることができます。
MACD = 短期EMA12 - 長期EMA26
ただし、一般的にはMACDの値を9期間のEMA9で平滑化してシグナル線を求めます。その場合、MACDとシグナル線の差 (ヒストグラム) が重要な意味を持ちます。MACDとシグナル線の計算式は以下の通りです。
MACD = 短期EMA12 – 長期EMA26
シグナル線 = MACDのEMA9
通常、MACDでは、短期EMAに12期間、長期EMAに26期間、シグナル線のEMAに9期間が用いられますが、それぞれの線を計算するために必要な日数は、テクニカルアナリストやトレーダーによって異なる場合があります。
(MACDの使い方)
MACDは、トレンド系の指標でもあり、オシレータ系の指標でもあります。トレンド系の指標としては、EMAのクロスによるゴールデンクロスやデッドクロスの判断が挙げられます。一方、オシレータ系の指標としては、プラス/マイナスの振れ幅によるトレンドの強弱やダイバージェンスの判断が挙げられます。
①ゴールデンクロスとデッドクロスの判断
MACDには、MACDの値のプラス/マイナスの切り替わりが発生するゴールデンクロスとデッドクロスと呼ばれるシグナルがあります。短期EMAが長期EMAを上抜いた場合はゴールデンクロス、下抜いた場合はデッドクロスとなります。ゴールデンクロスが発生した場合は買いのサインとして、デッドクロスが発生した場合は売りのサインとして判断することができます。
②トレンドの強弱の判断
MACDの値自体が 0を基準にプラス/マイナスに振れるため、その振れ幅の大きさでトレンドの強弱を判断することができます。MACDがプラス領域で上昇し続ける場合は強い上昇トレンド、逆にマイナス領域で下落し続ける場合は強い下降トレンドと判断することができます。
③ダイバージェンスの判断
MACDは価格と同様に振る舞うため、価格との不一致が生じた場合には、トレンド転換の可能性が高いとされます。このような現象をダイバージェンスといい、MACDの上昇・下降に対して価格が逆方向に動いている場合に、トレンド転換の兆候として判断することができます。
データ型と構成・戻り値
double iMACD(①, ②, ③, ④, ⑤, ⑥, ⑦, ⑧);
戻り値は、任意に設定したパラメータのMACDの値を計算して、その値を返します。
引数 [8]
iMACD関数は 8個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | symbol | string | - | - | 計算対象の通貨ペア名。 「NULL」は選択チャートの通貨ペア名が選択されます。 |
② | timeframe | int | - | - | 時間軸。ENUM_TIMEFRAMES 列挙値から選択。 「0」は現在チャートの時間軸が選択されます。 |
③ | fast_ema_period | int | - | - | 短期EMAの計算期間。短期EMAを計算するバーの数を数値で設定します。 |
④ | slow_ema_period | int | - | - | 長期EMAの計算期間。長期EMAを計算するバーの数を数値で設定します。 |
⑤ | signal_period | int | - | - | シグナル線の計算期間。シグナル線を計算するバーの数を数値で設定します。 |
⑥ | applied_price | int | - | - | 適用価格。 ENUM_APPLIED_PRICE 列挙値から選択。 |
⑦ | mode | int | - | - | 結果で算出する線を選択。 iMACD関数のインジケータライン識別子から選択。 |
⑧ | shift | int | - | - | MACDの値を算出するバーの位置。 現在のバーから指定した時間軸のバー数だけ過去へシフトします。たとえば、現在のバーからの計算は「0」、 1つ前のバーから計算する時は「1」になります。 |
使用例
iMACD関数によるシグナル線の値の計算
iMACD関数を使ってシグナルラインの現在の値を算出します。条件は次のとおりです。
短期EMAの計算期間:12日間
長期EMAの計算期間:26日間
シグナル線の計算期間:9日間
コード
// iMACD関数によるシグナル線の値の計算
#property strict
void OnInit() {
int s_period = 12; // 短期EMAの計算期間
int l_period = 26; // 長期EMAの計算期間
int b_period = 9; // シグナル線の計算期間
double a = iMACD(NULL, 0, s_period, l_period, b_period, 0, 1, 0);
Print("MACD シグナルライン:", a);
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)