Backtest Robustness Checker

  • Indicators
  • Kazuma Uezono
    Kazuma Uezono
    MQL5 / MQL4 / Pine Script v6 developer and active trader.
    Seller on the MQL5 Market (indicators for MT4/MT5).
    Services:
    - TradingView Pine Script to MT5/MT4 conversion (bar-by-bar matching, with tester report)
    - MT4 to MT5 migration
  • Version: 1.1
  • Activations: 5
Backtest Robustness Checker is an indicator for MetaTrader 5 that reads a list of your closed trades and shows how the statistics change when the same trades come in a different order, when some trades are missing, or when the largest wins are taken out. The trades can come from your account history, from a Strategy Tester or account report saved as HTML, or from a simple CSV file. The results are shown in a panel on the chart and can be saved as CSV.

It shows statistics of past trades only. It does not predict or guarantee future results, it does not tell you whether a strategy or an EA is good, profitable or "robust", and it gives no pass or fail verdict. A Monte Carlo value such as "95th percentile of max drawdown" describes shuffled copies of your past trades; it is not the probability of a future drawdown. How you use the numbers is your decision.

It is read-only: it never places, modifies or closes orders and gives no buy or sell signals. In the Strategy Tester (and in the automatic check of the Market) there are no trades of your own, so it shows built-in SAMPLE DATA, marked in orange as "not real".

Features
- Three data sources: account history (filter by magic numbers, symbols and closing date), a file in MQL5\Files (an MT5 report saved as HTML, or a CSV), or the built-in sample of 400 demo trades.
- Original order: trades, net profit, profit factor, win rate, average P/L per trade, max drawdown (amount and %), max consecutive losses, longest underwater period (in trades).
- Shuffled trade order (Monte Carlo): the same trades in random order, repeated (default 1,000 times). Min, 5%, 25%, 50%, 75%, 95% and max of max drawdown, max drawdown %, max consecutive losses and longest underwater; the share of shuffles with a drawdown at least as large as the original; the share above a drawdown % you set; a histogram.
- Random trade removal: each run drops every trade with the probability you set (default 10%) and keeps the rest in the original order. Percentiles of net profit, profit factor, max drawdown and trades kept, the share of runs with net profit <= 0, and a histogram.
- Remove the largest wins: net profit, profit factor and max drawdown without the K largest winning trades (default 5).
- Yearly table (trades, win %, net, PF, max DD within the year, max losing streak, average) and monthly table of net profit, by closing time. Long tables are split into pages.
- CSV export (button): settings, all statistics, percentiles, yearly and monthly tables, the trade list and, as an option, one row per simulation. Saved in MQL5\Files.
- Fixed random seed: the same data, settings and seed always give the same result.
- Panel in English or Japanese (automatic from the terminal language), light or dark colors from the chart background, any corner, three sizes, collapsible. Several copies on one chart are stacked.

Main Inputs
- Trades to analyze: data source; account: magic numbers, symbols, closed from / until, include commission, fees and swap; file: name in MQL5\Files, read from the common Files folder; starting balance for DD % (0 = automatic).
- Simulation: number of simulations (10-100000, default 1000), random seed (default 12345), share of trades removed (1-90 %, default 10), number of largest wins removed (0-1000, default 5), count simulations with max DD above this % (default 20, 0 = off).
- Panel: page shown first, rows per page, language, corner, offsets, size, colors, start collapsed, CSV button, CSV with one row per simulation, recalculate when new trades close.
- 27 inputs in 4 groups.

How It Is Calculated
- Profit of a trade = profit + commission and fees + swap (for account history, costs can be excluded). A trade is a win or a loss when it is more than half of the smallest currency unit away from zero (files and sample: 0.005), otherwise it is break-even. Profit factor = gross profit / gross loss.
- Balance curve = starting balance + cumulative P/L of the trades in closing order. Max drawdown = the largest fall from a previous high; max drawdown % = that fall divided by the balance at the high. Open positions and floating P/L are not included.
- Starting balance (automatic): account history = the account balance just before the first selected trade closed; HTML = the balance rows before the first trade; sample = 10,000. Deposits and withdrawals after the first trade are not added to the curve, so the DD % denominator does not include them. The input "Starting balance for DD %" overrides the automatic value.
- Account history: one trade = one position (partial closes belong to the same trade, a Close By of two positions is one trade, a netting reversal is split).
- HTML report: one trade = one closing deal (out, in/out, out by) in the Deals table. Each partial close counts as a separate trade, so the number of trades, win rate and PF can differ slightly from the account history of the same trades. A report has no position IDs, so each closing deal is matched to open volume by a rule (same symbol, opposite side; the oldest open deal with exactly the same remaining volume, otherwise first in, first out). With hedged positions of different volumes this matching is an estimate, and so is the share of opening commission and swap given to each trade. The totals are exact.
- CSV: one line per trade, "time,profit" (comma, semicolon or tab; time as YYYY.MM.DD HH:MM or YYYY.MM.DD HH:MM:SS, "-" or "/" also accepted), or a single profit column (then no yearly or monthly tables). Decimal point "." only, no thousands separators. Lines are used in the order of the file. A first line that cannot be read is treated as a header; other unreadable lines are counted as skipped rows; lines starting with # are ignored. A CSV has no balance: set the starting balance in the inputs to see DD %.
- If the starting balance is unknown, the panel shows "unknown" and no DD % values are calculated. Amounts are still shown.
- Shuffle: Fisher-Yates from the original order each time. Removal: one random number per trade. Random numbers: splitmix64 from the seed (removal uses seed + 1). Percentiles: linear interpolation.
- Work limit: simulations x trades is kept at or below 100 million per simulation type. Above that, the number of simulations is reduced automatically (at least 10) and the panel says so. For example, 50,000 trades are run with 2,000 simulations. Large runs are calculated in steps with a progress line, so the chart does not freeze.

Notes and Limits
- Statistics of past trades only. They are not a forecast, a guarantee, a pass / fail test of a strategy, a trading signal or advice.
- The shuffle and the removal treat every trade as a fixed amount that does not depend on the other trades. For systems where trades depend on each other or on the balance (for example grid, martingale, averaging, or lot size that grows with the balance), the simulated results can be far from what such a system could actually do.
- A backtest result depends on the test settings (period, symbol, spread, commission, tick model). This tool only reads the result you give it and does not check how the test was made.
- .xlsx (Open XML / Excel) reports cannot be read. Save the report as HTML, or use CSV. Files larger than 64 MB are not read, and at most 2,000,000 trades are used.
- Only files inside MQL5\Files (or the common Files folder) can be read. The file name must not contain ".." or ":".
- MT5's default report names contain the account number (for example ReportTester-12345678.html). The panel and the exported CSV show the file name, so rename the file before you take screenshots or share the CSV.
- Yearly and monthly tables use the closing time as written in the data (server time for MT5 reports and history).
- In the Strategy Tester the source "Account history" has no trades of your own, so SAMPLE DATA is shown, and the CSV button is hidden. Use it on a normal chart for your own data.

Compatibility and Support
- MetaTrader 5 only. Hedging and netting accounts, any symbol and timeframe (the chart symbol does not matter).
- No DLLs, no internet access. It writes a file only when you press the CSV button.
- Support through MQL5 messages, reply within 3 business days: installation, settings, loading files and bug reports. We cannot judge whether your strategy or EA is good, read your results as advice, give market views or make trade decisions for you.
- No result of your trading is promised or implied.
More from author
Elliott Wave Auto Count for MetaTrader 4 labels Elliott waves automatically on four degrees at the same time: the base degree and the three degrees above it. It follows the rules and guidelines of "Elliott Wave Principle" (Frost & Prechter), and for the current wave it shows a price x time target zone and an invalidation level. It is meant for MT4 traders who use Elliott wave analysis and want a rule-based starting count, with the alternate count and the invalidation level always visible. It is
Fibo Price Time Zones combines Fibonacci price levels with Fibonacci time targets and draws them on the chart as boxes (price x time zones). Where boxes from several waves and from up to two higher timeframes overlap, the area is emphasized in three levels. It is meant for traders who already use Fibonacci retracements and extensions and also want to see roughly when a level is worth watching, without drawing every tool by hand. It is a display tool only: it gives no buy or sell signals and doe
Supply & Demand Zones marks supply and demand zones on a MetaTrader 5 chart with one fixed, fully published rule: a strong bar (body at least X times ATR) that leaves a short "base" of small-body bars behind it. The base becomes a demand zone when the strong bar is bullish and closes above it, or a supply zone when the strong bar is bearish and closes below it. Each zone shows its state: fresh, touched with a count, or broken. It is meant for traders who draw these zones by hand and want them d
FREE
RSI AutoScale is a clean, lightweight RSI for traders who use both TradingView and MetaTrader 5 and want the two charts to look the same. WHAT IT SHOWS - RSI (Wilder smoothing): the same values as the standard RSI, with any applied price. - Signal line on the RSI: SMA, EMA, SMMA or LWMA, with its own period. - Levels: upper, middle and lower lines (70 / 50 / 30 by default). They use MT5's native levels, so they reach the right edge and their values appear on the scale. - Zone fills: the middle
FREE
Stoch RSI Band Fill is a Stochastic RSI indicator for MetaTrader 5. MT5 does not include a built-in Stoch RSI, so this indicator adds one. It follows the same calculation steps as the built-in Stoch RSI on TradingView and uses the same layout: K and D lines, 80 / 50 / 20 levels and a shaded band between the upper and lower levels. CALCULATION, STEP BY STEP 1. RSI of the selected price (default: close, length 14), smoothed with Wilder's method (RMA). The first average is the simple average of the
FREE
Pivot Points Six Types with Level Alerts is a TV-compatible pivot point indicator for MetaTrader 5. It uses the same formulas and the same period boundaries as the "Pivot Points Standard" indicator that comes with TradingView, and it draws the levels the same way: short horizontal lines that start at the first bar of each period, with "R1 (price)" style labels in orange (#FB8C00). SIX CALCULATION TYPES The levels are calculated from the high, low and close of the previous period. - Traditional
FREE
Supertrend Trend Fill with Change Alerts is a TV-compatible Supertrend for MetaTrader 5. It uses the same calculation as the "Supertrend" indicator built into TradingView and draws it the same way: a green line below price in an up trend, a red line above price in a down trend, and a light fill between the line and the middle of each candle body. Supertrend shows the direction of the trend. It is a charting aid, not a buy or sell signal, and it does not predict where price will go. HOW IT IS C
FREE
MACD Four Color Histogram is a MACD for MetaTrader 5 that uses the same formula and the same look as the built-in MACD on TradingView. It is made for traders who use both platforms and want the MACD on each chart to read the same way. HOW IT DIFFERS FROM THE MT5 STANDARD MACD - MT5 standard MACD: the histogram is the MACD line itself, and the signal line is an SMA. - This indicator: three parts, as on TradingView. MACD line, signal line, and histogram = MACD - signal. The histogram has 4 colors.
FREE
VWAP Band Fills with Anchored VWAP is a TV-compatible VWAP for MetaTrader 5. It uses the same formula as the built-in "VWAP" indicator of TradingView (Pine ta.vwap), offers the same inputs - anchor period, source, offset, standard deviation or percentage bands #1 to #3 - and draws it the same way: a blue VWAP line, green / olive / teal bands and light fills between them. An optional anchored VWAP starts from a vertical line that you drag to any bar. HOW IT IS CALCULATED For every bar of the cu
FREE
Prior Day Week Month Levels with Touch Alerts draws the previous day, week and month high and low on your MetaTrader 5 chart as clean horizontal lines with labels at the right edge, in the style of TradingView. It can also show the previous day's close and today's open. LEVELS - PDH / PDL: previous day high and low (blue #2962FF, solid) - PWH / PWL: previous week high and low (orange #FF9800, dashed) - PMH / PML: previous month high and low (purple #9C27B0, dash-dot) - PDC: previous day close (
FREE
Candle Countdown Tag with Spread shows how long the current candle has left, in a small colored tag right next to the last candle - the way TradingView shows its bar countdown. The same tag can also show the current spread, the time left of up to two more timeframes and the open time of the next candle. It is a display tool for MetaTrader 5: no alerts, no signals, no trading. WHAT IT SHOWS - Time left of the chart timeframe: mm:ss under one hour, hh:mm:ss under one day, "2d 04:15:30" for longe
FREE
Do you mark supply and demand zones by hand and get a slightly different result every time? This free MetaTrader 4 indicator draws them with one fixed rule that is written out in full below, so you can check every zone yourself. The idea: a strong candle (body at least X times ATR) leaves a "base" of 1 to 10 small candles right before it. A bullish strong candle that closes above the base turns it into a demand zone; a bearish one that closes below it turns it into a supply zone. The indicator
FREE
This is the MetaTrader 4 edition of RSI AutoScale. It draws the standard Wilder RSI with a signal line, a shaded band between the levels, colored areas where the RSI leaves that band, and a choice of three scales. It is meant for traders who use TradingView and MetaTrader 4 side by side and want the RSI pane to look much the same on both. HOW IT LOOKS ON MT4 - RSI line: the same values as MT4's built-in RSI for the same period and applied price. - Signal line: a moving average of the RSI (SMA, E
FREE
Supertrend Trend Fill with Change Alerts MT4 brings a TV-compatible Supertrend to MetaTrader 4. If you also use TradingView, you know its built-in "Supertrend": a green line under price while the trend is up, a red line over price while it is down, and a soft colored band between the line and the candles. This MT4 indicator reproduces that calculation and that look. What it is for: seeing the current trend direction and where it would flip. What it is not: a buy or sell signal or a forecast. A
FREE
A MetaTrader 4 MACD built to read like the MACD you see on TradingView: a MACD line, a signal line, and a histogram of the gap between them, colored in four shades. If you switch between the two platforms during the day, the MACD pane on your MT4 chart will look and behave the way you are used to. WHY NOT THE MT4 BUILT-IN MACD? MT4's own MACD draws the MACD line as gray bars and smooths the signal line with an SMA. There is no separate histogram and no color change. This indicator calculates the
FREE
MetaTrader 4 ships with a Stochastic and an RSI, but not with a Stochastic RSI. This indicator fills that gap for MT4 users and is built to be TV-compatible: it follows the calculation of the Stoch RSI that comes with TradingView, and the pane looks the way TradingView users expect - a blue K line, an orange D line, dashed 80 and 20 levels, a dotted 50 line and a light band between 80 and 20. WHAT APPEARS IN THE SUBWINDOW - K and D lines. The Data Window lists only K and D. - Upper band (80) a
FREE
Pivot Points Six Types with Level Alerts MT4 brings TV-compatible pivot points to MetaTrader 4. If you also chart on TradingView, you know its built-in "Pivot Points Standard". This MT4 indicator reproduces it: the same six calculation methods, the same period choices from one day to ten years, and the same look - an orange (#FB8C00) line for each level, starting at the beginning of each period, labelled like "S2 (1.08345)". WHICH LEVELS EACH METHOD GIVES Method | Levels drawn | Note Tradition
FREE
Prior Day Week Month Levels with Touch Alerts MT4 puts yesterday's, last week's and last month's high and low on your MetaTrader 4 chart, drawn the way TradingView users are used to seeing them: thin horizontal lines with a short label and price at the right edge. Optional extras: previous day close and today's open, and an alert when price touches a line. WHAT YOU SEE Line | Meaning | Default look PDH | previous day high | blue #2962FF, solid PDL | previous day low | blue #2962FF, solid PWH |
FREE
VWAP Band Fills with Anchored VWAP MT4 brings the VWAP of TradingView to MetaTrader 4. If you use TradingView's built-in "VWAP", you will find the same inputs here (Anchor Period, Source, Offset, Bands Calculation Mode, Bands Multiplier #1 to #3, Hide VWAP on 1D or Above), the same formula (Pine ta.vwap) and the same colors - plus an anchored VWAP that starts wherever you drag a vertical line. THE FORMULA Within each anchor period, bar by bar: VWAP = sum(source x tick volume) / sum(tick volume
FREE
Candle Countdown Tag with Spread MT4 puts a TradingView-style countdown on your MT4 chart: a small tag beside the last candle that tells you when the bar closes, together with the current spread. Optional extra lines show the time left of two more timeframes and when the next candle opens. Nothing else - it does not trade, alert or give signals. ONE TAG, UP TO FIVE LINES Line | Example | Setting Chart timeframe | 12:41 | on by default Extra timeframe 1 | H4 02:12:41 | off (choose a timeframe t
FREE
Dow Structure MTF shows the Dow theory trend of five timeframes at once in MetaTrader 4, using the pullback low / rally high method that is common among Japanese traders. For each timeframe it shows whether the trend is up, down or range, which price would change it, and how far the current price is from that price. Only closed bars are used, so a confirmed result does not change afterwards (no repaint). It is meant for traders who check the trend structure of several timeframes by hand and wan
Fibo Price Time Zones for MetaTrader 4 combines Fibonacci price levels with Fibonacci time targets and draws them on the chart as boxes (price x time zones). Where boxes from several waves and from up to two higher timeframes overlap, the area is emphasized in three levels. It is meant for MT4 traders who already use Fibonacci retracements and extensions and also want to see roughly when a level is worth watching. It is a display tool only: it gives no buy or sell signals and does not place ord
Time Average Lines draws four averages measured by time, not by the number of bars, so each line keeps the same length of time when you switch timeframes: a time moving average, a TWAP, a same-time-of-day average and a time-based EMA. For the same-time average, the rest of today is shown as a dotted path that joins the past averages; the path is a summary of the past, not a forecast. It is meant for intraday traders who want averages that mean the same thing on M1 and on M15, and who want to co
Auto Trendline Channel MTF draws trendlines, parallel channels and horizontal support / resistance automatically from confirmed swing highs and lows in MetaTrader 4, and records for each line the touch count, close breaks, wick breaks and retests. A table shows, for the chart timeframe and two higher timeframes, the nearest line above and below the price, the distance to it and the Dow theory direction. It is meant for traders who draw trendlines and levels by hand and want them drawn by fixed,
Currency Strength Meter for MetaTrader 4 combines the 28 pairs of the 8 major currencies (USD, EUR, JPY, GBP, AUD, NZD, CAD, CHF) into one strength line per currency, with a ranking table for the chart timeframe, M15, H1, H4 and D1. The full formula is published below. It is meant for MT4 traders who compare currencies before choosing which pair to look at, and who want to know exactly how the numbers are made. It is an analysis aid: it does not tell you when to buy or sell and does not show fu
Trade History Stats Panel for MetaTrader 4 reads the closed trades in your own account history and sums them up in a panel on the chart: number of trades, win rate, profit factor, average P/L per trade, drawdown of the closed-trade curve, holding time, buy / sell, and tables by month, symbol, weekday and hour. It is meant for traders who want to look back at their own past trades, like a trading journal that fills itself in, and to check the numbers by period, symbol or magic number. It never p
Prop Challenge Loss Tracker for MetaTrader 4 shows, in a panel on the chart, how much room is left before the daily loss limit and the maximum loss limit of a funded-account (prop) challenge are reached, and sends staged alerts as the limits are used up. It is meant for traders taking a prop challenge who want to see their remaining loss room at a glance, set to the rules of their own program. It is a display and alert tool only: it never opens, modifies or closes any order. Whether a limit is
Market Structure Liquidity Map for MetaTrader 4 draws smart money concepts (SMC) style market structure on the chart: swing labels, break of structure (BOS), change of character (CHoCH), equal highs and lows, previous day and week levels, liquidity sweeps and unfilled fair value gaps (FVG), with a small table for the chart timeframe and two higher timeframes. It is meant for MT4 traders who read structure and liquidity by hand and want the same levels drawn the same way every time. It is a disp
Divergence Detector for MetaTrader 4 finds regular and hidden divergences between price swings and one oscillator of your choice (RSI, MACD histogram, Stochastic %K, OBV, CCI or Momentum) and draws them on the price chart and in the indicator window, with a small table for four other timeframes. It is meant for MT4 traders who look for divergences by eye and want them found by fixed, visible rules on closed bars. It is a display tool only: it gives no buy or sell signals and does not place orde
Multi Symbol Market Scanner Panel shows up to 30 symbols in one table on your MT4 chart: trend direction, RSI and ATR% on M15, H1, H4 and D1, plus today's range, distance from yesterday's high or low and a simple H1 / H4 swing structure. Click a symbol name to switch the chart to it. It is meant for MT4 traders who watch many forex pairs, metals or indices and want one overview instead of opening many charts. It is a display tool only: it gives no buy or sell signals, does not rank symbols to t
Filter:
No reviews
Reply to review