iADX 関数
この関数は、任意に設定したパラメータのADX (平均方向性指数) の値を計算して、その値を取得します。ADXはトレンド系・オシレータ系の両方の特性を持ったインジケータになります。
ADX
ADX (Average Directional Movement Index [平均方向性指数]) は、トレンドの強さを測定するためのテクニカル指標の1つです。指定の通貨ペアのトレンドがどの程度強いか、それが継続するかどうかを分析します。
ADXは、DI+ (上昇方向性指数) とDI- (下降方向性指数) の差を基に計算されます。ADXの値が高いほど、トレンドが強く、低いほど、トレンドが弱いことを示します。ADXの値が25以上であれば、トレンドが強いと見なされます。
MT4でチャート上にADXをプロットする時はナビゲーター中のインディケータ → トレンド → 「Average Directional Movement Index」インジケータを使用します。
(ADXの計算式)
ADXの計算式は、以下のようになります。
ADX = ((DI+ - DI-) ÷ (DI+ + DI-)) ✕ 100 の n期間の移動平均
(DI+ - DI-)は、絶対値とする。
DI+ = DM+ ÷ ATR
DI- = DM- ÷ ATR
DM+:対象バーの高値と1つ前のバーの終値の差の絶対値
DM-:対象バーの安値と1つ前のバーの終値の差の絶対値
ATR = TR の n期間の移動平均
TR :次の3つの中で最大値がTRになります。
①対象バーの高値と安値の差
②対象バーの高値と1つ前のバーの終値の差の絶対値
③対象バーの安値と1つ前のバーの終値の差の絶対値
n:期間を指定。日足の時は、通常14が使用されます。
(ADXの使い方)
① ADXは、ADXの値が高いほど、トレンドが強いと判断されます。
たとえば、日足チャートで期間を14日間に設定した場合、ADXは、25のラインを基準にして、トレンド相場とレンジ相場を区別します。25のラインより上ならトレンド相場、下ならレンジ相場とみなします。
② ADXは、DI+と DI-と一緒に表示されることが多く、DI+と DI-の交差や位置関係でトレンドの方向や転換を判断します。DI+が DI-より上にあれば上昇トレンド、下にあれば下降トレンドとみなします。
③ ADXは、価格の動きと一致しないときにダイバージェンス (ずれ) が発生していると判断できます。ダイバージェンスは、トレンドの終わりや反転を示すサインになります。
データ型と構成・戻り値
double iADX(①, ②, ③, ④, ⑤, ⑥);
戻り値は、任意に設定したパラメータのADXの値を計算して、その値を返します。
引数 [6]
iADX関数は 6個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | symbol | string | - | - | 計算対象の通貨ペア名。 「NULL」は選択チャートの通貨ペア名が選択されます。 |
② | timeframe | int | - | - | 時間軸。ENUM_TIMEFRAMES 列挙値から選択。 「0」は現在チャートの時間軸が選択されます。 |
③ | period | int | - | - | ADXの計算期間。ADXを計算するバーの数を数値で設定します。 |
④ | applied_price | int | - | - | 適用価格。 ENUM_APPLIED_PRICE 列挙値から選択。 |
⑤ | mode | int | - | - | 結果で算出する線を選択。 iADX関数のインジケータライン識別子から選択。 |
⑥ | shift | int | - | - | ADXの値を算出するバーの位置。 現在のバーから指定した時間軸のバー数だけ過去へシフトします。たとえば、現在のバーからの計算は「0」、 1つ前のバーから計算する時は「1」になります。 |
使用例
iADX関数によるADXの計算
iADX関数を使って、現在のADX値を計算します。
コード
// iADX関数によるADX値の計算
#property strict
void OnInit() {
int period = 14;
double ADX = iADX(NULL, 0, period, 0, 0, 0);
double DI1 = iADX(NULL, 0, period, 0, 1, 0);
double DI2 = iADX(NULL, 0, period, 0, 2, 0);
Print("ADX値:", ADX);
Print("DI+値:", DI1);
Print("DI-値:", DI2);
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)