MQL4MQL5 テクニカル指標
iEnvelopes()
- できること
- エンベロープ(移動平均乖離バンド)の値を取得する
- 対応
- MQL4・MQL5
iEnvelopes() とは
エンベロープ(移動平均線を上下に一定%ずらした線)を計算する関数です。価格が上下の線に届いたかで、行き過ぎを判断します。
iEnvelopes() の書式と引数
MQL4 の場合MT4
double iEnvelopes(
string symbol,
int timeframe,
int ma_period,
int ma_method,
int ma_shift,
int applied_price,
double deviation,
int mode,
int shift
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
symbol | string | 必須 | 銘柄名。チャートの銘柄なら _Symbol(NULL も可)。 |
timeframe | int | 必須 | 時間足。0 または PERIOD_CURRENT でチャートの時間足。 |
ma_period | int | 必須 | 移動平均の期間。 |
ma_method | int | 必須 | 移動平均の種類。MODE_SMA など。 |
ma_shift | int | 必須 | 右にずらす本数。ふつうは 0。 |
applied_price | int | 必須 | 計算に使う価格。PRICE_CLOSE など。 |
deviation | double | 必須 | 上下にずらす幅(%)。0.1 なら ±0.1%。 |
mode | int | 必須 | 取得する線。MODE_UPPER(上)または MODE_LOWER(下)。 |
shift | int | 必須 | 値を取得するバーの位置。0 が現在(未確定)のバー、1 が確定したひとつ前のバー。 |
戻り値(MQL4)
指定した線の値。
MQL5 の場合MT5
int iEnvelopes(
string symbol,
ENUM_TIMEFRAMES period,
int ma_period,
int ma_shift,
ENUM_MA_METHOD ma_method,
int applied_price,
double deviation
)| 引数 | 型 | 省略時 | 説明 |
|---|---|---|---|
symbol | string | 必須 | 銘柄名。チャートの銘柄なら _Symbol(NULL も可)。 |
period | ENUM_TIMEFRAMES | 必須 | 時間足。PERIOD_CURRENT でチャートの時間足。 |
ma_period | int | 必須 | 移動平均の期間。 |
ma_shift | int | 必須 | 右にずらす本数。ふつうは 0。 |
ma_method | ENUM_MA_METHOD | 必須 | 移動平均の種類。MODE_SMA など。 |
applied_price | int | 必須 | 計算に使う価格。PRICE_CLOSE など。 |
deviation | double | 必須 | 上下にずらす幅(%)。0.1 なら ±0.1%。 |
戻り値(MQL5)
インジケーターのハンドル。バッファ 0 が上(UPPER_LINE)、1 が下(LOWER_LINE)です。
iEnvelopes() の使い方(コード例)
MQL4
double up = iEnvelopes(_Symbol, 0, 25, MODE_SMA, 0, PRICE_CLOSE, 0.5, MODE_UPPER, 1);
double lo = iEnvelopes(_Symbol, 0, 25, MODE_SMA, 0, PRICE_CLOSE, 0.5, MODE_LOWER, 1);
Print("上 ", DoubleToString(up, _Digits), " 下 ", DoubleToString(lo, _Digits));MQL5
int h = iEnvelopes(_Symbol, PERIOD_CURRENT, 25, 0, MODE_SMA, PRICE_CLOSE, 0.5);
double up[], lo[];
if(h != INVALID_HANDLE && CopyBuffer(h, UPPER_LINE, 1, 1, up) == 1 && CopyBuffer(h, LOWER_LINE, 1, 1, lo) == 1)
Print("上 ", DoubleToString(up[0], _Digits), " 下 ", DoubleToString(lo[0], _Digits));
IndicatorRelease(h);OnTick()・OnStart() などの関数の中に書いて使う例です。MetaEditor でコンパイルできることを確認済みです。
iEnvelopes() の注意点
- MQL5 では値ではなく「ハンドル」が返ります。ハンドルは OnInit() で1回だけ作り、CopyBuffer() で値を読み出します。
- MQL4 と MQL5 で ma_method と ma_shift の順番が逆です。
MQL4 と MQL5 の違い
MQL4:iEnvelopes(…, 期間, 種類, シフト, 価格, 幅, mode, shift)。MQL5:iEnvelopes(…, 期間, シフト, 種類, 価格, 幅)。種類とシフトの順番が入れ替わっています。












