Impulse Strength Gauge
- Indicators
- Version: 1.0
- Activations: 5
# Impulse Strength Gauge - Movement weighted by volume
*Category: Momentum | Difficulty: intermediate | Window: separate window below the chart | Markets: Universal (Forex, indices, commodities, crypto, stocks) | Suggested timeframes: M5, M15, M30, H1, H4*
## Short description
> Weights every bar by combining body size in ATR units with volume relative to its average, then accumulates the contributions. It separates wide but empty bars from genuinely supported impulses.
### Overview
A wide bullish candle with below average volume is a weak thrust dressed as strength: few participants moved price during thin liquidity, and the move almost always fades. The same candle with triple volume tells the opposite story. Impulse Strength Gauge explicitly combines both dimensions: it measures each candle body in ATR units, so as to know how much it truly moved relative to current normality, and multiplies it by the ratio between that bar volume and the recent average volume. The contributions of the last N bars are summed, producing an accumulated pressure measure that grows when supported impulses follow one another in the same direction and cancels out when they offset.
### How the calculation works
1. For each bar the body, the difference between close and open, is computed and divided by the ATR over InpAtrPeriod bars.
2. The bar volume is divided by its own average over InpVolPeriod bars, giving a dimensionless relative volume.
3. Relative volume is capped at InpMaxVolumeRatio, so that a single anomalous bar cannot dominate the whole sum.
4. The bar contribution is the product of normalised body and relative volume: positive for bullish candles and negative for bearish ones.
5. The rolling sum of contributions over the last InpPeriod bars is the accumulated pressure shown by the histogram.
6. If real volume is unavailable, which is common with forex brokers, the indicator automatically falls back to tick volume.
### How to use it
- Use it to validate breakouts: a breakout with accumulated pressure beyond the threshold is supported, the same breakout with pressure near zero is suspect.
- A histogram growing while price stays flat indicates accumulation: someone is absorbing without moving the market.
- A histogram contracting while price keeps rising is a classic sign of fading participation.
- On markets where real volume is available, such as futures and equities, enabling InpUseRealVolume noticeably improves signal quality.
- Do not use it during low liquidity hours: relative volume becomes unstable and produces exaggerated contributions.
### Who it is for and on which timeframes
It targets breakout and continuation traders who want a participation filter ahead of entry. It performs best from M5 to H1, where volume variations between bars are wide and informative. On D1 relative volume varies less and the contribution of the second factor shrinks. It is particularly effective on futures, indices and equities, where traded volume is real data rather than a mere tick count.
### Practical example of reading a signal
On DAX40 M15 price breaks the morning high. The pressure histogram is barely above zero and grey: the break happened on modest bodies and below average volume. The trader stays out. Twenty minutes later price falls back below the broken level, as typical of false breakouts. In the afternoon the same level is broken again, but this time the histogram rises quickly above the threshold and turns green, supported by three candles with double the average volume. The second break is traded, with a stop below the level, and price continues.
## Input parameters
| Parameter | Default | Description |
|---|---|---|
| `InpPeriod` | 14 | Number of bars over which pressure is accumulated. Short windows react to every impulse, long windows describe extended accumulation phases. |
| `InpAtrPeriod` | 20 | ATR period normalising the candle bodies. |
| `InpVolPeriod` | 50 | Volume average window defining what counts as normal volume for this instrument in this phase. |
| `InpSignalPeriod` | 7 | Period of the signal average overlaid on the histogram. |
| `InpStrongLevel` | 3.00 | Accumulated pressure beyond which the impulse is considered strong and the histogram is coloured. |
| `InpUseRealVolume` | false | With true, real volume is used when available; with false, or in its absence, tick volume is used. |
| `InpMaxVolumeRatio` | 5.00 | Cap on the weight of a single bar. It prevents an isolated volume spike, for instance at the open, from dominating the sum. |
## Advantages / strengths
- It combines two independent dimensions, size and participation, that price-only oscillators ignore entirely.
- The cap on relative volume prevents a single anomalous bar from distorting the reading, a common flaw of volume indicators.
- It automatically falls back to tick volume when real volume is missing, so it works on forex brokers too.
- No repaint, and ATR normalisation that makes it usable on any instrument.
## Limitations and warnings
- On forex brokers tick volume is only an approximation of real volume and varies noticeably between brokers.
- It uses the candle body and ignores wicks: a bar with long tails and a small body contributes little even if it moved a lot.
- In low liquidity sessions the volume ratio becomes unstable and produces unreliable contributions.
- The strength threshold depends on the accumulation window: when changing InpPeriod, InpStrongLevel must be revised too.
**No repaint:** values printed on a closed bar are never modified afterwards.
**Disclaimer.** This product is a technical analysis tool, not an automated trading system, and it offers no profit guarantee whatsoever. Financial markets carry the risk of total loss of the invested capital. Past performance is not indicative of future results. Every signal must be confirmed with your own analysis, a money management plan and prior testing on a demo account. The author is not responsible for trading decisions taken on the basis of this indicator.
## Suggested tags / keywords for MQL5
`volume`, `momentum`, `impulse`, `breakout filter`, `accumulation`, `participation`, `no repaint`, `atr`
