Skip to main content

ADX/ADXR Custom (Without Rounding) for Metastock

carla over 15 years ago Metastock

  • Rating:
    5 / 5 (Votes 1)
  • Tags:
    metastock, oscillator

The Average Directional Index (ADX), Minus Directional Indicator (-DI) and Plus Directional Indicator (+DI) represent a group of directional movement indicators that form a trading system developed by Welles Wilder.

The ADX indicator measures the strength of a trend and can be useful to determine if a trend is strong or weak. High readings indicate a strong trend and low readings indicate a weak trend.

When this indicator is showing a low reading then a trading range is likely to develop. Avoid stocks with low readings! You want to be in stocks that have high readings.

The indicators built-in Metastock plot exactly as Welles Wilder plots them in his book, New Concepts in Technical Trading Systems. These custom indicators calculate the same way except they do not round as Wilder does.

Screenshots

Files

Indicator / Formula

Copy & Paste Friendly
Periods:=Input("Time Periods",1,100,14);
PlusDM:=If(H>Ref(H,-1) AND L<=Ref(L,-1),H-Ref(H,-1),If(H>Ref(H,-1)
AND L<Ref(L,-1) AND H-Ref(H,-1)>Ref(L,-1)-L, H-Ref(H,-1),0));
PlusDI:=100*Wilders(PlusDM,Periods)/ATR(Periods);
MinusDM:=If(L<Ref(L,-1) AND H<=Ref(H,-1),Ref(L,-1)-L,If(H>Ref(H,-1)
AND L<Ref(L,-1) AND H-Ref(H,-1)<Ref(L,-1)-L, Ref(L,-1)-L,0));
MinusDI:=100*Wilders(MinusDM,Periods)/ATR(Periods);
DIDif:=Abs(PlusDI-MinusDI);
DISum:=PlusDI+MinusDI;
ADXFinal:=100*Wilders(DIDif/DISum,Periods);
ADXRCustom:= (ADXFinal+Ref(ADXFinal,LastValue(1-periods)))/2;
ADXRCustom
Copy & Paste Friendly
Periods:=Input("Time Periods",1,100,14);
PlusDM:=If(H>Ref(H,-1) AND L>=Ref(L,-1), H-Ref(H,-1),If(H>Ref(H,-1)
AND L<Ref(L,-1) AND H-Ref(H,-1) > Ref(L,-1)-L, H-Ref(H,-1),0));
PlusDI:=100*Wilders(PlusDM,Periods)/ATR(Periods);
MinusDM:=If(L<Ref(L,-1) AND H<=Ref(H,-1),Ref(L,-1)-L,If(H>Ref(H,-1)
AND L<Ref(L,-1) AND H-Ref(H,-1)<Ref(L,-1)-L, Ref(L,-1)-L,0));
MinusDI:=100*Wilders(MinusDM,Periods)/ATR(Periods);
DIDif:=Abs(PlusDI-MinusDI);
DISum:=PlusDI+MinusDI;
ADXFinal:=100*Wilders(DIDif/DISum,Periods);
ADXFinal

0 comments

Leave Comment

Please login here to leave a comment.