MQL4MQL5 テクニカル指標
iOsMA()
- できること
- MACD オシレーター(OsMA)の値を取得する
- 対応
- MQL4・MQL5
iOsMA() とは
OsMA(MACD のメインラインとシグナルラインの差)を計算する関数です。0 を上抜け・下抜けすると、MACD とシグナルがクロスしたことを表します。
iOsMA() の書式と引数
MQL4 の場合MT4
double iOsMA(
string symbol,
int timeframe,
int fast_ema_period,
int slow_ema_period,
int signal_period,
int applied_price,
int shift
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
symbol | string | 必須 | 銘柄名。チャートの銘柄なら _Symbol(NULL も可)。 |
timeframe | int | 必須 | 時間足。0 または PERIOD_CURRENT でチャートの時間足。 |
fast_ema_period | int | 必須 | 短期 EMA の期間(12)。 |
slow_ema_period | int | 必須 | 長期 EMA の期間(26)。 |
signal_period | int | 必須 | シグナルの期間(9)。 |
applied_price | int | 必須 | 計算に使う価格。PRICE_CLOSE など。 |
shift | int | 必須 | 値を取得するバーの位置。0 が現在(未確定)のバー、1 が確定したひとつ前のバー。 |
戻り値(MQL4)
OsMA の値。
MQL5 の場合MT5
int iOsMA(
string symbol,
ENUM_TIMEFRAMES period,
int fast_ema_period,
int slow_ema_period,
int signal_period,
int applied_price
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
symbol | string | 必須 | 銘柄名。チャートの銘柄なら _Symbol(NULL も可)。 |
period | ENUM_TIMEFRAMES | 必須 | 時間足。PERIOD_CURRENT でチャートの時間足。 |
fast_ema_period | int | 必須 | 短期 EMA の期間(12)。 |
slow_ema_period | int | 必須 | 長期 EMA の期間(26)。 |
signal_period | int | 必須 | シグナルの期間(9)。 |
applied_price | int | 必須 | 計算に使う価格。PRICE_CLOSE など。 |
戻り値(MQL5)
インジケーターのハンドル。
iOsMA() の使い方(コード例)
MQL4
double o1 = iOsMA(_Symbol, 0, 12, 26, 9, PRICE_CLOSE, 1);
double o2 = iOsMA(_Symbol, 0, 12, 26, 9, PRICE_CLOSE, 2);
if(o2 <= 0 && o1 > 0) Print("OsMA がプラスに転換(MACD がシグナルを上抜け)");MQL5
int h = iOsMA(_Symbol, PERIOD_CURRENT, 12, 26, 9, PRICE_CLOSE);
double v[];
ArraySetAsSeries(v, true);
if(h != INVALID_HANDLE && CopyBuffer(h, 0, 1, 2, v) == 2 && v[1] <= 0 && v[0] > 0)
Print("OsMA がプラスに転換(MACD がシグナルを上抜け)");
IndicatorRelease(h);OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
iOsMA() の注意点
- MQL5 では値ではなく「ハンドル」が返ります。ハンドルは OnInit() で1回だけ作り、CopyBuffer() で値を読み出します。












