2011/3/5
DMI(Directional Movement Index)
J. Welles Wilderによって開発されたトレンド系の指標です。
2本の線の状態からトレンドの方向を判断します。
逆の場合は弱気と判断します。
使用する関数
Directional Movement Indexの計算で面倒な部分はDM+とDM-を計算するときのIF判定です。それ以外はそれほど難しくありません。
OFFSET関数を使って任意の日数のDirectional Movement Indexを計算できるようにしています。
L4セルはDirectional Movement Indexの計算日数を指定するセルとします。
G列、H列でそれぞれDMP、DMNを計算します。簡単な計算式なので説明は省略します。
I列でDM+の計算をします。上記の計算式をDM+で纏めると
G列、H列両方がマイナスの時は0、それ以外の場合でG列>H列の場合はG列の値、それ以外の場合は0
となるので、これを式に直すと
J列でDM-の計算をします。上記の計算式をDM-で纏めると
G列、H列両方がマイナスの時は0、それ以外の場合でG列<H列の場合はH列の値、それ以外の場合は0
となるので、これを式に直すと
K列はTrue Rangeを計算します。ここではMAX関数とMIN関数を使った計算法でTrue Rangeを計算してます。
計算式の説明はTrue Rangeを参照してください。
L列でDI+を計算します。DI+はDM+のN日総和÷TRのN日総和×100で計算されるので、計算式は
M列でDI-を計算します。DI+はDM-のN日総和÷TRのN日総和×100で計算されるので、計算式は
G6〜M6セルをコピーし、G7以下のセルペーストすればDirectional Movement Indexが計算できます。
Excelファイルがダウンロードできない場合はリンクを右クリックして「対象をファイルに保存」を選択して保存すればダウンロードできます。
2本の線の状態からトレンドの方向を判断します。
計算式
DMP = 当日高値 - 前日高値
DMN = 前日の安値 - 当日の安値
DMP < 0 かつ DMN < 0 の場合、DM+ = 0,DM- = 0
DMPかDMNが正でDMP < DMN の場合 DM+ = 0,DM- = DMN
DMPかDMNが正でDMP > DMN の場合 DM+ = DMP,DM- = 0
上記以外の場合はDM+ = 0,DM- = 0
DI+ = DM+のN日間総和 ÷ TrueRangeのN日間総和 × 100
DI- = DM-のN日間総和 ÷ TrueRangeのN日間総和 × 100
DMN = 前日の安値 - 当日の安値
DMP < 0 かつ DMN < 0 の場合、DM+ = 0,DM- = 0
DMPかDMNが正でDMP < DMN の場合 DM+ = 0,DM- = DMN
DMPかDMNが正でDMP > DMN の場合 DM+ = DMP,DM- = 0
上記以外の場合はDM+ = 0,DM- = 0
DI+ = DM+のN日間総和 ÷ TrueRangeのN日間総和 × 100
DI- = DM-のN日間総和 ÷ TrueRangeのN日間総和 × 100
![]() |
日経平均終値とDirectional Movement Index
DI+がDI-より大きい場合、強気と判断します。逆の場合は弱気と判断します。
ExcelでDirectional Movement Indexを計算する
Excelを使ってDirectional Movement Indexを計算する手順を説明します。使用する関数
AND(論理式1,論理式2,…)
すべての論理式が真の場合真を返す。そうでない場合は偽を返します。MAX(数値1,数値2,…)
指定した数値や範囲内の数値の最大値を返します。MIN(数値1,数値2,…)
指定した数値や範囲内の数値の最小値を返します。SUM(数値1,数値2,…)
引数の合計を計算します。OFFSET(基準セル,行数,列数,高さ,幅)
基準セルから指定した行数、列数だけ移動したセルを参照します。
または高さ、幅を設定して基準セルから指定した高さ、幅のセル範囲を指定します。IF(条件式,真の場合,偽の場合)
条件式を満たす場合は真の場合の値、満たさない場合は偽の場合の値を返します。ROW(セル)
セルの行番号を返します。何も指定しない場合はROWが書かれたセルの行番号を返します。![]() |
Directional Movement Indexの計算で面倒な部分はDM+とDM-を計算するときのIF判定です。それ以外はそれほど難しくありません。
OFFSET関数を使って任意の日数のDirectional Movement Indexを計算できるようにしています。
L4セルはDirectional Movement Indexの計算日数を指定するセルとします。
G列、H列でそれぞれDMP、DMNを計算します。簡単な計算式なので説明は省略します。
I列でDM+の計算をします。上記の計算式をDM+で纏めると
G列、H列両方がマイナスの時は0、それ以外の場合でG列>H列の場合はG列の値、それ以外の場合は0
となるので、これを式に直すと
=IF(AND(G6<0,H6<0),0,IF(G6>H6,G6,0))
となります。J列でDM-の計算をします。上記の計算式をDM-で纏めると
G列、H列両方がマイナスの時は0、それ以外の場合でG列<H列の場合はH列の値、それ以外の場合は0
となるので、これを式に直すと
=IF(AND(G6<0,H6<0),0,IF(G6<H6,H6,0))
となります。K列はTrue Rangeを計算します。ここではMAX関数とMIN関数を使った計算法でTrue Rangeを計算してます。
計算式の説明はTrue Rangeを参照してください。
L列でDI+を計算します。DI+はDM+のN日総和÷TRのN日総和×100で計算されるので、計算式は
SUM(OFFSET(I6,0,0,-$L$4,1))/SUM(OFFSET(K6,0,0,-$L$4,1))*100
となります。M列でDI-を計算します。DI+はDM-のN日総和÷TRのN日総和×100で計算されるので、計算式は
SUM(OFFSET(J6,0,0,-$L$4,1))/SUM(OFFSET(K6,0,0,-$L$4,1))*100
となります。G6〜M6セルをコピーし、G7以下のセルペーストすればDirectional Movement Indexが計算できます。
Excelファイルがダウンロードできない場合はリンクを右クリックして「対象をファイルに保存」を選択して保存すればダウンロードできます。
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
↑ TOP PAGE