Files
mql5/Indicators/MyIndicators/PivotPoints_Pro.md
T
2026-08-22 18:09:00 +02:00

197 lines
10 KiB
Markdown

# Pivot Points Pro (v3.30) *Professional Quantitative Multi-Timeframe Support & Resistance Suite*
---
## 1. Summary (Introduction)
**Pivot Points Pro** is a high-performance, institutional-grade support and resistance indicator developed for MetaTrader 5 (2026 Edition). Designed specifically for active technical analysts and systematic traders, it eliminates the visual noise of historical lines by rendering levels **strictly for the active period** while extending them continuously across the entire chart workspace.
### Key Innovations in Version 3.30
* **Native Full-Workspace & Chart Shift Support:** Utilizes a zero-latency vector rendering engine (`OBJPROP_RAY_RIGHT`) that anchors lines to the exact period open (e.g., 00:00) and extends them seamlessly across current price action to the far-right price scale.
* **Dual-Layer Architecture:** Combines hardware-accelerated chart objects for flawless visuals with synchronized indicator buffers (`DRAW_NONE`) to ensure 100% compatibility with MetaTrader 5 **Data Window (`Ctrl+D`)** and automated Expert Advisors (`iCustom`).
* **Multi-Timeframe (MTF) Engine:** Real-time synchronization allowing Daily, Weekly, or Monthly pivots to be displayed on intraday timeframes (M1, M5, M15, H1).
* **5 Institutional Formula Modes:** Classic Floor, Fibonacci, Woodie, Camarilla, and Tom DeMark.
* **Heikin Ashi Filtered Source:** Dynamic transformation of OHLC prices into synthetic Heikin Ashi data to eliminate high-frequency false breakouts.
---
## 2. Mathematical Foundations
Pivot Points are computed using the High ($H$), Low ($L$), and Close ($C$) prices from the **previous completed** higher-timeframe bar. The Range is defined as:
$$\text{Range} = H - L$$
### 2.1. Calculation Modes
#### 1. Classic (Floor Trader)
The quintessential standard for intraday equilibrium and reaction bands:
$$PP = \frac{H + L + C}{3}$$
$$R1 = 2 \cdot PP - L \quad\quad S1 = 2 \cdot PP - H$$
$$R2 = PP + \text{Range} \quad\quad S2 = PP - \text{Range}$$
$$R3 = H + 2 \cdot (PP - L) \quad\quad S3 = L - 2 \cdot (H - PP)$$
#### 2. Fibonacci
Projects golden ratio intervals around the central equilibrium:
$$PP = \frac{H + L + C}{3}$$
$$R1 = PP + 0.382 \cdot \text{Range} \quad\quad S1 = PP - 0.382 \cdot \text{Range}$$
$$R2 = PP + 0.618 \cdot \text{Range} \quad\quad S2 = PP - 0.618 \cdot \text{Range}$$
$$R3 = PP + 1.000 \cdot \text{Range} \quad\quad S3 = PP - 1.000 \cdot \text{Range}$$
#### 3. Woodie
Weights the settlement price more heavily to account for late-session momentum:
$$PP = \frac{H + L + 2 \cdot C}{4}$$
$$R1 = 2 \cdot PP - L \quad\quad S1 = 2 \cdot PP - H$$
$$R2 = PP + \text{Range} \quad\quad S2 = PP - \text{Range}$$
$$R3 = H + 2 \cdot (PP - L) \quad\quad S3 = L - 2 \cdot (H - PP)$$
#### 4. Camarilla
Specifically calibrated for mean-reverting range scalping and explosive breakout triggers:
$$PP = \frac{H + L + C}{3}$$
$$R1 = C + \text{Range} \cdot \frac{1.1}{12} \quad\quad S1 = C - \text{Range} \cdot \frac{1.1}{12}$$
$$R2 = C + \text{Range} \cdot \frac{1.1}{6} \quad\quad S2 = C - \text{Range} \cdot \frac{1.1}{6}$$
$$R3 = C + \text{Range} \cdot \frac{1.1}{4} \quad\quad S3 = C - \text{Range} \cdot \frac{1.1}{4}$$
#### 5. Tom DeMark
A conditional predictive model based on open-close directional pressure:
$$\text{If } C < O \implies X = H + 2 \cdot L + C$$
$$\text{If } C > O \implies X = 2 \cdot H + L + C$$
$$\text{If } C = O \implies X = H + L + 2 \cdot C$$
$$PP = \frac{X}{4}$$
$$R1 = \frac{X}{2} - L \quad\quad S1 = \frac{X}{2} - H$$
---
### 2.2. Median Equilibrium Levels (Mid-Points)
When enabled, arithmetic midpoints are calculated to provide intermediate micro-structure targets:
$$M_1 = \frac{S1 + S2}{2}, \quad M_2 = \frac{S1 + PP}{2}, \quad M_3 = \frac{PP + R1}{2}$$
$$M_4 = \frac{R1 + R2}{2}, \quad M_5 = \frac{R2 + R3}{2}, \quad M_6 = \frac{S2 + S3}{2}$$
---
### 2.3. Heikin Ashi Synthetic Price Model
When `InpSourceType = PIVOT_SRC_HEIKIN_ASHI`, prices are filtered prior to level calculations:
$$C_{\text{ha}} = \frac{O + H + L + C}{4}$$
$$O_{\text{ha}} = \frac{O_{\text{prev}} + C_{\text{prev}}}{2}$$
$$H_{\text{ha}} = \max(H, \max(O_{\text{ha}}, C_{\text{ha}}))$$
$$L_{\text{ha}} = \min(L, \min(O_{\text{ha}}, C_{\text{ha}}))$$
---
## 3. MQL5 Architecture & Technical Implementation
```text
┌────────────────────────────────────────────────────────┐
│ PivotPoint_Calculator.mqh │
│ (Core Math Engine - Stateful O(1) Cache Memory) │
└──────────────────────────┬─────────────────────────────┘
│ Computes Levels & Period Start
┌────────────────────────────────────────────────────────┐
│ PivotPoints_Pro.mq5 │
│ (Thin Wrapper - Vector Ray Engine & Data Buffers) │
├──────────────────────────┬─────────────────────────────┤
│ Buffer Layer (13) │ Extended Object Engine │
│ • Data Window (Ctrl+D) │ • Ray Right Vector Lines │
│ • iCustom EA Ready │ • Future Shift Labels │
└──────────────────────────┴─────────────────────────────┘
```
1. **Stateful HTF Caching ($O(1)$ Efficiency):** Calculations run only once when a new HTF session bar opens. Subsequent ticks retrieve levels from cached memory.
2. **Extended Ray Objects:** Utilizes `OBJ_TREND` with `OBJPROP_RAY_RIGHT = true` and `OBJPROP_BACK = true`. This prevents line clipping at the live bar index and fills the Chart Shift workspace cleanly.
3. **Smart Label Engine:** Text labels (`OBJ_TEXT`) automatically float into the forward workspace margin (`InpLabelShift` bars ahead) to avoid obscuring the current price action.
4. **Resource Management:** Safe pointer deletion (`CheckPointer`) and prefix-based object purging (`ObjectsDeleteAll`) prevent ghost objects during symbol, timeframe, or parameter updates.
---
## 4. Parameters Reference
### Timeframe Settings
* `InpTimeframe` (*default: `PERIOD_D1`*): The Higher Timeframe used for calculation. Must be greater than or equal to the current chart timeframe.
### Calculation Settings
* `InpPivotType` (*default: `PIVOT_CLASSIC`*): Formula selection (`PIVOT_CLASSIC`, `PIVOT_FIBONACCI`, `PIVOT_WOODIE`, `PIVOT_CAMARILLA`, `PIVOT_DEMARK`).
* `InpSourceType` (*default: `PIVOT_SRC_STANDARD`*): Price series source (`PIVOT_SRC_STANDARD` or `PIVOT_SRC_HEIKIN_ASHI`).
### Visual Settings - Pivot Point
* `InpColorPP` (*default: `clrGold`*): Color of the central equilibrium level (PP).
* `InpStylePP` (*default: `STYLE_SOLID`*): Line style of the central PP.
* `InpWidthPP` (*default: `2`*): Line thickness of the central PP.
### Visual Settings - Resistance Levels
* `InpColorRes` (*default: `clrDodgerBlue`*): Color applied to R1, R2, and R3.
* `InpStyleRes` (*default: `STYLE_SOLID`*): Line style for resistance lines.
* `InpWidthRes` (*default: `1`*): Line thickness for resistance lines.
### Visual Settings - Support Levels
* `InpColorSup` (*default: `clrFireBrick`*): Color applied to S1, S2, and S3.
* `InpStyleSup` (*default: `STYLE_SOLID`*): Line style for support lines.
* `InpWidthSup` (*default: `1`*): Line thickness for support lines.
### Visual Settings - Medians
* `InpShowMedians` (*default: `true`*): Toggle arithmetic midpoint levels between main pivots.
* `InpColorMed` (*default: `clrSilver`*): Color for median lines.
* `InpStyleMed` (*default: `STYLE_DOT`*): Line style for median lines.
* `InpWidthMed` (*default: `1`*): Line thickness for median lines.
### Labels
* `InpShowLabels` (*default: `true`*): Toggle text identifiers (PP, R1, S1, etc.) on the chart.
* `InpLabelShift` (*default: `8`*): Offset distance (in bars) extending into the forward chart shift space.
* `InpFontSize` (*default: `8`*): Font size of the text identifiers.
---
## 5. Usage & Trading Interpretation
### 5.1. Directional Bias (The Central Pivot)
* **Bullish Bias:** Price established above $PP$. Look for pullbacks toward $PP$ or momentum continuations toward $R1$, $R2$, and $R3$.
* **Bearish Bias:** Price established below $PP$. Look for pullbacks toward $PP$ or momentum continuations toward $S1$, $S2$, and $S3$.
### 5.2. Mean Reversion vs. Momentum Breakout
* **Ranging Markets (Consolidation):** Support levels ($S1, S2$) act as demand pools; resistance levels ($R1, R2$) act as supply caps. Fades from $S1$ toward $PP$ and $R1$ toward $PP$ offer favorable risk-to-reward ratios.
* **Trending Markets (Breakout Expansion):** A decisive candle close beyond $R1$ or $S1$ confirms momentum, shifting the next targets to $R2/R3$ or $S2/S3$.
### 5.3. Role of Median Lines ($M_1 \dots M_6$)
* Medians serve as early take-profit targets or entry-confirmation zones before committing to full structural target levels.
---
## 6. Indicator Buffer Map (For Developers & EA Integration)
| Buffer Index | Name | Formula / Level | Description |
| :---: | :---: | :---: | :--- |
| **0** | `BufferPP` | $PP$ | Central Pivot Point |
| **1** | `BufferR1` | $R1$ | First Resistance Level |
| **2** | `BufferS1` | $S1$ | First Support Level |
| **3** | `BufferR2` | $R2$ | Second Resistance Level |
| **4** | `BufferS2` | $S2$ | Second Support Level |
| **5** | `BufferR3` | $R3$ | Third Resistance Level |
| **6** | `BufferS3` | $S3$ | Third Support Level |
| **7** | `BufferM1` | $(S1 + S2)/2$ | Median Between S1 and S2 |
| **8** | `BufferM2` | $(S1 + PP)/2$ | Median Between S1 and PP |
| **9** | `BufferM3` | $(PP + R1)/2$ | Median Between PP and R1 |
| **10** | `BufferM4` | $(R1 + R2)/2$ | Median Between R1 and R2 |
| **11** | `BufferM5` | $(R2 + R3)/2$ | Median Between R2 and R3 |
| **12** | `BufferM6` | $(S2 + S3)/2$ | Median Between S2 and S3 |
*All buffers return `EMPTY_VALUE` for historical periods outside the active session, maintaining a pristine and deterministic environment for backtesting and automated execution.*