The premium and discount ict indicator marks the candle that launched an impulse move. Two buffers hold those levels on the price chart, Bullish OB and Bearish OB. An average true range filter decides what counts as an impulse in the first place. Traders who work with order-block ideas get a mechanical version of that first step.
This build ships as premium-discount-indicator-forexmt4systems.ex4 for MT4 and premium-discount-indicator-forexmt4systems.ex5 for MT5; the screenshots below come from EURUSD H1.
| Platforms | MT4 (.ex4) + MT5 (.ex5) |
|---|---|
| Chart window | Main price chart |
| Plots | 2: Bullish OB, Bearish OB |
| Alerts | popup, push notification, email, sound |
| Inputs | 8 |
What the Premium and Discount ICT Indicator draws on the chart
Bullish OB carries the violet levels. Each one sits at the low of a down candle that an up move followed. Bearish OB carries the turquoise levels, and each of those sits at the high of an up candle just before a drop. On every other bar both buffers stay empty.
The marks land on the chart itself, never in a pane below. They point one bar behind the impulse, because the code tags the origin candle rather than the candle that made the move. Nothing else prints: no rectangles, no panel and no dashboard.
- Bullish OB: plot, violet
- Bearish OB: plot, turquoise

How the Premium and Discount ICT Indicator calculates its values
The volatility filter
The code builds its own average true range. It adds up true range over AtrPeriod bars, then divides by that count. True range itself takes the widest of three spans: the bar range, and each extreme measured against the previous close. So the impulse test scales with whatever the symbol is doing right now.
The impulse test
Move equals this close minus the previous close. The code weighs that move against MoveAtrMultiplier times the average range. A move above the threshold with a red candle behind it flags the bullish case. A move below the negative threshold with a green candle behind it flags the bearish case. Both conditions have to hold on the same pair of bars.
Where the level lands
The buffer write goes to the previous bar, not the current one. For the bullish case it stores that bar’s low. For the bearish case it stores that bar’s high. So the marker always points at the origin candle rather than at the breakout.
How to read the signals
Treat each mark as a location. A violet Bullish OB level shows where buyers took control hard enough to snap the range. Many traders then watch for price to return to that low. A turquoise Bearish OB level works the same way above price.
Fresh levels carry more weight than old ones. Once price cuts clean through a mark and keeps going, that level has done its job. Cluster the marks with your own structure read before acting. The build supplies locations, and you supply the context.
Alert channels in this build: popup, push notification, email and sound, one message per closed bar.
EnableAlerts gates the alert block. EnablePopup, EnablePushNotify, EnableEmail and EnableSound choose between popup, mobile push, email and sound output.
Every Premium and Discount ICT Indicator input
Core settings
| Setting | What it does | Default |
|---|---|---|
MoveAtrMultiplier |
MoveAtrMultiplier (default 1.2) sets how far a close must travel against the average range to count as an impulse. Raise it and fewer marks survive. | 1.2 |
AtrPeriod |
AtrPeriod (default 28) is the number of bars in the volatility window. A shorter window reacts faster to a change of regime. | 28 |
Alert settings
| Setting | What it does | Default |
|---|---|---|
EnableAlerts |
(see inputs panel) | on |
EnablePopup |
(see inputs panel) | on |
EnablePushNotify |
(see inputs panel) | off |
EnableEmail |
(see inputs panel) | off |
EnableSound |
(see inputs panel) | off |
SoundFile |
(see inputs panel) | alert.wav |

Settings that fit your chart
Look at the screenshot and you see EURUSD on H1. There the shipped volatility window covers a little more than a full trading day. Majors, gold and index CFDs all suit the method, because the filter scales to each symbol’s own range. On M1 and M5 the marks multiply and most of them mean very little. From H1 up to daily the count stays readable.
When the Premium and Discount ICT Indicator fails
The name promises a premium and discount read, and the code delivers something else. There is no dealing range, no equilibrium level and no split of that range into halves. What you get instead is an impulse-origin marker. Judge the tool on that job rather than on its title.
One wide candle can fool the filter. News prints an outsized bar, the average range has not caught up yet, and the test passes on noise. The mark then sits under a spike that price never revisits.
Every level appears a bar late by design. The code needs the impulse close before it can tag the origin candle behind it. So price may already sit far away when the mark shows up.
The alert inputs sit in the panel, yet this build sends no automatic message. Watch the chart, or set a platform price alert on the levels you care about.
Copy premium-discount-indicator-forexmt4systems.ex4 into MQL4/Indicators and premium-discount-indicator-forexmt4systems.ex5 into MQL5/Indicators, then restart the terminal and drag the Premium and Discount ICT Indicator onto a chart. The step-by-step guide with screenshots is at how to install MT4 and MT5 indicators.
Related on forexmt4systems.com: ICT Style Strategy.
Download the Premium and Discount ICT Indicator for MT4 and MT5
The zip premium-discount-indicator-forexmt4systems.zip holds premium-discount-indicator-forexmt4systems.ex4, premium-discount-indicator-forexmt4systems.ex5 and a short README, compiled files only. Enter your email below and the download link arrives in your inbox.
Download this indicator free
Enter your email and the file is yours. You also get the full MT4 and MT5 library.
FAQ
Does AtrPeriod need a different value on gold?
Not usually. The window scales itself to whatever range the symbol prints, so gold and a major pair both get a fair test. What does change is bar count per session. On a fast symbol some traders shorten the window so the reference tracks the current session more closely.
What exactly does a turquoise Bearish OB level point at?
It points at the high of the last up candle before an impulse down. The code checks that the previous bar closed above its open. Then it stores that bar’s high in the Bearish OB buffer. So the level always sits one bar to the left of the candle that made the move.
Why does MoveAtrMultiplier work better than a fixed pip threshold?
Pip thresholds break the moment you switch symbol or session. MoveAtrMultiplier weighs the close-to-close move against the current average range instead, so gold and a major pair face the same relative test. Raise it for fewer and cleaner marks. Lower it when the chart stays empty for days.
Does this build draw a premium and discount equilibrium level?
It does not. The source holds two buffers, Bullish OB and Bearish OB, and nothing more. It never measures a dealing range or halves it. If you want the classic reading, draw the range yourself and use these marks as impulse reference points inside it.
Are results guaranteed?
No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Premium and Discount ICT Indicator as one input. Always backtest before trading live.
Category: this is part of our Smart Money collection. Browse more Smart Money for MetaTrader, or explore every MT4 indicator and MT5 indicator on the site.
External references
- For background on this concept, see Minority discount on Wikipedia.
- For broader market context, see Candlesticks And Traditional Chart Analysis at StockCharts ChartSchool.
