|
WebCab Technical Analysis (J2EE Edition) |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
Within this Enterprise JavaBean we implement the Directional Movement Indicator (MDI) and Average Directional Indicator (ADX) which was first developed by Wellas Wilder in order to classify price moves and trends. The ideas where first made public within Wilder's first book "New Concepts in Technical Trading Systems" (Dec 1978).
These ideas where originally developed into a trading system and can still be used as such. Today these methods are most commonly used to evaluate the strength of a price move or trend. Care should be taken with the direct application of this approach since it was first developed and applied to markets with exhibited lower volatility than todays markets.
The central idea of this approach is to compare the range of price of two subsequent days and from this information infer the overall direction of the market. In order to ensure the stability of the indicators a moving average is often used in conjunction with the basic indicators. For further details please see the PDF documentation.
| Method Summary | |
double |
averageDailyTrueRange(double[] trueRange)
We evaluate the x-day Average Daily True Range (ADTR) of an asset over a period. |
int |
classifyMovements(double todaysHigh,
double todaysLow,
double yesterdaysHigh,
double yesterdaysLow)
Determines whether todays price action is a day of (up or down) trend, (up or down) gap, or (inner or outer) range type. |
double |
directionalMotion(double plusDirectionalMovement,
double minusDirectionalMovement)
Calculates the Directional Indicator forms the main part of the Directional Movement System developed by Wellas Wilder. |
double |
directionalMotion(double todaysHigh,
double todaysLow,
double yesterdaysHigh,
double yesterdaysLow,
double yesterdaysClose)
Evaluates the Directional Movement Indicator (DMI). |
int |
dmiSignal(double[] pdi,
double[] mdi,
int method)
Evaluates what is know as the Directional Motion Indicator (MDI) Trading Signal. |
double |
minusDirectionalMovement(double trueRange,
double minusDirectionalMovement)
Evaluates the Minus Directional Movement Indicator (DMI). |
double |
minusDirectionalMovement(double todaysHigh,
double todaysLow,
double yesterdaysHigh,
double yesterdaysLow)
Evaluates the Minus Directional Movement (MDM). |
double |
minusDirectionalMovement(double todaysHigh,
double todaysLow,
double yesterdaysHigh,
double yesterdaysLow,
double yesterdaysClose)
Evaluates the Minus Directional Movement Indicator (DMI). |
double |
plusDirectionalMovement(double trueRange,
double positiveDirectionalMovement)
Calculates the Plus Directional Movement Indicator (DMI) of todays price action. |
double |
plusDirectionalMovement(double todaysHigh,
double todaysLow,
double yesterdaysHigh,
double yesterdaysLow,
double yesterdaysClose)
Evaluates the Plus Directional Movement Indicator (DMI). |
double |
positiveDirectionalMovement(double todaysHigh,
double todaysLow,
double yesterdaysHigh,
double yesterdaysLow)
Evaluates the Positive Directional Movement (PDM). |
double |
trueRange(double todaysHigh,
double todaysLow,
double yesterdaysClose)
Finds the True Range (TR) of a traded asset today. |
double |
wilderAverageDirectionalMotion(double todaysHigh,
double todaysLow,
double yesterdaysHigh,
double yesterdaysLow,
double yesterdaysClose,
double nDaysHigh,
double nDaysLow,
double yesterdaysNDaysHigh,
double yesterdaysNDaysLow,
double yesterdaysNDaysClose)
Evaluates the Average Directional Movement Index Rating (ADXR), which is a component of the Directional Movement System developed by Welles Wilder. |
| Methods inherited from interface javax.ejb.EJBObject |
getEJBHome, getHandle, getPrimaryKey, isIdentical, remove |
| Method Detail |
public int classifyMovements(double todaysHigh,
double todaysLow,
double yesterdaysHigh,
double yesterdaysLow)
throws RemoteException
This information Will be required by the Directional Movement Indicator (DMI) approach compares the previous days price action to todays price action. In particular, we compare the range of the todays price with yesterdays range of prices and classify the price dynamics according to the following categories:
This method we return a different integer depending on the classification of past two days price action. This integers are defined as:
Remarks:
todaysHigh - the highest traded value which the asset under consideration takes during todays market actiontodaysLow - the lowest traded value which the asset under consideration takes during todays market actionyesterdaysHigh - the highest traded value which the asset under consideration takes during yesterdays market actionyesterdaysLow - the lowest traded value which the asset under consideration takes during yesterdays market action
IllegalArgumentException - thrown if any of the parameters todaysHigh,
todaysLow, yesterdaysHigh or yesterdaysLow is a strictly negative number.
RemoteException
public double positiveDirectionalMovement(double todaysHigh,
double todaysLow,
double yesterdaysHigh,
double yesterdaysLow)
throws RemoteException
todaysHigh - the highest traded value which the asset under consideration takes during todays market actiontodaysLow - the lowest traded value which the asset under consideration takes during todays market actionyesterdaysHigh - the highest traded value which the asset under consideration takes during yesterdays market actionyesterdaysLow - the lowest traded value which the asset under consideration takes during yesterdays market action
IllegalArgumentException - thrown if any of the parameters todaysHigh, todaysLow,
yesterdaysHigh or yesterdaysLow is a strictly negative number.
RemoteException
public double minusDirectionalMovement(double todaysHigh,
double todaysLow,
double yesterdaysHigh,
double yesterdaysLow)
throws RemoteException
todaysHigh - the highest traded value which the asset under consideration takes during todays market actiontodaysLow - the lowest traded value which the asset under consideration takes during todays market actionyesterdaysHigh - the highest traded value which the asset under consideration takes during yesterdays market actionyesterdaysLow - the lowest traded value which the asset under consideration takes during yesterdays market action
IllegalArgumentException - thrown if any of the parameters todaysHigh, todaysLow,
yesterdaysHigh or yesterdaysLow is a strictly negative number.
RemoteException
public double trueRange(double todaysHigh,
double todaysLow,
double yesterdaysClose)
throws RemoteException
todaysHigh - the highest traded value of the asset todaytodaysLow - the lowest traded value of the asset todayyesterdaysClose - the close price of the asset the preceding day
IllegalArgumentException - thrown if any of the parameters todaysHigh, todaysLow
or yesterdaysClose is a strictly negative number.
RemoteExceptionaverageDailyTrueRange
public double averageDailyTrueRange(double[] trueRange)
throws RemoteException
trueRange - an array of (positive) doubles of length x, where the first element is the true range on the last trading session, the second value of the true range range on the previous trading session and so on.
IllegalArgumentException - thrown if any element of the array is strictly negative.
The elements of the trueRange array cannot be strictly negative since they represent the
(positive) true range's (TRs) of an asset over a period.
RemoteExceptiontrueRange
public double plusDirectionalMovement(double trueRange,
double positiveDirectionalMovement)
throws RemoteException
trueRange - the true range of the Current Bar (i.e. todays)positiveDirectionalMovement - the positive directional movement of the asset over the past day
IllegalArgumentException - thrown if the trueRange is not positive.
RemoteExceptiontrueRange,
positiveDirectionalMovement
public double minusDirectionalMovement(double trueRange,
double minusDirectionalMovement)
throws RemoteException
trueRange - the true range of the Current Bar (i.e. todays)minusDirectionalMovement - the minus directional movement of the asset over the past day
IllegalArgumentException - thrown if the trueRange is not positive.
RemoteExceptiontrueRange,
minusDirectionalMovement
public double plusDirectionalMovement(double todaysHigh,
double todaysLow,
double yesterdaysHigh,
double yesterdaysLow,
double yesterdaysClose)
throws RemoteException
todaysHigh - the highest traded value which the asset under consideration takes during todays market actiontodaysLow - the lowest traded value which the asset under consideration takes during todays market actionyesterdaysHigh - the highest traded value which the asset under consideration takes during yesterdays market actionyesterdaysLow - the lowest traded value which the asset under consideration takes during yesterdays market actionyesterdaysClose - the close price of the asset the preceding day
IllegalArgumentException - thrown if any of the parameters todaysHigh, todaysLow,
yesterdaysHigh, yesterdaysLow or yesterdaysClose is not a positive number.
RemoteException
public double minusDirectionalMovement(double todaysHigh,
double todaysLow,
double yesterdaysHigh,
double yesterdaysLow,
double yesterdaysClose)
throws RemoteException
todaysHigh - the highest traded value which the asset under consideration takes during todays market actiontodaysLow - the lowest traded value which the asset under consideration takes during todays market actionyesterdaysHigh - the highest traded value which the asset under consideration takes during yesterdays market actionyesterdaysLow - the lowest traded value which the asset under consideration takes during yesterdays market actionyesterdaysClose - the close price of the asset the preceding day
IllegalArgumentException - thrown if any of the parameters todaysHigh, todaysLow,
yesterdaysHigh, yesterdaysLow or yesterdaysClose is not a positive number.
RemoteException
public double directionalMotion(double todaysHigh,
double todaysLow,
double yesterdaysHigh,
double yesterdaysLow,
double yesterdaysClose)
throws RemoteException
The Directional Movement Indicator (DMI) can be summarized by the following
formula:
((PDM - MDM)/(PDP + MDM)) * 100,
where,
Interpretation
The Directional movement indicator has a range of [0,100], where to higher the value returned the
stronger the trend is said to be. If a trend is reliable then the directional lines
(PDM and MDM) will diverge and the indicator will increase. If on the other hand a trend starts
to fail and price whip-saws (for example with price is within a trading range) the difference
between the direction lines will decrease and the overall index will decrease.
todaysHigh - the highest traded value which the asset under consideration takes during todays market actiontodaysLow - the lowest traded value which the asset under consideration takes during todays market actionyesterdaysHigh - the highest traded value which the asset under consideration takes during yesterdays market actionyesterdaysLow - the lowest traded value which the asset under consideration takes during yesterdays market actionyesterdaysClose - the closing price of the asset the preceding day
IllegalArgumentException - thrown if any of the parameters todaysHigh, todaysLow,
yesterdaysHigh, yesterdaysLow or yesterdaysClose is not a positive number.
RemoteExceptionplusDirectionalMovement,
minusDirectionalMovement
public double directionalMotion(double plusDirectionalMovement,
double minusDirectionalMovement)
throws RemoteException
The directional movement indicator can be summarized by the following formula:
((up - down)/(up+down)) * 100,
where,
Interpretation
The directional indicator has a range of [0,100], where to higher the value returned the
stronger the trend is said to be. If a trend is reliable then the smoothed directional lines
(PDM and MDM) will diverge and the indicator will increase. If on the other hand a trend starts
to fail and price whip-saws (for example with price is within a trading range) the difference
between the smoothed direction lines will decrease and the overall index will decrease.
plusDirectionalMovement - the value of the Plus Directional Movement indicatorminusDirectionalMovement - the value of the Minus Directional Movement indicator
RemoteExceptionplusDirectionalMovement,
minusDirectionalMovement
public int dmiSignal(double[] pdi,
double[] mdi,
int method)
throws ReferencedServiceException,
RemoteException
At its simplest level to DMI system states that when the PDI crosses above the MDI a buy signal is generated and when the MDI crosses above the PMI then a sell signal is generated. This however may generate an excessive number of signals and hence we offer the possibility to smooth out these indicators according to a moving average which will help to reduce to sensitivity of the trading system.
Advantages to this Approach
This trading approach will reveal a trend before it is detected by most market participants. Once the trend becomes more widely recognized other market participants will tend to buy the tend and hence re-enforcing the trend dynamics. Hence the DMI system offers a good risk/reward trend following system.
pdi - an array of the previous values of the positive directional indicator (PDI), where the length of the array is ONE MORE than the number of periods used within the moving average. Where pdi[0] is the latest value of the PDI indicator, pdi[1] is the previous value and so on.mdi - an array of the previous values of the minus directional indicator (MDI), where the length of the array is ONE MORE than the number of periods used within the moving average. Where mdi[0] is the latest value of the MDI indicator, mdi[0] is the previous value and so on.method - an integer which determines the method used in the evaluation of the moving average in accordance with the following key: -1, 0, or 1; according to
whether a sell, no action or buy signal is generated.
ReferencedServiceException
RemoteException
public double wilderAverageDirectionalMotion(double todaysHigh,
double todaysLow,
double yesterdaysHigh,
double yesterdaysLow,
double yesterdaysClose,
double nDaysHigh,
double nDaysLow,
double yesterdaysNDaysHigh,
double yesterdaysNDaysLow,
double yesterdaysNDaysClose)
throws RemoteException
Originally Welles Wilder used the ADXR indicator to determine whether a trend was sufficiently strong enough in order to apply a trend following system. The rule was to only apply a trend following system when the ADXR was between 20 and 25. The ADMR can also be used within a system which uses the Directional Movement Indicator (for example Welles, Directional Movement System) which will result in trading signals being more infrequently generated.
This indicator is given by the following formula:
ADXR = (directionalMotion(today) + directionalMotion(n-days ago))/2
where directionalMotion(today) in the value of the Directional Motion Index (above) today and directionalMotion (n-days ago) is the Directional Motion Index of the asset under consideration n-days ago.
todaysHigh - the highest traded value which the asset under consideration takes during todays market actiontodaysLow - the lowest traded value which the asset under consideration takes during todays market actionyesterdaysHigh - the highest traded value which the asset under consideration takes during yesterdays market actionyesterdaysLow - the lowest traded value which the asset under consideration takes during yesterdays market actionyesterdaysClose - the closing price of the asset the preceding daynDaysHigh - the highest traded value which the asset under consideration takes during the trading period n-days previouslynDaysLow - the lowest traded value which the asset under consideration takes during the trading period n-days previouslyyesterdaysNDaysHigh - the highest traded value which the asset under consideration takes during the trading period (n+1)-days previouslyyesterdaysNDaysLow - the lowest traded value which the asset under consideration takes during the trading period (n+1)-days previouslyyesterdaysNDaysClose - the closing price of the asset on the trading period (n+1) days ago
IllegalArgumentException - thrown if any of the methods double parameters is not
a positive number.
RemoteException
|
WebCab Technical Analysis (J2EE Edition) |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||