Syntax
public static ADX Series(WealthLab.Bars bars, int period)
Parameter Description
Bars |
The Bars object |
period |
Indicator period |
Description
ADX stands for Average Directional movement Index and is used to measure the overall strength of the trend. The ADX indicator is an average of
DX values. The ADX is a component of the Directional Movement System developed by Welles Wilder. This system attempts to measure the strength of price movement in positive and negative direction using the
DIPlus and
DIMinus indicators along with the ADX.
Interpretation
The ADX is an excellent indicator for showing trend strength. The larger its value the stronger the current trend. A value above 25 is considered to be a trending market.
- When the ADX turns down from high values, then the trend maybe ending. It might be a good time to start closing open positions.
- If the ADX is declining, then the market is becoming less directional, the current trend is weakening. You should not be trading a trend system.
- When the ADX stays at a low value, the market is considered to be flat or dull. The longer the ADX stays at a low value the more likely a strong trending move will occur.
- If after staying low for a lengthy time, the ADX rises by 4 or 5 units, (for example, from 15 to 20), it gives a strong signal to trade the current trend.
- If the ADX is rising then the market is showing a strengthening trend. The value of the ADX is proportional to the slope of the trend. The slope of the ADX line is proportional to the acceleration of the price movement (changing trend slope). If the trend is a constant slope then the ADX value tends to flatten out.
Calculation
ADX is equivalent to the Wilder's moving average (see
WilderMA) of the direction movement (
DX) over the specified Period.
Example
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;
namespace WealthLab.Strategies
{
public class MyStrategy : WealthScript
{
private StrategyParameter paramPeriod;
public MyStrategy()
{
paramPeriod = CreateParameter("ADX Period", 10, 10, 30, 1);
}
// Thank you fundtimer
public Color WS4ColorToNET( double WS4Color )
{
return Color.FromArgb(
(int)Math.Floor( ( WS4Color % 1000 ) / 100 * 28.4 ),
(int)Math.Floor( ( WS4Color % 100 ) / 10 * 28.4 ),
(int)Math.Floor( WS4Color % 10 * 28.4 ) );
}
protected override void Execute()
{
// Use ADX to determine how much prices are trending, color bars accordingly
int period = paramPeriod.ValueInt;
// ADX is one of "unstable" indicators, see Language Guide for information
for(int bar = period*3; bar < Bars.Count; bar++)
SetBarColor( bar, WS4ColorToNET( Math.Round( ADX.Series( Bars, period )bar / 5 )*100 ) );
}
}
}