From 74482ffeb51aa71f172f6317bec4ea3a8e4eb32e Mon Sep 17 00:00:00 2001 From: Toh4iem9 Date: Fri, 22 May 2026 00:34:22 +0200 Subject: [PATCH] new files added --- .../DMIStochastic_Adaptive_Pro.md | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 Indicators/MyIndicators/DMIStochastic_Adaptive_Pro.md diff --git a/Indicators/MyIndicators/DMIStochastic_Adaptive_Pro.md b/Indicators/MyIndicators/DMIStochastic_Adaptive_Pro.md new file mode 100644 index 0000000..fb1efe4 --- /dev/null +++ b/Indicators/MyIndicators/DMIStochastic_Adaptive_Pro.md @@ -0,0 +1,97 @@ +# DMI Stochastic Adaptive Professional + +## 1. Summary (Introduction) + +The `DMIStochastic_Adaptive_Pro` is a cutting-edge hybrid oscillator that merges two highly effective quantitative concepts: Barbara Star's **DMI Stochastic** and Frank Key's **Variable-Length (Adaptive) Stochastic**. + +While a standard Stochastic analyzes pure price, the DMI Stochastic analyzes the *momentum of directional pressure* by calculating a Stochastic on the DMI (+DI / -DI) values. However, like all fixed-period oscillators, it can still suffer from getting "stuck" in overbought or oversold zones during relentless, sustained momentum. + +This indicator solves that problem by introducing **Kaufman's Efficiency Ratio (ER)**. The revolutionary aspect of this specific implementation is that the ER is calculated **directly on the DMI Oscillator line, rather than on the price**. + +* When directional momentum is moving in a smooth, sustained trend (High ER on the DMI line), the indicator automatically **lengthens its Stochastic lookback period**. This prevents premature exhaustion signals and helps the trader ride the momentum. +* When directional momentum is choppy or shifting rapidly (Low ER on the DMI line), it **shortens its period**, becoming highly responsive to immediate momentum reversals. + +## 2. Mathematical Foundations and Calculation Logic + +The calculation is an advanced, multi-stage pipeline that generates directional movement, creates an oscillator, analyzes its efficiency, and applies a dynamic stochastic formula. + +### Required Components + +* **DMI Period:** The lookback period for the base +DI and -DI calculation. +* **ER Period:** The lookback period for calculating the Efficiency Ratio of the DMI Oscillator. +* **Min/Max Stochastic Periods:** The dynamic range boundaries for the Stochastic lookback. +* **Smoothing Periods:** Slowing Period and %D Period for the final signal lines. + +### Calculation Steps (Algorithm) + +1. **Calculate Directional Indicators (+DI, -DI):** + Raw Directional Movement (+DM, -DM) and True Range (TR) are calculated and smoothed using Wilder's method over the `DMI Period`. + $\text{+DI}_i = 100 \times \frac{\text{Smoothed +DM}_i}{\text{Smoothed TR}_i}$ + $\text{-DI}_i = 100 \times \frac{\text{Smoothed -DM}_i}{\text{Smoothed TR}_i}$ + +2. **Create the DMI Oscillator:** + An oscillator is generated from the difference between the directional indicators (Default formula shown): + $\text{DMI Oscillator}_i = \text{+DI}_i - \text{-DI}_i$ + +3. **Calculate the Efficiency Ratio (ER) on the DMI Oscillator:** + The ER measures the signal-to-noise ratio of the momentum itself over the `ER Period` (N). + $\text{ER}_t = \frac{\text{Abs}(\text{DMI Osc}_t - \text{DMI Osc}_{t-N})}{\sum_{i=0}^{N-1} \text{Abs}(\text{DMI Osc}_{t-i} - \text{DMI Osc}_{t-i-1})}$ + +4. **Calculate the Adaptive Stochastic Period (NSP):** + The dynamic lookback period is calculated for the current bar based on the ER. + $\text{NSP}_t = \text{Integer}[(\text{ER}_t \times (\text{MaxStoch} - \text{MinStoch})) + \text{MinStoch}]$ + +5. **Apply the Adaptive Stochastic Formula to the Momentum:** + The Stochastic logic is applied to the `DMI Oscillator` using the dynamic `NSP` lookback. + * **Calculate Raw %K:** + $\text{Highest High} = \text{Highest DMI Osc value over the last NSP}_t \text{ bars}$ + $\text{Lowest Low} = \text{Lowest DMI Osc value over the last NSP}_t \text{ bars}$ + $\text{Raw \%K}_t = 100 \times \frac{\text{DMI Osc}_t - \text{Lowest Low}}{\text{Highest High} - \text{Lowest Low}}$ + * **Calculate Slow %K and %D:** The `Raw %K` is smoothed using the selected moving average types to output the final %K (Main) and %D (Signal) lines. + +## 3. MQL5 Implementation Details + +Our implementation employs a highly optimized, engine-based architecture designed for maximum performance in MetaTrader 5. + +* **Modular "Engine" Architecture (`DMIStochastic_Adaptive_Calculator.mqh`):** + The main calculator acts as a coordinator for three distinct mathematical engines: + 1. `DMI_Engine.mqh`: Handles the heavy lifting of the Wilder smoothing and +DI/-DI generation. + 2. `MovingAverage_Engine.mqh` (Instance 1): Handles the advanced smoothing for the Slow %K line. + 3. `MovingAverage_Engine.mqh` (Instance 2): Handles the advanced smoothing for the %D signal line. + +* **Optimized Incremental Calculation (O(1) Standard):** + The indicator processes only new data (using `prev_calculated`). The dynamic lookback loop (which scales via `NSP`) safely navigates the internally buffered `DMI Oscillator` array without forcing a full history recalculation, ensuring minimal CPU load even with complex adaptive logic. + +* **Seamless Heikin Ashi Integration:** + Through object-oriented inheritance (`CDMIStochasticAdaptiveCalculator_HA`), the indicator can transparently switch its underlying data source to Heikin Ashi candles by overriding the data preparation layer in the `DMI_Engine`. + +## 4. Parameters + +* **DMI Settings:** + * `InpCandleSource`: Base price data source (`CANDLE_STANDARD` or `CANDLE_HEIKIN_ASHI`). + * `InpOscType`: Formula for the DMI Oscillator (`OSC_PDI_MINUS_NDI` or `OSC_NDI_MINUS_PDI`). + * `InpDMIPeriod`: Lookback period for the underlying DMI components. (Default: `10`). + +* **Adaptive Stochastic Settings:** + * `InpErPeriod`: The lookback period for the Kaufman Efficiency Ratio. (Default: `10`). + * `InpMinStochPeriod`: The shortest possible lookback period for the Stochastic. (Default: `5`). + * `InpMaxStochPeriod`: The longest possible lookback period for the Stochastic. (Default: `30`). + +* **Smoothing Settings:** + * `InpSlowingPeriod`: Smoothing period for the main %K line. (Default: `3`). + * `InpSlowingMAType`: Moving Average algorithm for the %K line. (Default: `SMA`). + * `InpDPeriod`: Smoothing period for the signal %D line. (Default: `3`). + * `InpDMAType`: Moving Average algorithm for the %D line. (Default: `SMA`). + +## 5. Usage and Interpretation + +The DMI Stochastic Adaptive should be interpreted as an **intelligent momentum oscillator**. It solves the false signals generated during strong trends. + +* **During Sustained Momentum (High ER):** + When bullish or bearish pressure is relentless, the internal period lengthens. The indicator will purposely *avoid* hitting the 80 or 20 extremes too early. If you are in a trend-following trade, this behavior signals that the momentum is stable and you should stay in the trade. + +* **During Choppy/Reversing Momentum (Low ER):** + When directional pressure stalls or becomes erratic, the internal period shortens drastically. The indicator becomes highly sensitive. In this state, a push into the overbought (>80) or oversold (<20) territory is a strong signal of immediate momentum exhaustion. + +* **Trading Signals:** + * **Exhaustion Reversals:** Look for standard %K and %D line crossovers *specifically* when the indicator has reached the extreme zones (<20 or >80). Because the indicator is adaptive, these extremes carry much more mathematical weight than in a standard Stochastic.