Monitor every major and minor pair from one screen. Never miss a setup.
Room-based cycle tracking with Peak Formation detection — fully automated.
Type 1, Type 2, Safety & ID50 signals with SL/TP — the moment they fire.
H4 & D1 trend and EMA alignment at a glance — confirm confluence instantly.
Six headline upgrades focused on usability, screen-fit, and making alerts useful enough to trade from. Defaults match v1.62 behaviour — every change is opt-in via inputs.
InpUIGlobalScalePct 50–200) scales every pixel and default font. Plus 17 per-area font-point overrides for HiDPI / 4K / Mac users. Two cross-platform font-family inputs.E:price SL:price TP1:price TP2:price at each symbol's correct precision. Toggle: InpAlertIncludeLevels.InpAlert*MinLevel / *MaxLevel. Defaults 1/9 = any level.SymbolState so the scanner HTF column and Top Confluence skip indicator reads on every refresh. Faster initial load..ex5 / .ex4, reload the chart — nothing else needs changing unless you want the new features.
The foreign exchange market is not random. Behind every spike, every stop hunt, every reversal lies a single force: the market maker. These institutional participants are contractually obligated to provide liquidity on both sides of the market. To do so profitably, they follow a repeating, mechanical cycle — and once you can see it, you can trade alongside it.
The Beat The Market Maker (BTMM) methodology, developed by Steve Mauro, teaches retail traders to recognise this cycle and position themselves on the right side of the institutional order flow. Instead of fighting the market maker, you trade with them — entering after the manipulation phase and riding the distribution move.
This is the pattern you will see playing out on your charts every single day. The indicator draws and labels all of this automatically — but understanding the shape of the cycle is essential.
Read it left to right like a chart. During Asia, price chops sideways inside a tight box. At the London open, the market maker spikes price below the range to trigger retail stop losses and fill their buy orders cheaply. Once filled, price reverses sharply — the 5 EMA crosses above the 13 — and the genuine bullish move begins. This is the distribution phase, and it's where the indicator fires your entry signal.
The bearish cycle is the exact mirror: price spikes above the Asian Range to hunt buy stops, fills the market maker's sell orders, then reverses sharply downward. The 5 EMA crosses below the 13, and the distribution sell-off begins.
The beauty of BTMM is that this cycle doesn't just play out once. It plays out on multiple timeframes simultaneously — each daily cycle is one "level" inside a larger multi-day swing. Stack enough levels in one direction, and you get a Peak Formation — the high-probability reversal point where the big swing turns.
This is the concept that makes BTMM unique. Every multi-day swing is built like a staircase — each step is a "level," and each level is contained inside a "room."
A room is a price range defined by Asian Range boxes at the same level. Think of it as a floor in a building — price enters the room, bounces around inside it across one or more sessions, and eventually breaks out to start a new level.
The rule is simple: if the next Asian Range overlaps the current room, it stays at the same level. If it breaks cleanly above or below, a new level begins and a new room opens.
A typical market maker swing runs 3 levels in one direction, then reverses. Here's what the full cycle looks like — this is exactly what the indicator tracks automatically:
BTMM uses a specific set of Exponential Moving Averages, each serving a distinct purpose. Together they create a layered view of institutional momentum — from the fastest scalp-level pulse to the longest-term trend anchor.
The 5/13 EMA crossover is the primary entry trigger. When the Fast (5) crosses above the Slow (13), it signals bullish momentum. When it crosses below, bearish. But a raw crossover alone produces noise — which is why the indicator adds multiple confirmation layers:
| EMA | Period | Colour | Toggle | Role in BTMM |
|---|---|---|---|---|
| Fast | 5 | ■ Goldenrod | [MA] | Entry trigger — the aggressive line. Reacts first to momentum shifts. |
| Slow | 13 | ■ Red | [MA] | Entry confirmation — when Fast crosses Slow, the setup is active. |
| Water | 50 | ■ Aqua | [MA] | The "Water level." Pullbacks to here are Safety / ID50 entries. |
| Mayo | 200 | ■ White | [M] | Macro bias. Above Mayo = bullish, below = bearish. The "tide." |
| Blueberry | 800 | ■ Slate Blue | [MA] | Long-term anchor. Confluence here amplifies any signal's quality. |
Traditional BTMM analysis uses two timeframes working together. The State Engine combines both into one chart — but understanding the logic helps you read the indicator with confidence.
The 15-minute chart is the sweet spot for BTMM entries because:
Enough resolution to see EMA crossovers clearly and place tight stop losses — without the noise of M1 or M5.
32 candles per Asian session (8 hours × 4 per hour). This gives a clean, well-defined range box — not too few candles, not too many.
The London KZ (3 hours) = 12 candles. Enough time to see manipulation, wait for the crossover, and enter during distribution.
Without the State Engine, a BTMM trader must do all of this manually — every day, across every pair they want to trade:
In MT5: File → Open Data Folder.
Go to MQL5 → Indicators.
Copy the BTMM State Engine Pro indicator file into this folder (from your MQL5 Market installation or your broker package).
Right-click Indicators in the Navigator panel and select Refresh.
Drag the indicator onto any M15 chart.
In MT4: File → Open Data Folder.
Go to MQL4 → Indicators.
Copy the BTMM State Engine Pro indicator file into this folder (from your MQL4 Market installation or your broker package).
Right-click Indicators in the Navigator panel and select Refresh.
Drag the indicator onto any M15 chart.
If the scanner table looks blank or the dashboard text feels too small / too big, you'll fix it with one of two settings. Both are explained in detail in the troubleshooting section, but here's the short version so first-time users don't get stuck.
Many brokers add a suffix like .m, .r, -ECN, or # to symbol names (e.g. EURUSDm). If the scanner shows grey rows, your broker uses a suffix.
Open View → Market Watch, see what your broker actually calls EURUSD, then set InpSymbolSuffix to that suffix (e.g. .m). Hit OK — the indicator appends it to every scanner symbol automatically. No need to retype the whole list.
If the dashboard text looks too small (HiDPI / 4K / Mac Retina) or too big (small laptop), change one input.
In the indicator inputs, set InpUIGlobalScalePct. Defaults to 100. Try 115–130 on Mac / Retina / 4K, 80–90 on small laptops, 100 on a typical Windows VPS or Parallels guest. It scales every layout pixel and default font in lockstep, so proportions stay correct everywhere.
During the Asian session, the market is quiet. The market maker uses this period to build their position inside a tight range. The indicator automatically draws this range as a filled box.
This is the heart of the indicator. Every new Asian session box is compared to the current room's bounds. Core level detection (Asian Range levels, rooms, peaks) always uses H1 data regardless of chart timeframe, while entry signals are generated from M15.
Rooms visually connect like stairs — the right edge of each room ends where the left edge of the next room begins, with no overlap between them.
| Direction | Colour | Meaning |
|---|---|---|
| ▲ UP | ■ Dodger Blue | Bullish accumulation |
| ▼ DOWN | ■ Crimson | Bearish accumulation |
| — Neutral | ■ Gray | First L1, no direction |
| STALE | ■ Grey + label | Too many boxes — forced reset |
At Level 2+, the market maker may have accumulated enough. The cycle reverses. Peak Formations are the exact moment this happens.
Four distinct entry types, each based on the 5/13 EMA crossover with multi-layer confirmation filters.
Price broke the Asian Range extreme (stop hunt), then the 5/13 EMA cross fires in the opposite direction. The classic BTMM setup — strongest signal type because the market maker has just filled their orders against trapped retail traders.
Standard 5/13 EMA crossover without a preceding stop hunt. Price breaks from within the Asian Range on pure momentum. Reliable but lacks the stop-hunt confirmation of T1.
EMA cross fires near the 50 EMA (the Identity/Water level) — the key institutional decision point. High probability because this is where the market maker's average position sits. Exceptional risk-to-reward.
AR already broken, price pulls back to the 50 EMA, then the EMA crossover catches the re-entry. A safe re-entry after the initial break has proven direction. The highest-quality signal.
| Button | Full Name | What It Toggles |
|---|---|---|
| MA | Moving Averages | Fast (5), Slow (13), Water (50), Mayo (200), Blueberry (800) EMAs |
| M | Mayo Line | 200 EMA horizontal reference — the institutional "mayo level" |
| Y | Yesterday | Yesterday's High and Low as dashed reference lines |
| P | Psychological | Round-number levels (00, 25, 50, 75 pip increments) |
| Z | Killzones | Coloured strips marking London (green) and NY (orange) windows |
| ZN | Level Zones | Cycles: Off → ZN1 (AR union) → ZN2 (true candle range) |
| E | Entry Signals | Draws entry/SL/TP lines from the scanner's unified engine. Falls back to its own M15 scan if the scanner signal has expired |
| EH | Entry History | Historical entry signals across all visible sessions |
| ADR | Daily Range | ADR-based TP projection + DR/ADR in status bar |
| LVL | Level Filter | Filter scanner: ALL → L1-2 → L2-3 → L1-3 |
| ? | Help | In-chart quick reference overlay |
The single most valuable feature for active traders. One screen. 28 pairs. Zero missed setups.
The scanner includes the HTF column (✓ · ✗ · ~). Directly below it (when enabled) sit three sub-panels: HTF Context (H1/H4/D1 for the chart symbol), Currency Strength (8 majors), and Top Confluence (top 3 pairs by score). They work together — not duplicates.
Toggle with InpShowHTFPanel, InpShowCurrencyStrength (shows both CS + Top Confluence strip).
Click any symbol to instantly switch the main chart to that pair on M15.
Signals survive chart switches. They expire after InpSigPersistMins (default 3h) or when direction reverses — keeping the scanner clean for intraday trading.
Drag the title bar to reposition the scanner anywhere on the chart.
Font size, row height, column width, position — all adjustable in Inputs.
Every column tells you something specific about the cycle state for that pair. Here's exactly what each one means:
| Column | What It Shows | How to Read It |
|---|---|---|
| PAIR / SYM | Symbol name | Click to switch the main chart to this pair. |
| LVL | Current cycle level | L1 = starting level, L2 = trend confirmed, L3+ = deep in cycle, peak zone. |
| PEAK | Peak Formation status | PFH?/PFL? = pending (watch closely), PFH ✓/PFL ✓ = confirmed (act now), — = no peak detected. |
| DIR | Cycle direction | ▲ = bullish, ▼ = bearish, — = neutral (L1 with no direction yet). |
| SIGNAL / SIG | Current entry signal | Shows the active signal type (BUY T1, SELL Safety, etc.) with an age timer (e.g. 45m). Signals expire after InpSigPersistMins (default 3h) or on direction reversal. Blank when no signal. |
| HTF | Higher TF alignment | ✓ = H4 + D1 agree with signal direction. ✗ = Higher TFs oppose. ~ = Mixed / one agrees, one doesn't. A green ✓ here is the highest-probability filter. |
| KZ | Kill Zone status | Active = London or NY session is open. Wait = outside Kill Zone hours. |
| L3! | EMA shift warning | Flags when price is at Level 3+ — the EMAs may be lagging due to the extended move. Extra caution warranted. |
| PHASE | Cycle phase | Init = first level, Trend = directional, Peak = reversal forming, Rev = post-peak reversal, STALE = range-bound reset. |
| ADR | Average Daily Range | The pair's normal daily pip range (e.g. 120 pips for EURUSD). Used as the TP reference. |
| RNG | Today's range | How many pips price has moved so far today. Compare against ADR to gauge remaining potential. |
| ADR% | Range exhaustion | Today's range as a percentage of ADR. <60% = fresh, 60–80% = normal, 80–99% = caution, 100%+ = exhausted. |
The scanner dashboard is designed to fit any screen size and layout preference. Everything can be adjusted — here's how.
The scanner panel is drag-and-drop. Click and hold the title bar at the top of the scanner, then drag it anywhere on your chart. The position is saved and persists when you switch symbols or timeframes.
You can also set a precise starting position using the Inputs tab:
| Input | Default | What It Controls |
|---|---|---|
InpDashboardX | 10 | Horizontal position in pixels from the left edge of the chart. Increase to move right. |
InpDashboardY | 150 | Vertical position in pixels from the top edge. Increase to move down. |
If symbol names are clipped, signals are overlapping, or you want a more compact or spacious layout, adjust these in the Inputs tab:
| Input | Default | What It Controls |
|---|---|---|
InpScannerSymWidth | 55 px | Symbol column width. Increase if your broker uses long names with suffixes (e.g. EURUSD.raw needs ~75px). Decrease if you want a narrower panel. |
InpScannerColWidth | 100 px | Signal column width. Controls the width of the SIG column where entry signals display (e.g. "BUY Safety"). Increase if text is cut off. |
InpScannerRowH | 18 px | Row height. The vertical spacing for each symbol row. Increase for readability on high-DPI screens, decrease for a compact look. |
InpSigPersistMins | 180 | Signal persistence window (minutes). Signals expire from the scanner after this duration. Default is 180 (3 hours) — ideal for intraday. Set to 0 for legacy 8-hour fallback. |
| Input | Default | What It Controls |
|---|---|---|
InpFontSize | 8 | Status bar & label font size. Controls the text size for the status bar, room labels, and level annotations on the chart. |
InpScannerFontSize | 9 | Scanner font size. Controls the text size inside the scanner panel. Increase to 10–11 for high-DPI or if you sit far from your monitor. |
InpTextColor | White | Dashboard text colour. Default white works on the dark background. Change if using a light chart theme. |
A compact panel that sits below the scanner, showing H4 and D1 trend direction and EMA alignment — so you can instantly see if higher timeframes support your M15 BTMM setup.
| Row | Data | How to Read It |
|---|---|---|
| H1 | Current BTMM level + direction | Your main indicator state — e.g. L3 ▲ means Level 3 Bullish. |
| H4 | H4 trend + EMA alignment | Bullish/Bearish based on EMA 5 vs 13. ✓ = EMAs 5>13>50 (or 5<13<50) are stacked. |
| D1 | D1 trend + EMA alignment | Same logic as H4 but on Daily timeframe. |
| Summary | All-TF alignment check | ✓ ALL BULLISH / ✓ ALL BEARISH = high confidence. ⚠ MIXED TFs = conflicting — use extra caution. |
| Colour | Meaning |
|---|---|
| Green | Bullish trend with aligned EMAs (5>13>50) |
| Red | Bearish trend with aligned EMAs (5<13<50) |
| Yellow | Trend present but EMAs not fully stacked — transitioning |
H1 bullish + H4 bullish + D1 bullish = highest confidence. Trade with full size.
H1 and higher TFs disagree. Reduce size, tighten stops, or wait for alignment.
All signal alerts now include HTF status: [H4:Bullish D1:Bullish]
InpShowHTFPanel to toggle. InpHTFPanelOffsetY to adjust spacing below scanner.
A real-time strength meter for the 8 major currencies, derived directly from the scanner's own bias data across all 28 pairs. No external feeds — it's built from the same engine that powers the scanner.
The panel scores each of the 8 major currencies using the scanner's direction data from all 28 pairs:
| Colour | Meaning |
|---|---|
| Green | Strong currency (positive score) — look for BUY signals on pairs where this is the base |
| Red | Weak currency (negative score) — look for SELL signals on pairs where this is the base |
| Grey | Flat / neutral (zero score) — no clear directional bias |
Trade strong vs weak pairs. If USD is +5 and JPY is -5, USDJPY is the highest-momentum pair.
Two grey currencies = ranging market. Skip those pairs and focus where there's a clear imbalance.
A BUY signal is higher quality if the base currency is green and the quote is red.
InpShowCurrencyStrength toggles the panel. It auto-hides when the scanner is minimised.
The Top Confluence panel ranks the top 3 highest-scoring pairs from the scanner — the pairs where the most factors align for a trade right now.
Each pair earns points for every factor that supports a trade:
| Factor | Points | Why It Matters |
|---|---|---|
| HTF Alignment | +1.0 | H4 + D1 agree with the signal direction |
| Peak Alignment | +1.0 | Confirmed PFH/PFL supports the direction |
| Pot Rev (Potential Reversal) | +0.5 | EMA shift detected — reversal building |
| Kill Zone Active | +1.0 | London or NY session is open — volume supports the move |
| Active Signal | +0.5 | A fresh T1/T2/Safety/ID50 signal is firing right now |
| Recent Signal | +0.25 | A persisted signal is still within the persistence window |
| Level 3+ | +0.5 | Deep in the cycle — reversal or continuation is significant |
| Level 2 | +0.25 | Trend confirmed — directional moves are more reliable |
| Column | Shows |
|---|---|
| Symbol | Pair name |
| Dir | Direction arrow (▲ bullish / ▼ bearish) |
| Sig | Active signal type (T1, T2, Safety, ID50) or dash |
| Peak | Peak formation status (PFH/PFL) or dash |
| Score | Total confluence score (gold number) |
The top-ranked pair is the one with the most factors aligned. Start your analysis there.
Scores above 3.0 indicate strong multi-factor alignment. Below 2.0 is weaker.
If the chart symbol appears in the top 3, the E button draws entry lines from the same engine data — scanner and E always agree.
Pairs with active signals are always prioritised over pairs that only have structural alignment.
Press [ZN] to cycle through three modes. Each reveals a different layer of supply and demand.
Only the hollow room rectangle. Height = first AR box only.
+ Dashed box covering ALL AR highs/lows at this level.
+ Dotted box covering true candle extremes across the full visual width of the room — including London and NY sessions between Asian boxes, not just candles within the Asian session itself.
| DR vs ADR | Status | Action |
|---|---|---|
| < 60% | Fresh | Trade with confidence — plenty of range |
| 60–80% | Normal | Good range remaining — normal management |
| 80–99% | ○ Orange | Nearing full range — tighten stops |
| 100%+ | ● Red | Daily range complete — take profit |
Plain-English line under the toggles: cycle level + direction + the peak formation that started the cycle (PFL on buy cycles, PFH on sell cycles), today's range vs 10-day average ADR with a percent, and your local clock alongside the broker server clock. A trailing ? appears when an unconfirmed peak has just been spotted (e.g. L3 UP PFL?).
Alerts fire across three channels simultaneously: MT popup, phone push notification, and on-chart toast. Every alert is tagged with the cycle context (e.g. [L3 PFH]) so you can read the message and know exactly where in the cycle the signal fired.
| Alert | Trigger | Toggle |
|---|---|---|
| PFH/PFL Confirmed | Peak Formation confirmed | InpAlertPFConfirmed |
| London KZ Start | London Killzone opens | InpAlertLondonKZStart |
| NY KZ Start | NY Killzone opens | InpAlertNYKZStart |
| Scanner Signal | Any pair fires a crossover | InpAlertScannerSignal |
| Scanner PF | Any pair confirms PFH/PFL | InpAlertScannerPF |
| Chart Entry Signal | Active chart fires Type 1 / 2 / Safety / ID50 | InpAlertEntrySignal |
Scanner SIG and chart entry alerts now append the actual prices so you can act straight from the message — no need to open the chart to read SL/TP.
Toggle with InpAlertIncludeLevels (default on). Each symbol uses its own digit precision (FX, JPY, XAU, BTC).
Keep every signal type on by default but suppress noisy levels per signal class. Defaults 1 / 9 mean any cycle level alerts.
| Signal class | Min level input | Max level input |
|---|---|---|
| T1 / T2 / T3 | InpAlertT123MinLevel | InpAlertT123MaxLevel |
| ID50 | InpAlertID50MinLevel | InpAlertID50MaxLevel |
| Safety | InpAlertSafetyMinLevel | InpAlertSafetyMaxLevel |
Examples: "ID50 only at L1–L2" → InpAlertID50MaxLevel = 2. "Skip L1 chop on T1/T2/T3" → InpAlertT123MinLevel = 2. "Mute everything at L3+ peaks" → set every *MaxLevel = 2.
| Rule | Why |
|---|---|
| Trade during Killzones | 80%+ of profitable moves happen during London/NY |
| Respect the level count | L1 = trend trades, L2+ = reversal watch (PFH/PFL zone) |
| Wait for confirmation | PFH? is pending — PFH✓ is confirmed |
| Check ADR before entry | If 80%+ used, the daily move may be done |
| Align with cycle direction | Never trade against the market maker |
| Use the scanner | Trade the best setup across 28 pairs — not just one |
Whether you're on MT4 or MT5 — the workflow is the same. Follow these nine steps from setup to trade management.
Open an M15 chart on MT4 or MT5. EURUSD is a good starting point.
Attach the indicator to the chart by dragging it from the Navigator. Accept the default settings and click OK.
The Asian Range box draws automatically during the Asian session (00:00–08:00 GMT). Wait for the box to complete — this is the accumulation phase. Once it closes, the day's reference levels (AR High, AR Low, ID50) are locked in.
Read the status bar and scanner panel: Level (L1/L2/L3), Direction (▲/▼), Phase (Init/Trend/Peak/Rev), and Kill Zone status (Active/Wait). This tells you where the cycle is and whether to look for trades.
During the London Kill Zone (08:00–11:00 GMT) or NY Kill Zone (13:00–16:00 GMT), watch for a 5/13 EMA crossover signal. 80%+ of profitable moves happen during these windows.
Before entering, confirm: Vector candle present (above-average range candle), TDI/RSI aligned with the signal direction, and cycle direction matches the trade. All three filters must agree.
Enter at the signal with SL placed below/above the Asian Range + buffer (drawn automatically), and TP = Asian Range height. The indicator draws SL/TP projection lines directly on the chart.
At Level 2 and above, the market maker may be fully loaded. Watch for PFH?/PFL? (pending peak) in the dashboard. These signal that the big reversal is forming — the cycle may be about to flip.
When PFH ✓ or PFL ✓ confirms, the cycle flips. Rooms repaint. The opposite staircase begins. Trade in the NEW direction — this is the highest-conviction setup in BTMM.
Most settings work well out of the box. The tables below explain each group so you can adjust deliberately when needed.
| Input | Default | What It Does |
|---|---|---|
InpAsianStartHour | 0 (Auto) | Asian session start in broker time. 0 = auto-detect from GMT. Only change if auto-detect is wrong. |
InpAsianEndHour | 8 (Auto) | Asian session end in broker time. Auto-calculated as start + 8 hours. |
InpLondonStartHour | 0 (Auto) | London Killzone start. 0 = auto-calculate from GMT offset. Override for unusual brokers. |
InpNYStartHour | 0 (Auto) | New York Killzone start. Same auto-detect logic as London. |
TimeGMT() with broker server time to calculate the GMT offset. It then shifts all session boundaries accordingly. For example, if your broker is GMT+2, the Asian session (normally 00:00 GMT) starts at 02:00 broker time. This happens automatically every time you attach the indicator.
| Input | What It Does |
|---|---|
InpSymbols | Comma-separated list of all 28 symbols the scanner monitors. You must match your broker's exact symbol names — see suffix guide below. |
InpScannerHistDays | How many days of history to scan per symbol (default: 20). |
InpHistoryDays | History depth for the main chart's level counting (default: 60). |
| Input | Default | Effect |
|---|---|---|
InpUseTDIFilter | true | Requires TDI/RSI confirmation before firing a signal. Reduces false entries. |
InpUseVectorCandle | true | Requires the crossover candle to be a Vector candle (above-average range). |
InpUseCycleFilter | true | Only fires signals aligned with the current cycle direction. |
InpShowID50 | true | Enable/disable ID50 entry signals. |
InpShowSafety | true | Enable/disable Safety entry signals. |
InpSLBuffer | 150 | Stop loss buffer in points (150 points = 15 pips on 5-digit brokers). |
| Input | Default | What It Controls |
|---|---|---|
InpAlertPFConfirmed | true | Alert when PFH/PFL is confirmed on the main chart. |
InpAlertEntrySignal | true | Alert when an entry signal fires on the main chart. |
InpAlertScannerSignal | true | Alert when any scanner pair fires a crossover signal. |
InpAlertScannerPF | true | Alert when any scanner pair confirms a Peak Formation. |
InpAlertScannerKZOnly | false | If true, scanner trade alerts fire only during active Killzones. Off by default so you don't miss Asian-session setups. |
InpAlertLondonKZStart | true | "London Killzone is open" reminder. |
InpAlertNYKZStart | true | "NY Killzone is open" reminder. |
InpAlertID50 | true | Include ID50 in scanner / entry alerts (needs the master toggle on). |
InpAlertSafety | true | Include Safety in scanner / entry alerts (needs the master toggle on). |
InpShowHTFInAlerts | true | Append [H4:… D1:…] trend status to alert messages. |
InpAlertIncludeLevels v1.63 | true | Append E:price SL:price TP1:price TP2:price to scanner SIG and chart entry alerts at each symbol's correct digit precision (FX, JPY, XAU, BTC). |
InpAlertCooldownMins | 15 | Minimum minutes between repeated alerts for the same symbol. |
InpAlertPopup | true | Show the on-chart popup toast. |
InpAlertPopupSeconds | 10 | How long the popup toast stays visible. |
Constrain which cycle levels are allowed per signal class. Defaults preserve current behaviour (any level alerts). Lower the max to skip late peaks; raise the min to skip L1 chop.
| Input | Default | Effect |
|---|---|---|
InpAlertT123MinLevel | 1 | T1 / T2 / T3 alerts: only when cycle level >= this. |
InpAlertT123MaxLevel | 9 | T1 / T2 / T3 alerts: only when cycle level <= this. |
InpAlertID50MinLevel | 1 | ID50 alerts: only when cycle level >= this. |
InpAlertID50MaxLevel | 9 | ID50 alerts: only when cycle level <= this. |
InpAlertSafetyMinLevel | 1 | Safety alerts: only when cycle level >= this. |
InpAlertSafetyMaxLevel | 9 | Safety alerts: only when cycle level <= this. |
One global knob plus per-area font-point overrides means the dashboard always fits on any screen. If anything looks cramped or oversized after attaching the indicator, change InpUIGlobalScalePct first — it's almost always the only setting you need.
| Input | Default | What It Controls |
|---|---|---|
InpUIGlobalScalePct | 100 | One global knob (50–200). Scales every layout pixel and default font in lockstep. HiDPI / Mac: try 115–130. Tiny laptops: 80–90. |
InpUIFontProp | "Arial" | Proportional font family for buttons / labels / titles. Mac users who prefer native: "Helvetica". |
InpUIFontMono | "Courier New" | Monospace family for the status line, HTF rows, F1 help, room labels. Mac native alternatives: "Menlo" or "Monaco". |
Plus 17 per-area font-point overrides (default 0 = follow scaled default; >0 = fixed point size, clamped 6–24): InpUIFontScanner, InpUIFontHTF, InpUIFontCurrency, InpUIFontTopConf, InpUIFontDashTF, InpUIFontDashToggle, InpUIFontDashTitle, InpUIFontDashMin, InpUIFontDashHelp, InpUIFontDashStatus, InpUIFontHelpF1, InpUIFontScanHelp, InpUIFontTradeLatest, InpUIFontTradeHist, InpUIFontStatLine, InpUIFontToast, InpUIFontCycleLbl.
| Input | Default | What It Controls |
|---|---|---|
InpShowHTFPanel | true | Show or hide the Higher Timeframe Context Panel below the scanner. |
InpHTFPanelOffsetY | 4 | Vertical pixel gap between the bottom of the scanner and the top of the HTF panel. |
InpShowHTFInAlerts | true | Append HTF trend status (e.g. [H4:Bullish D1:Bearish]) to all signal alerts. |
| Input | Default | What It Controls |
|---|---|---|
InpShowCurrencyStrength | true | Show or hide the Currency Strength strip below the scanner. |
InpShowTopConfluence | true | Show or hide the Top Confluence panel — independent toggle from Currency Strength. |
InpScannerSigFilterToPeak | false | When enabled, scanner signals only appear when they align with the peak formation direction — reduces noise but may hide valid setups. |
InpMaxBoxesPerLevel | 5 | Maximum boxes allowed at the same level before the cycle is flagged STALE and resets. Lower values detect ranging markets sooner. |
| Input | Default | What It Controls |
|---|---|---|
InpSigPersistMins | 180 | Maximum time (in minutes) a scanner signal remains visible after firing. Default 180 = 3 hours. Set to 0 for legacy 8-hour fallback. Signals also clear on direction reversal. |
| Input | Default | What It Controls |
|---|---|---|
InpCandleBullColor | Blue | Bull candle colour. Applied on indicator init. |
InpCandleBearColor | Red | Bear candle colour. |
InpChartBGColor | Black | Chart background colour. |
InpChartFGColor | White | Chart foreground colour (axis text, labels). |
InpChartGridColor | DimGray | Chart grid line colour. |
InpAlertPopupBuyClr | Lime | Toast popup colour for buy signals. |
InpAlertPopupSellClr | Red | Toast popup colour for sell signals. |
InpAlertPopupInfoClr | Gold | Toast popup colour for info alerts (KZ, PF). |
This is the #1 setup issue. Many brokers add a suffix to symbol names:
| Broker Style | Example | What You See in Market Watch |
|---|---|---|
| Standard | EURUSD | EURUSD |
| Micro suffix | EURUSDm | EURUSDm, GBPUSDm, etc. |
| Dot suffix | EURUSD.r | EURUSD.r, GBPUSD.r, etc. |
| ECN suffix | EURUSD-ECN | EURUSD-ECN, GBPUSD-ECN, etc. |
| Hash suffix | EURUSD# | EURUSD#, GBPUSD#, etc. |
| Prefix | rEURUSD | rEURUSD, rGBPUSD, etc. |
How to fix:
Open View → Market Watch (Ctrl+M). Look at the exact symbol names your broker uses. Note the suffix or prefix.
Double-click the indicator in the Navigator → Inputs tab → find InpSymbols. Add your broker's suffix to every symbol. For example, if your broker uses .r:
The scanner will reload. All 28 rows should populate with coloured data within a few seconds.
InpSymbols as-is and set InpSymbolSuffix to your broker's suffix (e.g. .m, .r, -ECN, #). The indicator appends it to every symbol automatically and skips ones the broker doesn't have. This is the recommended approach.
GOLD, XAUUSD, XAUUSDm, or Gold.r. Check your Market Watch and update the last entry in InpSymbols to match. If your broker doesn't offer a symbol, simply remove it from the list. Currency Strength panel parses XAU* / GOLD* / BTC* / USDT automatically.
The default size is tuned for a 1920×1080 Windows display at 100% Windows scaling. On any other setup — Mac Retina, 4K monitors, ultrawides, small laptops, Parallels VMs, remote VPS, or Windows DPI scaling above 100% — the dashboard can look too small, too big, or have clipped text. Fix it in the indicator inputs.
Set InpUIGlobalScalePct (range 50–200) and reload the chart. This scales every layout pixel and every default font in lockstep, so columns, rows, and fonts grow / shrink together.
| Setup | Try this value | Notes |
|---|---|---|
| Standard Windows 1080p | 100 | Default. Don't change. |
| 4K / 1440p / HiDPI Windows | 115–130 | If Windows display scaling is set to 125% or 150%, the indicator already looks the right size at 100; only bump if text feels small. |
| Mac Retina (native MT5 / MT4) | 115–130 | Mac Retina renders MT at 2x — text at 100 is readable but tight. 120 is the sweet spot for most. |
| Mac Parallels / VMware (Windows guest) | 100–115 | Behaves like Windows. If the Parallels guest is set to "Best for Retina display", treat it like 4K and use 115–125. |
| VPS / RDP from a HiDPI client | 100 | The VPS itself is usually 1080p — keep at 100. The RDP client handles your local scaling separately. |
| Small laptop (13" or below) | 80–90 | Frees screen real estate so the scanner doesn't push the chart out. |
| External 4K with sharp eyes | 90–95 | Fits more pairs without scrolling. |
If a specific area is still off after the global scaler, override just that area. Default 0 = follow the scaled default; set >0 for a fixed point size (clamped 6–24).
| What's wrong | Input to set |
|---|---|
| Scanner table cramped or oversized | InpUIFontScanner |
| HTF context panel | InpUIFontHTF |
| Currency strength strip | InpUIFontCurrency |
| Top confluence panel | InpUIFontTopConf |
| Dashboard TF / toggle buttons | InpUIFontDashTF / InpUIFontDashToggle |
| Status line under toggles | InpUIFontDashStatus |
| F1 user guide popup | InpUIFontHelpF1 |
| Scanner ? legend popup | InpUIFontScanHelp |
| Toast alert banner | InpUIFontToast |
| On-chart entry / SL / TP labels | InpUIFontTradeLatest / InpUIFontTradeHist |
Defaults are Arial + Courier New (both ship on Mac and Windows). Mac users who prefer native fonts can change them:
InpUIFontProp = "Helvetica" — proportional family (buttons, labels, titles).InpUIFontMono = "Menlo" or "Monaco" — monospace family (status line, HTF rows, F1 help, room labels).If the dashboard / scanner blocks something on your chart, just click-drag the scanner header — the whole stack (scanner, HTF, currency strength, top confluence) moves together. Position is remembered for that chart while the indicator is loaded.
0 to follow the scaled default and the area will reappear.
The indicator auto-detects your broker's GMT offset by comparing TimeGMT() with server time. This works on 99% of brokers. If the boxes look wrong:
| Possible Cause | Fix |
|---|---|
| Weekend / market closed | TimeGMT() needs a live connection. Restart MT5 during market hours (Sunday evening onwards). |
| Broker uses unusual offset | Manually set InpAsianStartHour and InpAsianEndHour in broker time. Check your broker's server clock against time.is/GMT. |
| DST changeover | During Daylight Saving transitions, the offset may be off by 1 hour for a session. The indicator recalculates on every load, so restarting MT5 after the transition fixes it. |
The indicator uses MetaTrader's built-in SendNotification() function. For it to reach your phone:
Download MetaTrader 4 or 5 (matching your desktop version) from the App Store or Google Play. Log in to your account.
In the mobile app: Settings → Messages → MetaQuotes ID. Copy this code (it looks like A1B2C3D4).
On your PC: Tools → Options → Notifications. Tick "Enable Push Notifications" and paste your MetaQuotes ID. Click Test to verify.
Push notifications only work while the desktop terminal is running and connected. Consider running it on a VPS for 24/5 alerts.
| Symptom | Cause | Fix |
|---|---|---|
| No boxes, no levels, no data | Wrong timeframe | Switch to M15. The indicator requires the 15-minute chart. |
| Very few boxes visible | Not enough history loaded | Scroll left on the chart to load more history bars. Increase InpHistoryDays if needed. |
| Chart colours didn't change | Permissions not ticked | When attaching, ensure "Allow DLL imports" (if prompted) and "Allow modification of indicator's signals" are enabled. On MT5 also check Tools → Options → Charts → "Maximum bars in chart" is at least 50,000. |
| Indicator not in Navigator | Wrong folder | Ensure the indicator file is in MQL5\Indicators\ (MT5) or MQL4\Indicators\ (MT4). Right-click Indicators → Refresh. |
| Scanner loads some pairs but not all | Pairs not in Market Watch | The indicator auto-adds symbols via SymbolSelect(), but some brokers block this. Manually add missing pairs to your Market Watch first. |
If too many consecutive Asian Range boxes fall within the same room without triggering a new level, the room is marked STALE. This means the market is ranging sideways with no clear direction.
The threshold is controlled by InpMaxBoxesPerLevel (default: 5). When reached, the level resets. This is normal — it prevents the indicator from sitting in a dead zone forever. Wait for a fresh breakout to re-establish directional levels.
| Tip | Details |
|---|---|
| One instance only | Only attach the indicator to one chart. The scanner monitors all 28 pairs from that single chart — no need for multiple instances. |
| Reduce history if slow | Lower InpHistoryDays from 60 to 30 if your terminal feels sluggish on older hardware. |
| Remove unused pairs | If you only trade majors, trim the InpSymbols list to reduce CPU usage. |
| Close other indicators | Heavy indicators on the same chart can slow down rendering. The State Engine draws many objects — give it space. |
| Built-in throttling v1.63 | Scanner table redraws every 2 s, HTF context every 5 s, currency strength + top confluence every 15 s. HTF panel text caches per H4/D1 bar. Per-symbol H4/D1 trends are cached on the symbol state so the scanner HTF column and Top Confluence panel skip redundant indicator reads on every refresh. |
| Optimised Code | Full Strategy Tester optimisation: the indicator detects tester mode and skips heavy graphical operations. |
| Setup | Notes |
|---|---|
| Mac (native MT5 / MT4) | Works fine. The indicator uses Arial + Courier New by default — both fonts ship on macOS. If you prefer native fonts, set InpUIFontProp = "Helvetica" and InpUIFontMono = "Menlo". For Retina screens, set InpUIGlobalScalePct = 115–130. |
| Mac via Parallels / VMware | Behaves like a Windows PC inside the VM. If Parallels is set to "Best for Retina", the guest sees a HiDPI screen — set InpUIGlobalScalePct = 115–125. Otherwise leave at 100. |
| Windows VPS / RDP | Recommended for 24/5 alerts and push notifications. Most VPS providers run 1080p — keep the scaler at 100. Push only fires while the desktop terminal is connected — VPS keeps it online. |
| 4K / Ultrawide | Either turn Windows display scaling up to 125%/150% (then keep InpUIGlobalScalePct = 100), or leave Windows at 100% and set InpUIGlobalScalePct = 115–130. Both work — pick whichever looks cleaner. |
| Tester mode | The indicator auto-detects Strategy Tester and skips dashboards, scanner, and HTF panels. No setup needed. |
Print this page and keep it next to your screen.
Whether you have a setup question, a feature request, or need help configuring the indicator for your broker — we're here to help.