iMACD()関数は、MACD及びMACDシグナルの値を取得するために使用します。(MACDの詳細については「こちら」を参照してください)
iMACD()関数はインジケーターの開発やEAの開発で活躍する場面が多いので、
iMACD()が使いこなせる様になると、良いインジケーター・良いEAを開発出来る様になるでしょう。
iMACD()関数について
iMACD()関数は、MACD及びMACDシグナルの値を取得するために使用します(MACDの詳細については「こちら」を参照してください。)。
iMACD()関数は、以下のように定義されています。
iMACD()
double iMACD( string symbol, int timeframe, int fast_ema_period, int slow_ema_period, int signal_period, int applied_price, int mode, int shift );
各引数の意味は、以下のとおりです。
- string symbol
MACDの値を計算する通貨ペア名を指定します。
通貨ペア名は、「気配値表示ウィンドウ」に表示されているとおりに記述します。
特定の通貨ペア名を指定せず、EA等を適用したチャートの通貨ペアのMACDの値を取得したい場合は「NULL」と記述します。 - int timeframe
以下の表に従って、MACDの値を計算する時間軸を指定します。種 類 定 数 内 容 PERIOD_CURRENT 0 現在の時間足 PERIOD_M1 1 1分足 PERIOD_M5 5 5分足 PERIOD_M15 15 15分足 PERIOD_M30 30 30分足 PERIOD_H1 60 1時間足 PERIOD_H4 240 4時間足 PERIOD_D1 1440 日 足 PERIOD_W1 10080 週 足 PERIOD_MN1 43200 月 足 - int fast_ema_period
短期指数移動平均線(EMA)の値を計算する期間を指定します。
通常は「12」です。 - int slow_ema_period
長期指数移動平均線(EMA)の値を計算する期間を指定します。
通常は「26」です。 - int signal_period
MACDシグナル線の値を計算する期間を指定します。
通常は「9」です。 - int applied_price
以下の表に従って、短期及び長期指数移動平均線の値の計算に使用する価格データを指定します。種 類 定 数 内 容 PRICE_CLOSE 0 終 値 PRICE_OPEN 1 始 値 PRICE_HIGH 2 高 値 PRICE_LOW 3 安 値 PRICE_MEDIAN 4 中央値
(高値+安値)÷2 PRICE_TYPICAL 5 代表値
(高値+安値+終値)÷3 PRICE_WEIGHTED 6 加重終値
(高値+安値+終値+終値)÷4 - int mode
ライン番号を指定します。
MACDの値を取得したい場合は「0」と記述します。
MACDシグナル線の値を取得したい場合は「1」と記述します。 - int shift
MACDの値を取得したいバーの位置を指定します。
MACDの値を取得したいバーが現在のバーであれば「0」、1本前のバーであれば「1」、2本前のバーであれば「2」……と記述します。
EAにMACDを組み込む際のサンプルプログラム
2本前のバーのMACDの値がシグナルの値以下で、1本前のバーのMACDの値がシグナルの値よりも大きい場合に、買いエントリーしたい場合は、以下のように記述します(MACDのパラメーター:短期EMA「12」、長期EMA「26」、MACDシグナル「9」)。
iMACD()サンプルプログラム
double MACD_1 = iMACD(NULL,0,12,26,9,0,0,1); double MACD_2 = iMACD(NULL,0,12,26,9,0,0,2); double Signal_1 = iMACD(NULL,0,12,26,9,0,1,1); double Signal_2 = iMACD(NULL,0,12,26,9,0,1,2); if(MACD_2 <= Signal_2 && MACD_1 > Signal_1) { int Ticket = OrderSend(Symbol(),OP_BUY,0.1,Ask,10,0,0, NULL,2525,0,Magenta); }
注意点
MACDの開発者は、シグナル線をMACDの指数移動平均(EMA)として算出していますが、iMACD()関数で取得されるシグナル線の値は、MACDの値の単純移動平均(SMA)として算出されます。
シグナル線をMACDの指数移動平均として算出したい場合は、「こちら」を参照してください。