iOsMA()関数は、OsMA(Moving Average of Oscillator)の値(=MACD-MACDシグナル)を取得するために使用します(MACDの詳細については「こちら」を参照してください。)。
iOsMA()関数は、以下のように定義されています。
double iOsMA(
string symbol,
int timeframe,
int fast_ema_period,
int slow_ema_peirod,
int signal_period,
int applied_price,
int shift
);
各引数の意味は、以下のとおりです。
- string symbol
OsMAの値を計算する通貨ペア名を指定します。
通貨ペア名は、「気配値表示ウィンドウ」に表示されているとおりに記述します。
特定の通貨ペア名を指定せず、EA等を適用したチャートの通貨ペアのOsMAの値を取得したい場合は、「NULL」と記述します。 - int timeframe
以下の表に従って、OsMAの値を計算する時間軸を指定します。timeframeの種類
種 類 定 数 内 容 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 shift
OsMAの値を取得したいバーの位置を指定します。
OsMAの値を取得したいバーが現在のバーであれば「0」、1本前のバーであれば「1」、2本前のバーであれば「2」……と記述します。
具体例
2本前のバーのOsMAの値が「0」以下で、かつ、1本前のバーのOsMAの値が「正」であれば、買いエントリーしたい場合は、以下のように記述します。
double OsMA_1 = iOsMA(NULL,0,12,26,9,0,1);
double OsMA_2 = iOsMA(NULL,0,12,26,9,0,2);
if(OsMA_2 <= 0 && OsMA_1 > 0)
{
int Ticket
= OrderSend(Symbol(),OP_BUY,0.1,Ask,10,0,0,
NULL,1842,0,Magenta);
}
注意点
OsMAはMACDを基にしたインジケーターですが、MetaTrader4(MT4)に標準で搭載されているMACDは、シグナル線をMACDの値の単純移動平均(SMA)として算出しています(開発者は指数移動平均(EMA)を使用しています。)。
詳細は「こちら」を参照してください。