  
- UID
- 2
- 积分
- 2914403
- 威望
- 1407234 布
- 龙e币
- 1507169 刀
- 在线时间
- 13521 小时
- 注册时间
- 2009-12-3
- 最后登录
- 2025-3-3

|
DMI的計算公式與程式實作
以下參考 MoneyDJ 「DMI指標介紹」的公式
1. 計算TR值 (當日價格與前一日價格相比之最大波動值)
TR(True Range)為波動實值,其算法為取以下三值中的最大一值,如下:
(1)、為當日最高價減去當日最低價。
(2)、∣Ht-C(t-1)∣ 為當日最高價減去前一日收盤價的絕對值。
(3)、∣C(t-1)-Lt∣為前一日收盤價減去當日最低價絕對值。
公式 TR=MAX(Ht-Lt,∣Ht-C(t-1)∣,∣C(t-1)-Lt∣)
可簡化為 TR=MAX(Ht,Lt,前日收) - MIN(Ht,Lt,前日收)
再計算 TR(14):起始值計算取前14根做平均數,之後使用「KD式平滑法」如前述,如下:
當日TR(14)=前一日TR14*(13/14) + 今日TR*(1/14)
2. 計算DM值:包括+DM{正趨向變動值} 及 -DM{負趨向變動值}
須計算「+DM」、「-DM」、「真實+DM」、「真實-DM」、「+DM(14)」、「–DM(14)」
1. 把當日最高價減去前一日最高價 = +DM。
2. 前一日最低價減去當日最低價 = -DM。
3. 若+DM>-DM成立,且+DM大於0,則「真實+DM」= +DM,若+DM小於等於0,則「真實+DM」= 0。
4. 同理,若+DM<-DM且-DM大於0,則「真實-DM」= -DM,若-DM小於等於0,則「真實-DM」= 0。
5. 接下來計算 +DM(14)與 –DM(14)之值。
起始值:可先用前14天之「真實+DM」的平均數做為第一天之+DM(14),用前14天之「真實-DM」的平均數做為第一天之-DM(14),而後計算如下:
當日+DM(14)=前一日+DM(14)*(13/14) + 當日真實+DM*(1/14)
當日-DM(14)=前一日 -DM14*(13/14) + 當日真實 -DM*(1/14)
3. 計算DI值
+DI(14)=+DM(14)/ TR(14) * 100
-DI(14)=-DM(14)/ TR(14) * 100
4. 計算DX及ADX
ADX(趨向平均線)是用來判別14日內價格變動趨勢的明顯度,計算如下:
先取DX值:DX=∣(+DI 14)- (-DI14)∣/ ((+DI14)+ (-DI14)) * 100。
再取ADX值:起始值計算比照DM(14)之計算方式,取前14根做平均數。
當日ADX(14)=前一日ADX*(13/14) + 今日DX*(1/14) |
|