The daily open indicator draws the one level almost every trader can see. Today’s opening price. It then colours the line by which side price is on, and reaches back thirty days so the history reads as a staircase.
This build ships as a compiled .ex4 for MT4 and .ex5 for MT5; the screenshots below come from EURUSD H1.
| Platforms | MT4 (.ex4) + MT5 (.ex5) |
|---|---|
| Chart window | Main price chart |
| Plots | 4: Daily open – price above, Daily open – price below, Cross up, Cross down |
| Alerts | popup, push notification, email, sound |
| Inputs | 43 |
The plots this build puts on screen
`Daily open – price above` runs spring green while the close sits over the level.
`Daily open – price below` runs orange red when it sits under.
`Cross up` uses arrow 233 and `Cross down` uses 234.
Rays mark today’s open plus `InpHistoryDays` `5` earlier ones.
- Daily open – price above: line, medium spring green, width 2
- Daily open – price below: line, orange red, width 2
- Cross up: arrow, lime, width 2, arrow code 233
- Cross down: arrow, red, width 2, arrow code 234

How each value gets built
Every bar carries its own day’s open
The code buckets chart bars into days and stores the opening price of each. A bar from three days ago therefore shows the open from three days ago, which is what makes the staircase.
One value, two colours
Both coloured buffers receive the same number. Only the choice of buffer changes with the side price is on. So the two lines can never disagree about where the level actually sits.
Crosses carry two guards
`InpRequireExtreme` `true` asks the crossing bar to also make a local extreme. `InpMinBarsApart` `8` then blocks another cross on the same side for eight bars. Together they cut forty marks down to a handful.
Making the output useful
Colour tells you the side without reading the price.
`InpDayShiftHours` `0` uses the broker midnight, which rarely matches a session open.
The panel reports distance from the open in pips and in daily range units.
Old opens keep working as reference levels, which is why the rays stay.
Alert channels in this build: popup, push notification, email and sound, one message per closed bar.
`EnableAlerts` sits over four routes and ships true with `EnablePopup`. `EnablePushNotify` reaches a handset, `EnableEmail` sends mail and `EnableSound` plays `SoundFile`. Those three start off. A cross reports once per closed bar.
Every Daily Open Indicator input
Core settings
| Setting | What it does | Default |
|---|---|---|
InpDayShiftHours |
Day boundary shift in hours from the broker midnight. Hours the day boundary shifts from broker midnight, default `0`. | 0 |
InpMergeSunday |
Fold the short Sunday bar forward into Monday. Fold the short Sunday bar into Monday, default `true`. | on |
InpStairDays |
Days the coloured open staircase reaches back over. Days the coloured staircase reaches back, default `30`. | 30 |
InpAtrPeriod |
D1 ATR period behind the distance-in-ATR readout. Daily range period behind the distance readout, default `14`. | 14 |
InpRequireExtreme |
LOCAL-EXTREME gate on a cross bar (was always on). Ask a cross bar to make a local extreme, default `true`. | on |
InpMinBarsApart |
Minimum bars between two crosses on the SAME side. Bars before another cross on the same side, default `8`. | 8 |
InpTagGapPx |
Caption gap in PIXELS (Pattern 17), never in points. | 38 |
InpMaxTags |
Cap on how many recent captions are drawn. | 20 |
InpPriceScalePx |
Right margin owned by the price scale, in pixels. | 62 |
InpOneClickWpx |
Width of the one-click trade panel zone, top-left. | 260 |
InpOneClickHpx |
Height of the one-click trade panel zone, top-left. | 100 |
InpX |
Panel X offset (px). | 14 |
InpY |
Panel Y offset (px) – clears the one-click panel. | 120 |
Display settings: Day boundary
| Setting | What it does | Default |
|---|---|---|
InpHistoryDays |
Previous daily opens drawn as faint rays. Previous opens drawn as faint rays, default `5`. | 5 |
InpMaxBars |
Chart bars scanned while the day buckets are built. | 4000 |
Display settings: Rays
| Setting | What it does | Default |
|---|---|---|
InpShowRays |
Draw the open rays on the chart. | on |
InpShowRayLabels |
Price and distance tag on every ray. | on |
InpTodayColor |
Today’s open ray colour. | gold |
InpHistColor |
Previous days’ open ray colour. | RGB 92,112,140 |
InpRayWidth |
Today’s open ray width. | 2 |
Display settings: Staircase
| Setting | What it does | Default |
|---|---|---|
InpAboveColor |
Open colour while price is ABOVE it. | medium spring green |
InpBelowColor |
Open colour while price is BELOW it. | orange red |
Display settings: Cross signals
| Setting | What it does | Default |
|---|---|---|
InpShowCross |
Arrows when a close crosses the daily open. Draw arrows on a cross through the open, default `true`. | on |
InpArrowOffsetPts |
Arrow distance from the bar in points. Points between an arrow and the bar, default `30`. | 30 |
InpShowTags |
BUY / SELL captions beside the arrows. | on |
InpCapFontSize |
BUY / SELL caption font size. | 9 |
Display settings: Text fencing
| Setting | What it does | Default |
|---|---|---|
InpLabelEdgePadPx |
Padding kept clear at the chart edges, in pixels. | 10 |
InpAvoidPanel |
Keep captions clear of the info panel. | on |
InpBuyColor |
Cross-up arrow and caption colour. | lime |
InpSellColor |
Cross-down arrow and caption colour. | red |
Display settings: Readout panel
| Setting | What it does | Default |
|---|---|---|
InpShowPanel |
Show the daily-open readout panel. Show the daily open readout, default `true`. | on |
InpCorner |
Panel corner (0=UL 1=UR 2=LL 3=LR). | 0 |
InpFontSize |
Panel font size. | 9 |
InpFont |
Panel font (monospaced keeps the columns square). | Consolas |
InpPanelBg |
Panel background colour. | RGB 8,14,28 |
InpBorderColor |
Panel border colour. | deep sky blue |
InpTextColor |
Panel body text colour. | gainsboro |
Alert settings
| Setting | What it does | Default |
|---|---|---|
EnableAlerts |
Master alert switch. | on |
EnablePopup |
Terminal popup alert. | on |
EnablePushNotify |
Push notification to the MetaQuotes ID. | off |
EnableEmail |
E-mail alert (Tools > Options > Email). | off |
EnableSound |
Play a sound file on a cross. | off |
SoundFile |
Sound file in the terminal Sounds folder. | alert.wav |

Which markets and timeframes suit it
The daily open matters most intraday. EURUSD H1 is the reference chart, where twenty-four bars sit between opens. On M5 the staircase steps every two hundred and eighty bars. On daily bars the level and the candle are the same thing.
Where it comes unstuck
Broker midnight is not a session open, so the level can land mid-move.
`InpRequireExtreme` `true` filters hard, which means some genuine crosses go unmarked.
Thirty days of staircase plus five rays is a busy chart on a small screen.
Copy the compiled Daily Open Indicator file into your MQL4/Indicators folder, and the MT5 build into MQL5/Indicators, then restart the terminal and drag it onto a chart. The step-by-step guide with screenshots is at how to install MT4 and MT5 indicators.
Related on forexmt4systems.com: New York Open Strategy.
Background reading on the method behind the Daily Open Indicator: Implied open on Wikipedia, Mcclellan Oscillator at StockCharts ChartSchool.
Download the Daily Open Indicator for MT4 and MT5
The zip holds the compiled Daily Open Indicator build for MT4 and MT5, plus a short README. Compiled files only, no source. 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
What does InpDayShiftHours 0 assume?
That you want the broker’s own midnight as the day boundary. Many traders prefer the New York or London open instead, and this input shifts the boundary by whole hours to match.
What does InpMergeSunday fold forward?
Because most brokers open a very short Sunday bar of two or three hours. Treating it as its own day would produce a daily open from almost no trading, so folding it into Monday gives a more useful level.
What does InpRequireExtreme add to a cross?
It asks the crossing bar to also make a local high or low. A bar that drifts through the open without making an extreme is usually noise, and this gate removes most of those.
How far back does InpStairDays 30 reach?
Thirty days of coloured staircase, so each bar in that window shows its own day’s open. Beyond that the buffers stay empty. Raising it costs nothing but chart clutter.
Are results guaranteed?
No. Trading involves risk. Results are not guaranteed; past performance is not indicative of future results. Use the Daily Open Indicator as one input. Always backtest before trading live.
External references
- Learn more about the underlying method in Implied open on Wikipedia.
- For wider market background, see Mcclellan Oscillator at StockCharts ChartSchool.
