MATTRIX v2.01

User Manual — Forex Basket Trading System
v2.01b21 BETA — EXPIRES 2026.05.31
Built for MetaTrader 5 — Expert Advisor + Indicators + Synthetic Charts
1

Quick Start

MATTRIX runs entirely inside MetaTrader 5. No external tools, no Excel, no bridges. All analysis, execution, and risk management happen in one platform.

Requirements

MetaTrader 5 (any broker), demo or live account. All 28 major currency pairs must be visible in Market Watch (Ctrl+M). The EA trades the Big8 currencies: EUR GBP AUD NZD USD CAD CHF JPY.

Installation

1
Copy MATTRIX_v2.ex5 to your MQL5\Experts folder. Copy MATTRIX_SyntheticCharts.ex5 to MQL5\Experts. Copy MATTRIX_RONROFF.ex5 to MQL5\Indicators. That's it — three files, no source code needed.
2
Open any major pair chart (e.g. BTCUSD or EURUSD). Drag the EA onto the chart. In the Inputs tab, enter your Beta Key. Check "Allow Algo Trading".
3
Attach MATTRIX_SyntheticCharts.ex5 to a second chart for synthetic currency index charts (#EUR, #GBP, ... #RON, #ROFF) and the FBT INDEX charts (#FIX_A, #FIX_B, #FIX). Attach MATTRIX_RONROFF.ex5 indicator to any chart for the RON/ROFF strength display.
First run: Start with a demo account and default settings. Observe for at least one full trading session before changing anything. The defaults are conservative and safe.

Delivered Files

FileTypeCopy ToPurpose
MATTRIX_v2.ex5Expert AdvisorMQL5\ExpertsMain trading engine + dashboard
MATTRIX_SyntheticCharts.ex5Expert AdvisorMQL5\ExpertsBuilds #EUR–#JPY + #RON/#ROFF + #FIX charts (13 symbols)
MATTRIX_RONROFF.ex5IndicatorMQL5\IndicatorsRON/ROFF strength display
Security: Only compiled .ex5 files are distributed. Source code is never shared. Do not distribute files or keys to anyone outside the beta group.

Access Levels

MATTRIX uses a key-based access system. Your key determines what you can do. Keys are distributed personally — never share them.

LevelAccountRestrictionsWho
TESTERDemo onlyNone on demoAll beta testers
ALPHADemo + LiveMax $1.00/pip, max 0.07 lotPromoted testers
PRODemo + LiveNo restrictionsExperienced traders
TESTER key on a live account? The EA will refuse to start and display a message explaining which access level is needed. This is a safety measure — live trading requires proven demo experience first.
ALPHA limits are hardcoded. Even if you enter higher values in the settings, the EA silently caps $/pip and lot size to the allowed maximum. The dashboard shows [CAP] next to the LOT display when capping is active. An Alert notification also fires on startup.
2

Dashboard Overview

Header Bar

ElementDescription
MATTRIX v2.01Version identifier
Date/TimeBroker server time (not local PC time)
P/LTotal portfolio profit/loss with trade count

Main Grid — 28 Pairs

Each row represents one currency pair with the following columns:

ColumnDescriptionColor Logic
PairCurrency pair name (clickable → opens chart)Green BG = BUY signal, Red BG = SELL signal
SprdCurrent spread in pipsOrange normal, Red if exceeds MaxSpread
PipWWeekly pips (from Monday open)Green = up, Red = down
PipDDaily pips (from 00:00 broker time, M1-based — consistent across all brokers)Green = up, Red = down
PipSSession pips (from last pip reset)Green = up, Red = down
PipEEvent pips (active only during Session 4 events)Gold = up, Orange = down, Dash = no event
BStrBasket Strength: base currency pips minus quote currency pipsGreen >5, Red <-5, Gray neutral
ScrScore differential: base score minus quote scoreGreen ≥4, Red ≤-4, Gray neutral
GapMomentum gap indicatorGreen = bullish, Red = bearish
ADR%How much of the average daily range is consumedGreen <50%, Yellow 50-80%, Red >80%
ADRAverage Daily Range in pips (14-day)Yellow (info only)
BUY/SELL/CLOSEManual trade buttons per pairActive or grayed when spread-blocked
LotB/LotSCurrent buy/sell lot volumeGreen buy, Red sell, hidden if none
OrdB/OrdSNumber of open buy/sell ordersGreen buy, Red sell, hidden if none
P/LProfit/loss per pair (pips or $)Green profit, Red loss, hidden if none

MATTRIX Score Panel (Right Side)

Shows all 8 currencies ranked by their MATTRIX Score, strongest on top. Each row displays the rank, currency name, score (with ▲▼ visual bars), COT score, session pips, today pips, and W2D pips. Below the 8 currencies: RON and ROFF(inv) basket pip sums, and the FIX row showing the sum of all 28 pairs (FBT INDEX).

Basket Buttons (Footer)

Currency basket buttons for EUR, GBP, AUD, NZD, USD, CAD, CHF, JPY — each with BUY, SELL, CLOSE. Plus RON and ROFF basket buttons (8 pairs each). Spread is shown per basket; buttons are grayed out when basket spread is too high.

The FIX button (gold) trades all 28 pairs simultaneously — the FBT INDEX. This represents the full RiskON cascade (EUR > GBP > AUD > NZD > USD > CAD > CHF > JPY). BUY = all 28 pairs long, SELL = all 28 pairs short. FIX requires a two-click confirmation: first click shows "SURE?" in yellow, second click within 3 seconds executes. Total spread of all 28 pairs is displayed; buttons are blocked when total spread exceeds 3.5× MaxBasketSprd.

Info Panel

RowContentUpdate
1BAL, EQU, Δ (equity-balance), LOT (lot mode e.g. USD0.10/pip, shows [CAP] if Alpha limits apply)Live + Settings
2Portfolio TP, Portfolio SL, Pair TP, Pair SLFrom settings
3Profit Locks L1–L4 (format: trigger→floor)Settings + active lock highlighted green
4Trail status, active Session, Cycles counter, DD%Live
5Daily Kill Switch: live daily P/L, trigger thresholds, status (DAILY P/L / SL WARN / HARD KILL / TP KILL)Live (only visible when Kill Switch is enabled)

Trail status shows four states: OFF (disabled), WAIT (no lock reached), LOCK USD50 (lock active, trail waiting for last lock), USD50 (trailing active, floor rises with profit).

Hide Info / Show Info: Hides the Info Panel and LotB/LotS columns — useful when sharing screens or recording. All analytical data (scores, pips, signals, OrdB, OrdS, P/L) remains visible. Header P/L and all column headers stay visible.

Commission: All P/L values include estimated roundturn commission (entry commission × 2, retrieved from deal history). A trade closed at exact entry price shows a small negative P/L reflecting the true trading cost. Locks, Portfolio TP/SL, Kill Switch, and all dashboard P/L values are calculated after commission — what you see is what you net.

Broker Time: All times in MATTRIX use broker server time (TimeCurrent()). The header displays "Broker" instead of "Local". Session times, pip resets, and event windows are all in broker time. Defaults are calibrated for EET brokers (UTC+2 winter / UTC+3 summer) such as IC Markets and Pepperstone. If your broker uses a different timezone, adjust session and reset times accordingly. DST changes are handled automatically by the broker — no manual adjustment needed.
Deferred Initialization: When MT5 starts, the EA defers loading of session/week/day reference prices to the first timer tick. This ensures M1 history is fully synchronized before pip calculations begin. PipD uses the M1-bar open at 00:00 broker time (not the D1 candle open, which varies by broker). In Session 1, PipD and PipS are always identical — both reference 00:00.

Dashboard Sorting

When enabled (Sort pairs = true), the 28 pairs are sorted by the selected column with the strongest on top. Sorting refreshes every N seconds (configurable) to avoid visual jumping. All button clicks remain correctly mapped to the displayed pair.

3

Settings Reference

Trigger Filters

Each filter can be enabled/disabled independently. A trade is only opened when ALL active filters agree.

FilterDefaultDescription
PipWOFFWeekly pip threshold — too aggressive for first test
PipDOFFDaily pip threshold
PipSOFFSession pip threshold
PipEOFFEvent pip threshold (Session 4)
BasketStrengthON Buy 80 / Sell -80Minimum basket strength differential to trigger trade
ScoreON Buy 4 / Sell -4Minimum score differential — only trades the strongest setups
GapOFFMomentum gap filter
ADR%ON Max 75%Prevents entries when daily range is nearly exhausted
MaxExposureON Max 3Maximum trades involving the same currency

COT Scores

All COT scores default to 0. You must enter these manually based on the latest CFTC Commitment of Traders report. Use the Claude AI prompt (see FAQ #2a and #9a in Discord) to generate scores.

Trade Management

SettingDefaultDescription
LotSize0.01Fixed lot size (used when DollarPerPip = 0)
DollarPerPip0.10Target $/pip — lot is auto-calculated per pair
MaxTradesPerPair1How many positions per pair (pyramiding)
MaxTotalTrades28Maximum total open positions
MaxSpread1.5Per-pair spread limit (pips)
MaxBasketSprd3.0Basket spread limit (pips sum)
UsePyramidOFFAllow multiple entries per pair

TP / SL

SettingDefaultLevelDescription
PortfolioTP0 (off)Portfolio ($)Close all when portfolio profit reaches this
PortfolioSL0 (off)Portfolio ($)Close all when portfolio loss reaches this
PipTP0 (off)Pair (pips)Take profit per individual trade (broker-side order)
PipSL50Pair (pips)Safety stop-loss per individual trade (broker-side order)
AdrTP0 (off)Pair (% of ADR)ADR-based TP: e.g. 50 = TP at 50% of 10-day ADR from entry price. Only used when PipTP = 0
AdrSL0 (off)Pair (% of ADR)ADR-based SL: e.g. 30 = SL at 30% of 10-day ADR from entry price. Only used when PipSL = 0
Priority: PipTP/PipSL always take priority over AdrTP/AdrSL. To use ADR-based levels, set the Pip version to 0. Both TP and SL are placed as broker-side orders — they remain active even if the EA or MT5 crashes. Each pyramided position gets its own SL/TP calculated from its individual entry price.
TP-Hit Session Block: When any position on a pair is closed by TP (broker-side), that pair is blocked for new entries and new pyramids for the rest of the current session. Existing positions on the pair continue to run until their own TP/SL or session end. The block resets automatically when a new session starts. This prevents the EA from re-entering a pair that has already reached its target — take the win and move on.

Profit Locks

Locks protect your profit at the portfolio level. When portfolio profit reaches the "At" value, the profit floor is set to the "Lock" value. If profit falls back to the floor, all trades are closed.

LockAt ProfitLock Floor
L1$30$5
L2$60$20
L3$100$50
L4–L60 (off)

The Trail feature continues moving the floor up after the last lock is reached. Info panel shows: OFF (disabled), WAIT (enabled, no lock reached yet), ACTIVE $50 (trailing from $50 floor).

Sessions

SessionDefaultTime (Broker)Description
S1 (Asia)OFF01:00–09:59Low liquidity, disabled for safety
S2 (London)ON11:00–16:59European session
S3 (NYC Overlap)ON16:00–20:00Highest liquidity window (EU DST: 16:00, Winter: 15:00)
S4 (Event)OFFManualFor NFP, CPI, and other high-impact events

StopProfit and StopLoss (default: 1 each) control how many profitable/losing portfolio cycles are allowed per session before auto-trading stops.

Daily Kill Switch

Account-level daily risk control. Monitors equity vs. day-start balance (includes floating P/L and commissions). Resets at midnight broker time.

SettingDefaultDescription
KillSwitchOFFMaster enable/disable for all Kill Switch functions
KillTP0 (off)Daily TP Soft Kill in $ — stops auto trading when daily profit reaches this
KillSLWarn0 (off)Daily SL Warning in $ — stops auto trading as early alert
KillSLHard0 (off)Daily SL Hard Kill in $ — stops auto trading AND closes all positions
Recommended starting values: For a $100k account: KillTP $3,000, KillSLWarn $500, KillSLHard $1,000. For prop firm challenges: adjust based on Max Daily Loss rules (see Risk Management section).
Pyramiding is blocked when any Kill Switch trigger is active. No new pyramid entries are allowed until the next day reset, even if the Warning (not Hard Kill) was triggered.

Display

SettingDefaultDescription
Sort pairsOFFSort 28 pairs by selected column (strongest on top)
Sort by0 (BStr)0=BStr, 1=Score, 2=PipS, 3=P/L
Sort refresh3 secHow often the sort order updates (prevents visual jumping)
4

Manual Trading

IN CHART VERITAS — The score tells you the direction. The chart confirms the entry. Always verify your setup visually before clicking BUY or SELL.

Step 1: Enter Your Scores

Open the EA settings (F7) and enter COT scores for each currency (-4 to +4, unique, no zeros, sum = 0). The Score and BasketStrength columns in the dashboard update immediately. Use the Claude AI prompt (Discord FAQ #2a) to generate a score proposal, then verify against your charts.

Step 2: Read the Dashboard

Look for pairs where multiple columns align: high BStr, strong Scr differential, low ADR%, and acceptable Sprd. A green BUY or red SELL signal indicator appears when all active filters agree.

Step 3: Open the Chart

Click on any pair name in the dashboard to open that pair's chart with your configured template and timeframe. Click on a currency label (EUR, GBP, ...) in the basket buttons to open the synthetic currency index chart (#EUR, #GBP, etc.).

Note: Synthetic charts (#EUR–#JPY, #RON, #ROFF, #FIX) require the MATTRIX_SyntheticCharts.ex5 EA to be running on a separate chart. Without it, the custom symbols don't exist and the chart won't open.

Step 4: Execute

Per-pair trading: Click BUY or SELL on any pair row. The trade opens immediately with your configured lot size or $/pip setting.

Basket trading: Click BUY on a currency label (e.g. EUR) to buy all 7 pairs where EUR is the base. Click SELL for the inverse. RON and ROFF baskets trade 8 pairs each. The FIX basket trades all 28 pairs — two-click confirmation required.

Spread Protection

The EA automatically guards every entry with spread checks. Per-pair buttons are grayed out and disabled when the pair's spread exceeds MaxSpread. Basket buttons are grayed out when the basket's combined spread exceeds MaxBasketSprd. You cannot override this — it protects you from expensive entries.

No Hedging

The EA does not allow simultaneous BUY and SELL positions on the same pair. If you have an open BUY on EURUSD and click SELL, the EA will not open a counter-position. Close the existing trade first.

Pyramiding

When UsePyramid = ON, the EA can add multiple entries per pair (up to MaxTradesPerPair). Pyramiding is filter-independent — it triggers based on profit and spread, not on score/BStr signals.

SettingDefaultDescription
MinProfitToAdd8.0ALL existing positions must be at least X pips in profit before adding
BreakEvenBeforeAddONMove existing positions to breakeven before opening a new pyramid
BEBufferPips1.0Buffer above entry price for BE move (covers spread)
OnlyAddProfitONOnly add when existing positions are profitable (used when MinProfitToAdd = 0)

Pyramid flow: Trade 1 opens → grows to +8 pips → BE-move shifts Trade 1 SL to entry+1 pip → Trade 2 opens with fresh SL/TP → both run independently. This satisfies prop firm rules that require existing risk to be neutralized before adding positions.

Manual pyramiding: The BUY/SELL buttons also respect MinProfitToAdd, BreakEvenBeforeAdd, and MaxTradesPerPair. Anti-hedging always applies (no BUY if SELL is open and vice versa). However, manual buttons do NOT respect the TP-Hit Session Block — you can always manually re-enter a pair if you see a setup in the chart.

Closing Positions

ButtonAction
CLOSE (per pair)Closes all positions for that specific pair
CLOSE (per currency)Closes all 7 basket positions for that currency
CLOSE ALLCloses every open position and resets Locks/Cycles
CLOSE PROFITCloses only positions currently in profit
CLOSE LOSSCloses only positions currently in loss

RESET EA

Performs a soft reset: clears all Locks, resets Cycle counters, recalculates ADR, resets session/weekly pip references. Does not close any open trades. Use this after manually closing all positions to start a fresh analysis cycle.

AUTO ON / AUTO OFF

Shown in the bottom-right corner with DEMO or LIVE indicator. This reflects the AutoTrade setting (F7). When OFF, the EA displays signals but does not execute trades automatically — manual buttons still work. Change via Settings (F7), not by clicking.

4b

Pending Basket Orders

Concept

Pending Basket Orders let you set a price level on any synthetic chart and have the EA automatically execute the full basket when the level is reached. This combines the precision of chart-based analysis with the speed of automated execution — you define "where", the EA handles "when".

Available for all 11 baskets: EUR GBP AUD NZD USD CAD CHF JPY RON ROFF FIX

Pending Panel

Located below the MATTRIX Score Panel on the right side of the dashboard. Shows all 11 baskets with live BID prices from the synthetic charts.

ColumnDescription
BSKTBasket name — green background = long basket open, red = short, dark = no basket
DIRDirection — click to toggle BUY → SELL → CLS (close) → BUY
TYPEOrder type — STOP/LIM for BUY/SELL, ▼/▲ for CLS
LEVELTrigger price — type value and press ENTER
BIDCurrent synthetic chart price (live)
DISTDistance from current BID to trigger level
STStatus: ARM (waiting) / GO (triggered) / --- (inactive)
Cancel — removes the pending order

Order Types (BUY/SELL)

TypeTriggerUse Case
BUY STOPBID ≥ LevelBuy when price rises to level (breakout)
SELL STOPBID ≤ LevelSell when price falls to level (breakdown)
BUY LIMITBID ≤ LevelBuy when price falls to level (support bounce)
SELL LIMITBID ≥ LevelSell when price rises to level (resistance rejection)

Setup Workflow

1
Click DIR to select BUY or SELL
2
Click TYPE to select STOP or LIM
3
Type the trigger price in the LEVEL field, press ENTER
4
Click ARM to activate — status changes to ARM (orange)

Execution

When the trigger price is reached, the EA executes the basket immediately using async bulk execution (same speed as Close All). An alert popup and push notification are sent. The BUY/SELL button shows the fill count (e.g. "7/7") for 30 seconds.

Basket-level execution: Pending orders use basket-level spread checking — only the total basket spread matters, not individual pair spreads. All other safety checks remain active: anti-hedge, MaxTradesPerPair, MinProfitToAdd, and BE-move.
Session independent: Pending orders execute regardless of whether a trading session is active. They are treated as deliberate manual decisions. Only the Kill Switch (Hard Kill or TP Kill) can block a pending trigger.

Safety Features

FeatureDescription
Pre-ARM checkRejects arming if the trigger condition is already met (prevents accidental immediate execution). Disabled for CLS orders.
Auto-disarm on changeChanging DIR or TYPE while armed automatically disarms — must re-ARM after changes
Level locked while armedLEVEL field is read-only during ARM — disarm first to edit

Persistence

CLS orders are stored in MT5 GlobalVariables and survive F7 settings changes, EA restarts, and PC reboots. BUY/SELL pending orders survive F7 but are cleared on EA restart (safety — market conditions may have changed). All data is cleared when the EA is removed from the chart.

4c

CLS — Basket Close Management

Concept

CLS (Close) is a pending close order for an open basket. Set a price level on the synthetic chart, and the EA automatically closes all positions in that basket when the level is reached. This is your basket-level SL/TP — managed visually in the chart.

CLS Direction

Click DIR until you see CLS (gold), then click TYPE to choose the direction:

TypeSymbolTriggerUse Case
CLS ▼BID falls to levelSL for long basket, TP for short basket
CLS ▲BID rises to levelSL for short basket, TP for long basket
Direction rule: The arrows indicate price direction, not trade direction. ▼ = "close when price goes DOWN to this level". ▲ = "close when price goes UP to this level". Whether that's your SL or TP depends on your basket direction.

Auto Basket SL/TP

When enabled in settings (F7), the EA automatically sets a CLS order after every basket execution — both manual clicks and pending triggers.

SettingDefaultDescription
Auto Basket SL (%)0 (off)Automatic CLS as % distance from entry price. Shows in Pending Panel.
Auto Basket TP (%)0 (off)Automatic TP as % from entry. Monitored internally, visible as chart line.

Example: EUR BUY @ 1.37000 with Auto SL = 0.2%, Auto TP = 0.5%:

Panel shows: CLS @ 1.36726 (SL, 0.2% below entry). Internally monitored: TP @ 1.37685 (0.5% above entry). First trigger wins — SL or TP, whichever is reached first.

Chart Lines

The BasketSignal indicator reads the CLS levels from GlobalVariables and draws interactive lines directly on the synthetic chart:

LineColorStyleMeaning
SL LineRedDashedCLS SL level from Pending Panel
TP LineGreenDashedAuto-TP level (internal)
Entry LineCyan / OrangeDash-dot-dotPending BUY/SELL entry level

Bidirectional Sync

All chart lines are draggable. When you drag a line to a new price, the BasketSignal writes the new level back to a GlobalVariable. The EA reads the change on the next tick and updates the Pending Panel automatically.

Visual basket management: You see support/resistance in the #EUR chart, drag the red SL line to a key support level, and the EA immediately adjusts its close trigger. No need to type numbers in the Pending Panel — just drag the line where you want it.
BasketSignal setting: The EA Magic Number input in BasketSignal must match your EA's Magic Number (default: 1111) for the chart lines to appear and synchronize.

CLS Execution

When a CLS trigger fires, the EA uses async bulk close — all pairs in the basket are closed simultaneously in one burst (same mechanism as the Close All button). Alert + push notification are sent. The CLS is not blocked by the Kill Switch — closing positions is always allowed.

Manual Override

You can disarm any auto-CLS and set your own level. Click the ARM button to disarm, change the level, re-arm. The auto-CLS will not overwrite an existing armed CLS on the same slot.

4d

Smart Pyramid Engine

Overview

The Smart Pyramid Engine (PyramidMode=1) automatically calculates the minimum profit required before adding a new position, based on market conditions. It replaces the fixed MinProfitToAdd with a dynamic formula.

Settings

SettingDefaultDescription
Pyramid Mode00 = FIXED (manual MinProfitToAdd), 1 = SMART (dynamic)
Pyramid Style10 = Conservative, 1 = Moderate, 2 = Aggressive

Formula

Required Profit = Base × LevelFactor ÷ GapBoost

Where:

ComponentDescription
BaseMinProfitToAdd setting (your baseline)
LevelFactorDecreases with each pyramid level: L0=1.00, L1=0.85, L2=0.75, L3=0.65, L5+=0.55 (Moderate)
GapBoost1 + |Gap| × 0.5 when |Gap| > 0.05 — stronger momentum = lower threshold
FloorMinimum 2.0 pips — never goes below this

Gap direction filter: BUY requires Gap > +0.05, SELL requires Gap < -0.05. If the gap points against your trade direction, pyramiding is blocked regardless of profit.

Session independent: Smart Pyramid runs 24/5 — it is not restricted to active sessions. This allows overnight positions to be pyramided when conditions are right.

Style Comparison

StyleL0L1L2L3+Risk
Conservative1.000.900.800.70Low
Moderate1.000.850.750.55Medium
Aggressive1.000.750.600.45High
5

Auto Trading

How Auto Trading Works

When AutoTrade = ON and the current time is within an active session, the EA evaluates all 28 pairs on every tick. If ALL active filters agree on a direction, the trade opens automatically.

The execution flow on each tick:

1
Update market data (prices, spreads, pip calculations)
2
Check Daily Kill Switch (if enabled — may block all further trading)
3
Calculate signals (evaluate all filters per pair)
4
Execute signals (open trades where filters agree)
5
Check risk management (locks, portfolio TP/SL)
6
Update dashboard (display only, after all trading is done)
Trade execution happens before dashboard updates. Display latency never affects order timing. Signal to execution: approximately 3–8 milliseconds.

Session Control

Auto trading only operates during active sessions. Outside session hours, the EA displays data but does not trade. When a session ends and CloseAllSession is enabled, all open positions are closed automatically.

Cycle Limits

StopProfit = 1 means: after one profitable portfolio cycle (all trades closed with net profit), auto trading pauses until next session or RESET EA. Same logic for StopLoss. Set to 0 for unlimited cycles.

6

Risk Management

Four Layers of Protection

Layer 0 — Daily Kill Switch (Account Level): Monitors your total daily P/L (realized + floating) against configurable thresholds. Resets automatically at midnight (broker time). Three independent triggers protect your account:

TriggerConditionAction
TP Soft KillDaily P/L ≥ targetAuto trading stops, open positions stay (take your profit, stop trading)
SL WarningDaily P/L ≤ −warningAuto trading stops, open positions stay (early alert, manage manually)
SL Hard KillDaily P/L ≤ −limitAuto trading stops + all positions closed immediately (day is over)
Prop firm accounts: Set SL Hard Kill well below your broker's Max Daily Loss limit. Example for a $200k FTMO account (MDL $6,000): Hard Kill at $1,000 gives you 6 bad days before breaching the MDL. The TP Kill at $2,000 prevents Best Day Rule violations.
Dashboard display: When the Kill Switch is enabled, the info panel shows your live daily P/L with color-coded status. Green = normal, Yellow = approaching warning, Orange = SL Warning triggered, Red = SL Hard Kill triggered, Blue = TP Kill reached. Push notifications and alerts fire on each trigger.

Layer 1 — Pair Level: Each individual trade has a PipSL safety stop (default 50 pips). This is the last line of defense — it prevents any single trade from running away.

Layer 2 — Portfolio Level: PortfolioTP and PortfolioSL monitor the combined P/L of all open positions. When triggered, all trades close at once.

Layer 3 — Profit Locks: The most sophisticated layer. As portfolio profit grows, locks progressively raise the floor. If profit retraces to the floor, everything closes — locking in the guaranteed minimum.

Profit Lock Example

Portfolio reaches +$35 → Lock L1 activates: floor at $5.
Portfolio grows to +$70 → Lock L2 activates: floor rises to $20.
Portfolio pulls back to +$18 → Below L2 floor ($20) → All trades closed. Profit secured: $18.
Without locks: profit might have dropped to -$50.

Trailing

When Trail = ON and the last configured lock is reached, the floor keeps moving up with profit (minus trail distance). This allows unlimited upside while protecting the profit already made.

Exposure Control

MaxExposure = 3 means no currency can appear in more than 3 open trades. This prevents over-concentration. With 8 currencies and 28 pairs, uncontrolled exposure can quickly spiral.

Important: Start with default settings on a demo account. The defaults are designed to be conservative. Only increase lot sizes, disable safety stops, or add more sessions after you have observed the system for at least 2–3 full trading days.
7

Daily Kill Switch

Purpose

The Daily Kill Switch is an account-level safety mechanism that prevents catastrophic daily losses. While Portfolio TP/SL and Profit Locks operate per trading cycle, the Kill Switch monitors your entire day — all sessions, all cycles, all trades combined.

This feature was designed for prop firm challenges where a single bad day can breach the Max Daily Loss (MDL) and end your account. But it's equally valuable for personal accounts — protecting your capital from emotional over-trading after losses.

Three Trigger Levels

LevelConditionActionDashboard
● TP Soft KillDaily P/L ≥ KillTPStops auto-trading, positions stay openTP KILL in blue
● SL WarningDaily P/L ≤ -KillSLWarnStops auto-trading, positions stay openSL WARN in orange
● SL Hard KillDaily P/L ≤ -KillSLHardStops auto-trading AND closes all positionsHARD KILL in red

How Daily P/L is Calculated

At midnight broker time, the Kill Switch records your account balance as the day-start reference and saves it to a GlobalVariable (persistent storage that survives EA restarts, recompiles, MT5 crashes, and even PC reboots). On every tick, it calculates: Daily P/L = Current Equity − Day-Start Balance. This includes all floating P/L and commissions — exactly what your broker (or prop firm) sees.

Persistence & Safety

The day-start balance is stored as MATTRIX_KillDayBal_{MagicNumber} in MT5 GlobalVariables. This means:

1
EA restart / recompile / F7 changes: Daily P/L continues correctly from the midnight reference — no reset to zero
2
MT5 or PC restart: GlobalVariables persist to disk — daily P/L is restored on next startup
3
Multiple EAs: Each Magic Number has its own GlobalVariable — no cross-talk between instances
4
Sanity check: If the stored balance differs more than 50% from the current account balance (e.g. wrong account, corrupted data), the EA discards the stored value and uses the current balance as a safe fallback
Manual override: If the Kill Switch shows an incorrect Daily P/L, you can fix it via Tools → Global Variables (F3) in MT5. Find MATTRIX_KillDayBal_{MagicNumber} and either correct the value or delete it — the EA will record a fresh balance on next startup.

Behavior Details

Each trigger fires once per day. After firing, it does not repeat — no alert spam. The TP Soft Kill and SL Warning only block new trade openings; your existing positions continue to run and can still be managed manually. The SL Hard Kill is the nuclear option — it closes everything immediately and the trading day is over.

When any Kill Switch trigger is active, pyramiding is also blocked — you cannot add to existing positions.

All triggers reset automatically at midnight broker time (day change).

Notifications

When a trigger fires, you receive four simultaneous notifications:

1
Dashboard: Kill Switch row changes color and shows status text
2
Alert + Sound: Pop-up alert with details
3
Push Notification: To your mobile MT5 app (if configured)
4
Journal: Full details in Experts tab for audit trail

Recommended Settings

AccountKillSLWarnKillSLHardKillTPRationale
FTMO $200k (MDL $6k)$500$1,000$2,0006 bad days before MDL breach, TP prevents Best Day Rule issues
FTMO $100k (MDL $3k)$250$500$1,000Same ratio, scaled to account
Personal $100k (1% rule)$500$1,000$3,000Conservative daily risk, 3:1 reward-risk
Personal $10k (1% rule)$50$100$300Scaled for smaller capital
Pro tip: The Kill Switch works alongside all other risk layers. Portfolio SL might close a bad cycle at -$250, and the Kill Switch catches the cumulative damage if multiple cycles go wrong in the same day. Think of it as your daily insurance policy.
7b

FIX Index (FBT INDEX)

Concept

The FIX Index represents all 28 major forex pairs traded simultaneously in one direction. It follows the RiskON cascade: EUR > GBP > AUD > NZD > USD > CAD > CHF > JPY. When you BUY the FIX, every pair where the base currency ranks higher than the quote currency is bought — which happens to be all 28 pairs in their standard notation.

The #FIX synthetic chart shows the arithmetic sum of all 28 pair prices (JPY pairs divided by 100 for scale normalization). When #FIX rises, the natural currency hierarchy is strengthening (Risk-On). When it falls, the hierarchy is breaking down (Risk-Off).

Synthetic Charts

Three custom symbols are created by the SyntheticCharts EA:

SymbolContentPurpose
#FIX_ASum of 14 pairs (EUR 7 + GBP 6 + AUDCAD)Building block — avoids formula length limit
#FIX_BSum of remaining 14 pairsBuilding block
#FIX#FIX_A + #FIX_BComplete FBT INDEX — all 28 pairs

Dashboard Integration

The gold-colored FIX block in the basket area provides:

ElementDescription
FIX labelClick to open #FIX synthetic chart
Spread displayTotal spread of all 28 pairs (e.g. "6.6p")
BUY / SELLTwo-click confirmation: first click → "SURE?" (yellow), second click within 3 sec → execute. All trades use SafeOpen (anti-hedge, pyramid rules, BE-move, spread check)
CLOSECloses all positions (equivalent to CLOSE ALL)
Score Panel rowFIX line shows Sess/Today/W2D pip sums for all 28 pairs combined
28× Spread Warning: Opening all 28 pairs at once incurs significant spread cost. At an average of 0.3 pips per pair, that's roughly 8.4 pips total. The spread guard blocks FIX trades when total spread exceeds 3.5× your MaxBasketSprd setting. Only trade FIX during low-spread sessions (London/NYC overlap).
Trading Application: Use the #FIX chart with support/resistance levels to identify RiskON/RiskOFF sentiment shifts. A bounce off a #FIX support level = market returning to risk appetite = BUY FIX. A break below = risk-off acceleration = SELL FIX. Combine with RON/ROFF indicator for confirmation.
9

Indicators

BasketSignal (v1.11)

Attach to any synthetic chart (#EUR, #GBP, etc.). Displays entry signals, pair breakdown, and CLS chart lines.

FeatureDescription
Reversal arrows (▲/▼)Triangle signals when momentum reverses with high coherence
Extreme arrows (↑/↓)Arrow signals when momentum crosses extreme threshold and reverts
Pre-signal blinkSignal text blinks [R] or [E] when Bar 0 meets conditions (not yet confirmed)
Pair breakdown panelShows all pairs in the basket with individual pip values and direction arrows
Σ pips displayLarge number showing total pip sum (open-to-close for current bar, close-to-close for history)
Coherence displayShows how many pairs agree on direction (e.g. 6/7 = STRONG)
CLS chart linesRed SL line + Green TP line + Cyan/Orange entry line — draggable, bidirectional sync with EA
EA Magic Number: Set the EA Magic Number input to match your EA's Magic Number (default: 1111). This enables the CLS chart lines to synchronize with the Pending Panel.

BasketBreakout (v1.11)

Attach to any synthetic chart. Draws session breakout diamonds (★) when the basket moves significantly from the session open.

FeatureDescription
Session diamondsGreen ★ = bullish breakout, Red ★ = bearish breakout
Session linesVertical lines marking session boundaries
Per-bar ATRNon-repainting: each bar uses its own historical ATR, not the current global ATR
One signal per sessionMaximum one diamond per session per day — no duplicates
Non-repainting: Diamonds survive timeframe changes and chart switching. Once placed, they never move or disappear. This was fixed in v1.11 — earlier versions had repainting issues on TF change.

DayLevels (v1.06)

Attach to any synthetic chart. Shows Yesterday High/Low, Today High/Low, and ADR% as price-anchored objects.

ElementDescription
YH / YLYesterday High / Low — horizontal lines
TH / TLToday High / Low — filled rectangle for today's range
ADR%Color-coded: Green <50%, Yellow 50-80%, Red >80%

RONROFF (v1.01)

Displays RON/ROFF strength on any chart. Uses a cache-based architecture (5000 bars) for stable performance across timeframe switches.

8

Troubleshooting

EA Won't Load

SymptomCauseFix
"Invalid Beta Key"Wrong or empty keyEnter correct key in Settings → Beta Key
"Beta Key expired"Date past expiryContact Matt for updated version
"Demo Only"Tester key used on live accountYou need Alpha or PRO access for live trading — contact Matt to upgrade
"ALPHA CAP" alert on startupSettings exceed Alpha limitsNormal behavior — $/pip and lot are capped automatically. Upgrade to PRO for no restrictions
"Symbol not found"Pairs missing in Market WatchRight-click Market Watch → Show All

No Trades Opening

CheckWhat to Look For
AUTO ON/OFFMust show AUTO ON for auto-trading
SessionInfo panel must show active session (S1/S2/S3), not OFF
FiltersScore filter at ±4 is very strict — only the strongest setups trigger
SpreadsHigh spreads (weekends, news) block all entries
CyclesIf Cycles shows 1/1W or 1/1L, auto trading has paused — use RESET EA
Kill SwitchIf Kill Switch is enabled and a trigger fired (SL WARN, HARD KILL, or TP KILL), auto trading is blocked until next day reset
COT ScoresAll zeros = no score differential = no signals
TP-Hit BlockIf a pair was closed by TP this session, it is blocked until the next session starts — check Experts tab for "[MATTRIX] TP hit detected" messages

Daily P/L Shows Wrong Value

SymptomCauseFix
Daily P/L resets to 0 after F7Old EA version (pre-GlobalVariable fix)Update to latest EA — Kill Switch state now persists across restarts
Daily P/L shows +$100k or similarGlobalVariable from different account (e.g. FTMO value on ICM)Tools → Global Variables (F3) → delete MATTRIX_KillDayBal_{magic} → restart EA
Balance shows 0.00Demo account disconnected or expiredCheck MT5 connection — right-click account → Login

PipD ≠ PipS in Session 1

Both should be identical in Session 1 because they both reference 00:00. If they differ, the EA was loaded before M1 history was synchronized. The deferred initialization (v2.00+) fixes this automatically. If you still see differences, restart the EA — check Experts tab for "Deferred init — session/week/day bids loaded from M1 history" message with "28/28 from history".

Dashboard Missing or Cut Off

Adjust Dashboard X/Y origin in settings. On smaller screens, move origin closer to (10, 50). The dashboard requires approximately 1250px width and 600px height for full display.

Synthetic Charts Empty

MATTRIX_SyntheticCharts.ex5 must be running on a separate chart. History is built on the first tick after attaching — wait for market hours. Check Experts tab for "10/10 synthetic symbols ready".

Dashboard Text Sizes Wrong (DPI Scaling)

On laptops with Windows display scaling above 100% (e.g. 125%), MT5 objects may render at wrong sizes — text overlaps, buttons misaligned, fonts too large or too small.

1
Right-click terminal64.exe → Properties
2
Tab Compatibility
3
Click Change high DPI settings
4
Check Override high DPI scaling behavior
5
Dropdown: select Application
6
OK → OK → Restart MT5

Arrows Duplicate on Chart Switch

If BasketSignal arrows multiply when switching between charts or timeframes, update to v1.11. Earlier versions deleted and recreated all arrows on each TF change, causing duplicates during history loading. v1.11 preserves existing arrows across TF changes.

Getting Help

Post in the Discord #bug-reports channel with a screenshot of the Experts tab (Ctrl+T → Experts) and your issue description. Include your broker name and account type (demo/live).