iEnvelopes 関数
この関数は、任意に設定したパラメータのエンベロープの値を計算して、その値を取得します。エンベロープはトレンド系のインジケータに分類されます。
エンベロープ
エンベロープ (Envelopes) は、移動平均線を中心に一定の幅で上下にバンドを設定したテクニカル指標の一つです。一般的には、移動平均線から一定の割合の距離 (通常は移動平均線の上下に1〜10%の幅) にバンドを設定します。価格がバンドに触れることでサポートやレジスタンスのラインを形成し、価格がその範囲内に収まるかどうかを確認することができます。エンベロープは主にトレンドの方向性を確認するために使用されます。
「Envelope」は直訳で「封筒、外皮、覆い、包絡線」を意味します。何かを包み込むということで領域などの意味で用いられます。
MT4でチャート上にエンベロープをプロットする時はナビゲーター中のインディケータ → 「トレンド」 → 「Envelopes」インジケータを使用します。
(エンベロープの計算式)
上限ライン = 単純移動平均線 ✕ ( 100 + 上限幅[%] ) ÷ 100
下限ライン = 単純移動平均線 ✕ ( 100 - 下限幅[%] ) ÷ 100
ここで、単純移動平均線は指定された期間の価格の単純移動平均を表します。上限幅と下限幅は、それぞれ上限ラインと下限ラインの幅を制御するパラメータで、使用するチャートの時間軸によってバーの変動範囲に適した%を設定します。
(エンベロープの使い方)
FXトレードの指標で使われるエンベロープは、価格の変動が特定の範囲内であることを示す上限と下限のバンドを示します。エンベロープの使い方は、主に以下の2つの方法があります。
①トレンドの転換点の警告:エンベロープは、上限と下限バンドの間の価格が長期的なトレンドの上限や下限に近づいた時に価格が抵抗を受けることを示唆することができます。価格がエンベロープの上限または下限に近づいた場合、トレンドが転換する可能性があるため、逆張りでトレードします。
②価格のトレンドの強さの確認:エンベロープは、価格が上限バンドまたは下限バンドの外側にある場合には、強いトレンドがあることを示唆することができます。この場合、価格はトレンドに従い、バンドに対して進行することが多いため、トレンドを追跡する順張りでトレードします。
エンベロープは、他のテクニカル指標と同様に、常に他の指標や分析方法と組み合わせて使用されることが多いです。
データ型と構成・戻り値
double iEnvelopes(①, ②, ③, ④, ⑤, ⑥, ⑦, ⑧, ⑨);
戻り値は、任意に設定したパラメータのエンベロープの値を計算して、その値を返します。
引数 [9]
iEnvelopes関数は 9個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | symbol | string | - | - | 計算対象の通貨ペア名。 「NULL」は選択チャートの通貨ペア名が選択されます。 |
② | timeframe | int | - | - | 時間軸。ENUM_TIMEFRAMES 列挙値から選択。 「0」は現在チャートの時間軸が選択されます。 |
③ | ma_period | int | - | - | 中心となる移動平均線の平均期間。エンベロープを計算するバーの数を数値で設定します。 |
④ | ma_method | int | - | - | 移動平均の方法。 ENUM_MA_METHOD 列挙値から選択。 |
⑤ | ma_shift | int | - | - | チャートに対するインジケーターのシフト。 |
⑥ | applied_price | int | 決済の 通貨単位 | - | 適用価格。 ENUM_APPLIED_PRICE 列挙値から選択。 |
⑦ | deviation | double | - | - | 中心となる移動平均線からの偏差率。 |
⑧ | mode | int | - | - | インジケータライン。 iEnvelopes関数のインジケータライン識別子から選択。 |
⑨ | shift | int | - | - | エンベロープを算出する位置。 現在のバーから指定した時間軸のバー数だけ過去へシフトします。たとえば、現在のバーからの計算は「0」、 1つ前のバーから計算する時は「1」になります。 |
使用例
iEnvelopes関数によるエンベロープ値の計算
iEnvelopes関数を使って14日間単純移動平均線のエンベロープ値 (ベースライン、上のライン、下のライン) を算出します。
コード
// iEnvelopes関数によるエンベロープ値の計算
#property strict
void OnInit() {
int period = 14; // 期間
double a = iEnvelopes(NULL, 0, period, 0, 0, 0, 2, 0, 0); // ベースライン
double b = iEnvelopes(NULL, 0, period, 0, 0, 0, 2, 1, 0); // 上のライン
double c = iEnvelopes(NULL, 0, period, 0, 0, 0, 2, 2, 0); // 下のライン
Print(period, "期間のエンベロープ値 下のライン:", c);
Print(period, "期間のエンベロープ値 ベースライン:", a);
Print(period, "期間のエンベロープ値 上のライン:", b);
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)