トレンドの存在・方向性・強弱を分析 iADX 関数

関数

テクニカルインジケータ関数

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個の引数で構成されます。


引数名データ型単位初期値説明
symbolstring計算対象の通貨ペア名。
「NULL」は選択チャートの通貨ペア名が選択されます。
timeframeint時間軸。ENUM_TIMEFRAMES 列挙値から選択。
「0」は現在チャートの時間軸が選択されます。
periodintADXの計算期間。ADXを計算するバーの数を数値で設定します。
applied_priceint適用価格。
ENUM_APPLIED_PRICE 列挙値から選択。
modeint結果で算出する線を選択。
iADX関数のインジケータライン識別子から選択。
shiftintADXの値を算出するバーの位置。
現在のバーから指定した時間軸のバー数だけ過去へシフトします。例えば、現在のバーからの計算は「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);
}

コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

タイトルとURLをコピーしました