Opal EA Review: MT4 Backtest, Recovery Grid & Live Results

Opal EA was tested on EURUSD H1 across six years of MT4 tick data. The test finished profitable — $574.95 on a $1,000 account — but the headline figures need qualifying. Profit Factor was 1.34. The average winner was $0.38 and the average loser $1.68, which puts the 85.74% win rate less than four percentage points above the rate the payoff structure requires to break even.

The order history explains the structure. Most cycles opened one position, targeted roughly a pip and a half, and closed within minutes. When an entry moved the wrong way, Opal added same-direction positions on a widening grid, scaled the volume, and moved the group toward one shared exit. I reconstructed 6,009 of those cycles from the raw order rows; 88% never needed a second position.

Two results from that reconstruction are worth stating up front. The reported 21.78% drawdown is not a closed-balance figure — the closed-trade balance never fell more than 6.10% — and the evidence points to a single eight-position basket held over the 2023/24 New Year as its main source. Separately, the vendor’s round-number claim is testable against the trade record, and initial entries show strong avoidance around whole-figure levels.

Key findings

  • Profitable, with a thin margin. Net $574.95, Profit Factor 1.34, expected payoff $0.08 per position. Break-even win rate implied by the average payoff is 81.76%; observed was 85.74%.
  • Around $548.75 of non-price deductions are inferred from the difference between executed-price P/L ($1,123.46) and booked P/L. About $517.58 reconciles to commission under the tested account schedule.
  • 81.4% of net profit came from cycles that never needed a second position. Cycles that did invoke recovery remained profitable in aggregate (+$106.83), but the deepest groups became far less productive.
  • No broker-side Stop Loss appears anywhere in the record — zero non-zero S/L across all 16,584 entry, modification and exit rows — and every exit is a take-profit, including legs that closed at a loss inside a basket.
  • The observed volume progression matches 0.01 × 1.27ⁿ rounded to the broker step, giving a 0.01 / 0.01 / 0.02 / 0.02 / 0.03 / 0.03 / 0.04 / 0.05 ladder and 0.21 lots at maximum basket exposure.
  • Accessible live statistics are broadly consistent with the tested profile on win rate, holding time and payoff shape, but only ten rows from the 1,972-item live history were retrievable, so no basket-by-basket comparison was possible.

What was tested

Opal is an MT4 Expert Advisor sold on the MQL5 Market by Oeyvind Borgsoe, who is also listed as CEO of Relevant Trading. The product page was published on 11 November 2023 and shows version 1.0, priced at $580. The stated recommendations are EURUSD, H1, a $100 minimum deposit, and an ECN or RAW account on a VPS, with the default configuration described by the vendor as low-mid risk. The description lists a Money Management module, round level price identification, a time filter, a news protection filter and a recovery system.

The question this test was built around is not whether the historical curve rises. It is what the system does when the first position is wrong, since that is where a recovery grid concentrates its risk.

Test setup and headline results

Test setup

The test ran on an IC Markets demo server, MT4 build 1470, every-tick model at 99.90% modelling quality with zero mismatched chart errors, across 37,623 hourly bars and 201 million modelled ticks. Historical tick data and variable spread came from Tick Data Suite with Dukascopy data, following the EA ForexLab testing methodology.

ParameterValue
Expert AdvisorOpal EA (MetaTrader 4)
Broker serverICMarketsSC-Demo03
Terminal build1470
SymbolEURUSD
TimeframeH1
Period tested13 January 2020 – 20 February 2026
ModelEvery tick
Modelling quality99.90%
Mismatched chart errors0
Bars in test37,623
Ticks modelled201,342,486
Initial deposit$1,000
SpreadVariable
Tick data / spread sourceTick Data Suite v2, Dukascopy tick data (EA ForexLab test record)
Commission inferred/reconciled from executed-price vs booked P/L~$7.00 per round-turn standard lot (~$0.07 per 0.01 lot); no separate commission field in the report
Lot modeFixed, Lots=0.01, AutoLot=false
Take Profit1.5 pips
MaxOrders input8
Observed maximum same-direction basket depth8 positions
Grid stepsStep1=15, Step2=20, Step=40
Volume scaleScale=1.27
Trading windowStartHour=3, StopHour=21 (server time)
Spread filterUseSpreadFilter=true, MaxSpread=1.5
News filterUseNewsFilter=true
Year-end protectionProtectEndYear=true, XDBefoeEY=15, XDAfterEY=15, CloseEndYear=true, DoNotTradeEY=true
Equity protectionEquitySave=false, EquityRisk=70

The report prints no commission line, but a non-price deduction is recoverable from the results. A 0.01-lot position closing 1.5 pips in profit corresponds to $0.15 of price movement; the modal booked win is $0.08. Measuring the difference between executed-price P/L and booked P/L across intraday positions gives a median of $0.07 per 0.01 lot, scaling linearly to $0.14 at 0.02 lots and $0.21 at 0.03 lots — $7.00 per round-turn standard lot, matching the IC Markets Raw Spread commission schedule. Slippage was not separately simulated. MaxSpread=1.5 is an EA filter input and is not a measurement of the historical spread.

MT4 Strategy Tester report for Opal EA on EURUSD H1 showing 574.95 net profit, 1.34 profit factor and 21.78% relative drawdown
Opal EA, EURUSD H1, 2020–2026, every tick at 99.90% modelling quality.

MT4 backtest results

Every figure below was checked against the report and recomputed from the 16,584 order rows underneath it.

MetricResult
Net profit$574.95
Gross profit$2,261.93
Gross loss−$1,686.97
Profit Factor1.34
Expected payoff per position$0.08
Absolute drawdown$84.68
Maximal drawdown$306.74 (21.78%)
Relative drawdown21.78% ($306.74)
Total positions7,033
Winning positions6,030 (85.74%)
Losing positions1,003 (14.26%)
Short positions3,402 (86.24% won)
Long positions3,631 (85.27% won)
Largest winning position$52.56
Largest losing position−$24.12
Average winning position$0.38 (3.09 pips)
Average losing position−$1.68 (−14.31 pips)
Break-even win rate implied by payoff81.76%
Margin above break-even3.98 percentage points
Positions with a broker-side Stop Loss0 of 7,033
Positions closed by take-profit7,033 of 7,033
Inferred non-price deductions$548.75
Executed-price P/L before inferred non-price deductions$1,123.46

Summing the displayed profit column gives $574.71 against the report’s $574.95 summary — a difference of $0.24 across 7,033 rows, consistent with displayed-row rounding or hidden terminal precision. The MT4 summary is used for headline figures; reconstructed rows are used for everything derived.

Equity curve and drawdown chart for Opal EA showing steady growth with a step change in early 2022 and deeper drawdown bands in 2023
Balance and drawdown across the test. The step in early 2022 and the widening bands in 2023 correspond to specific recovery baskets.

Why the 85.7% win rate needs context

With an average winner of $0.3752 and an average loser of $1.6821, the break-even win rate is 1.6821 ÷ (1.6821 + 0.3752) = 81.76%. Opal delivered 85.74%, a margin of 3.98 percentage points.

That framing is arithmetically correct but uses the wrong unit for this system. Many of the 7,033 positions are not independent outcomes — they are legs of the same trade decision, opened minutes or days apart and closed at the same instant. Grouping them changes what the statistics describe.

How Opal’s recovery system works

How the recovery system is structured

Positions were grouped into cycles by direction and shared exit timestamp, and the grouping was then validated rather than assumed. All 711 multi-position groups close at a single common timestamp, and all 711 carry a single common modified take-profit across every member — a property independent of the grouping rule itself. The 2,518 order-modification rows are the mechanism: recovery positions open with no take-profit or with one subsequently rewritten, and the group’s take-profit levels are aligned to one shared price.

Most observed additions cluster tightly around the configured Step1=15, Step2=20 and Step=40 thresholds, while a small number of large spacing outliers require separate interpretation. Median leg-2 spacing was 15.1 pips, median leg-3 spacing 20.1 pips, and median leg-4-onward spacing 40.0–40.1 pips, with 98.5%, 94.6% and 95–100% of observations within one pip of threshold. Only six of the 1,024 recovery additions were spaced more than five pips beyond their threshold; each was audited individually. Two were leg-2 additions on a single fast hour (25.6 and 28.3 pips). Two crossed multi-day adverse moves before the next fill (135.3 and 136.8 pips, one over a weekend), which are legitimate large overshoots rather than threshold breaches. The remaining two belong to one basket whose three entries share a single timestamp, where the apparent 35-pip spacing is an artefact of ordering three simultaneous fills — measured between price-adjacent levels, that basket’s spacing is exactly 15 and 20 pips. No outlier indicated a different recovery behaviour.

The observed volume progression is consistent with a geometric rule. Scale=1.27 applied compounding and rounded to the 0.01 broker step gives 0.01, 0.01, 0.02, 0.02, 0.03, 0.03, 0.04, 0.05, which matches the realised sequence in all three depth-8 baskets and the modal lot at every leg index — though the trade history shows the progression rather than exposing the internal rule. Across 7,033 positions, 6,720 were 0.01 lots, 276 were 0.02, 29 were 0.03, five were 0.04 and three were 0.05.

The label matters here. A martingale doubling from 0.01 would reach 1.28 lots at the eighth step and 2.55 lots cumulatively. Opal reaches 0.05 and 0.21 — a 21-fold increase in exposure rather than 255-fold. Progressive recovery grid describes the geometry more accurately than martingale, and the operative risk is cumulative exposure held open during an adverse move rather than the label itself.

How often recovery was invoked

Of 6,009 reconstructed cycles, 5,298 closed on the first position — 88.17%. The remaining 11.83% expanded.

Basket depthCyclesShare of cyclesNet P/LMedian durationLongest
1 position5,29888.17%+$467.882 min2.8 days
2 positions4908.15%+$36.061.7 h2.6 days
3 positions1662.76%+$25.514.7 h4.1 days
4 positions350.58%+$55.3626.0 h5.6 days
5 positions110.18%+$0.112.0 days4.1 days
6 positions40.07%−$7.012.8 days10.7 days
7 positions20.03%−$7.936.6 days8.1 days
8 positions30.05%+$4.734.0 days21.7 days
Total6,009100.00%+$574.713 min21.7 days

Maximum same-direction depth was eight, matching MaxOrders=8. Total account concurrency is a separate figure: buy and sell sequences carry separate magic numbers (BMagic=1, SMagic=2), both RepeatBuy and RepeatSell were enabled, and the two can coexist. The observed peak was ten simultaneous positions on 15 March 2023 at 20:05, with an eight-position buy basket alongside two shorts. Both directions were open simultaneously for 0.71% of the test.

The observation that neither direction exceeded eight while the account reached ten is consistent with MaxOrders constraining a sequence rather than the account. That reading is an interpretation of observed behaviour and is not confirmed by product documentation. Separately, a cap on further additions is not itself a loss cap.

Where the profit was concentrated

Aggregating final basket P/L by depth:

  • Single-position cycles: 5,298 cycles, +$467.88 (81.4% of reconstructed net)
  • Two to four positions: 691 cycles, +$116.93
  • Five to eight positions: 20 cycles, −$10.10

A second decomposition by leg index within the multi-position cycles cuts against the obvious reading of that table. Inside those 711 baskets, the initial positions realised −$1,018.61 and the added recovery legs realised +$1,125.44, netting +$106.83. Only one of the 711 initial legs closed positive; 72.07% of the 1,024 recovery legs did.

Those leg-level figures do not isolate a counterfactual. The realised exit price of every leg in a basket — including the first — is set by the basket-level take-profit that the recovery process itself produced. What the initial position would have returned had no further position been opened cannot be answered from the order history, because the exit that actually occurred is a product of the recovery mechanism. Constructing a no-recovery scenario from hindsight prices would not be evidence.

What the distribution supports is narrower: about 81% of reconstructed net profit came from cycles that never needed a second position; cycles that invoked recovery remained profitable in aggregate; and the deepest groups became much less productive. That shows where the historical profit was concentrated. It does not isolate the marginal contribution of the recovery mechanism itself.

The deepest recovery basket

One sell basket opened on 11 December 2023 and closed on 2 January 2024 — 521 hours, 21.7 days, eight positions.

StepOpen time (server)LotEntryExitPosition P/L
111 Dec 2023 20:000.011.074411.09905−$24.12
211 Dec 2023 20:330.011.075921.09905−$22.61
318 Dec 2023 00:050.021.089451.09905−$18.53
419 Dec 2023 09:140.021.093451.09905−$10.59
519 Dec 2023 16:470.031.097461.09905−$3.85
622 Dec 2023 12:250.031.101461.09905+$7.75
727 Dec 2023 11:400.041.105471.09905+$26.05
827 Dec 2023 16:570.051.109471.09905+$52.56
BasketClosed 2 Jan 2024 13:14 · 21.7 days0.21—1.09905+$6.66

This basket contains both the largest losing position in the test (−$24.12) and the largest winning position (+$52.56). The first two entries lost $46.73 between them; the last two returned $78.61. The group closed +$6.66.

All eight rows are labelled t/p, including the four that lost money. The take-profit closing the group is a basket-level price, and positions on the wrong side of it are closed at a loss by the same order. “Everything closes at take-profit” describes the order type, not the outcome.

EURUSD H1 chart with Opal EA information panel showing multiple stacked same-direction entries connected by dashed lines
Stacked same-direction entries resolving to a common exit.

The February 2022 outlier

The most profitable cycle in six years was a four-position sell basket opened on Friday 25 February 2022 between 14:00 and 18:16, at 1.11850, 1.12004, 1.12204 and 1.12605. It closed at 1.11398 for +$50.58 — 8.80% of net profit from one basket.

The four sell legs above are the entire basket. The basket closed at 00:05 server time on Monday, immediately after the weekend interval in the tested history, at 1.11398 — roughly 100 pips below the highest entry. Whether the closing move was a genuine weekend re-opening gap is not established from the trade record alone, but the group resolved across the weekend break rather than through continuous intraday movement.

Excluding this basket, the test returns $524.13. That is a concentration measure, not an alternative backtest — removing the best outcome from a sample is not a fair test of anything. The relevant point is that a single basket held at a loss contributed 8.8% of six years of net profit, resolving across a discontinuity the strategy cannot schedule.

The worst basket, and the largest losing trade

The largest single losing position, −$24.12, belonged to a basket that finished in profit. The worst basket was a different event: a seven-position buy sequence opened on 27 July 2023 and closed eight days later on 4 August for −$9.14, with legs ranging from −$17.29 to +$31.39.

58 of 6,009 cycles finished negative, averaging −$0.71. At cycle level the Profit Factor is 15.05 and 98.98% of cycles are positive. That figure is an architectural property of basket systems rather than a performance claim: a structure that resolves almost everything positively concentrates its risk in the rare cases where it does not.

What changed the outcome of the deepest baskets

Among the 20 baskets that reached five positions or more, all eleven sell baskets closed positive and all nine buy baskets closed negative. Decomposing each basket into executed-price P/L, inferred commission and a residual non-commission adjustment shows where the split came from.

Basket startDirectionDepthExecuted-price P/LInferred commissionNon-commission adjustment (− deduction / + credit)Booked P/LAdjustment changed the sign after commission?
20 Mar 2020SELL6+$1.17$0.84+$0.00+$0.33No
04 Aug 2020SELL6+$1.18$0.84+$1.44+$1.78No
24 Feb 2021SELL5+$1.02$0.63+$0.32+$0.71No
19 Apr 2021SELL5+$0.94$0.63+$0.40+$0.71No
25 Jun 2021BUY6+$1.23$0.84−$6.33−$5.94Yes
13 May 2022SELL7+$1.74$1.12+$0.59+$1.21No
30 May 2022BUY6+$1.33$0.84−$3.67−$3.18Yes
02 Sep 2022BUY5+$0.93$0.63−$1.28−$0.98Yes
28 Nov 2022BUY5+$0.97$0.63−$1.53−$1.19Yes
09 Feb 2023BUY5+$1.03$0.63−$1.11−$0.71Yes
01 Mar 2023SELL5+$0.86$0.63+$0.72+$0.95No
15 Mar 2023BUY8+$2.39$1.47−$5.39−$4.47Yes
10 Apr 2023SELL8+$2.40$1.47+$1.61+$2.54No
26 Apr 2023BUY5+$0.90$0.63−$1.53−$1.26Yes
02 May 2023SELL5+$1.21$0.63+$0.84+$1.42No
27 Jul 2023BUY7+$1.55$1.12−$9.57−$9.14Yes
11 Dec 2023SELL8+$2.07$1.47+$6.06+$6.66No
11 Jun 2024SELL5+$0.94$0.63+$0.78+$1.09No
13 Nov 2024BUY5+$0.94$0.63−$1.54−$1.23Yes
22 Aug 2025SELL5+$0.99$0.63+$0.24+$0.60No
All 9 deep BUY basketsBUY5–8+$11.27$7.42−$31.95−$28.10Yes, in 9 of 9
All 11 deep SELL basketsSELL5–8+$14.52$9.52+$13.00+$18.00No

The adjustment is defined so that a negative value is a deduction from booked P/L and a positive value is a credit: booked P/L minus (executed-price P/L minus inferred commission). The confirmed derived result is arithmetic. For all nine deep buy baskets, executed-price P/L minus inferred commission remained positive while the booked result was negative, so a residual non-commission adjustment changed the sign in nine of nine cases. Across the nine that adjustment totalled −$31.95. On the sell side it ran the other way, a net +$13.00 credit across eleven baskets.

The interpretation, which the report does not let me confirm: the size of that adjustment ($1.11 to $9.57 per basket, far larger than rounding), its dependence on multi-day holding, and its long-deduction / short-credit asymmetry are a pattern consistent with asymmetric swap or carry. The MT4 report prints no separate swap column, and the swap schedule applied by the tester is not documented in the test record, so I describe this as a residual non-commission adjustment rather than a reconstructed swap figure. The arithmetic is what stands: a residual non-commission adjustment changed the sign of every deep buy basket in this sample, each of which had positive price movement.

Stop loss and loss limits

All 7,033 orders carry S/L = 0.00000, and all 7,033 closed at take-profit. There were no stop-outs and no equity-triggered exits in the test.

No standard broker-side Stop Loss was recorded — not on any of the 7,033 entries, and not on any of the 2,518 later order-modification records either, so no stop was added or moved into place after entry. The stronger finding holds: non-zero broker-side S/L observations across every entry and modify record number zero. The configured equity-protection switch was disabled in this test — EquitySave=false, so EquityRisk=70 was not active as an enabled protection setting. The order history does not establish what additional internal exit logic, if any, could apply after a basket reaches the observed maximum depth. On the three occasions a basket reached eight positions, it resolved at the shared take-profit.

Filters and entry logic

Time filter

All 6,009 new cycles opened in hours 03 through 20 server time, consistent with StartHour=3 and StopHour=21, with none outside. All 6,009 also opened at minute 00, consistent with a decision taken on the H1 bar open.

Recovery additions behave differently: 58 of 1,024 fell outside the window, spanning 21:00 through 02:00, and only 4% landed on the hour. The pattern is consistent with the time filter restricting new cycle initiation while leaving an existing basket under management. Server time is used throughout; no timezone conversion is asserted.

Bar chart of Opal EA wins and losses by hour of day showing activity concentrated between 03:00 and 20:00 server time
Trading activity by hour, with a hard boundary at the configured window.

News and year-end protection

News filter. UseNewsFilter was true, with low, middle, high and NFP pause windows configured, and the chart panel displays “News: No Effective News!”. The historical test does not establish whether a usable historical news dataset was available to the EA during the run. The backtest therefore does not validate the effectiveness of the news-protection feature. I did not build an economic-calendar event-matching test — that would require a documented calendar source, event impact classification, a broker-server-to-UTC mapping and defined matching windows — so I make no claim here about trading during specific events, in either direction.

Year-end protection. The record here splits in two. Across every year of the test, no new cycle opened between 1 and 15 January. The first new cycle of each year fell on 16 January 2020, 19 January 2021, 18 January 2022, 16 January 2023, 16 January 2024, 20 January 2025 and 19 January 2026 — a repeatable suppression matching the span implied by XDAfterEY=15.

The other half is not visible. Ten new cycles opened on 31 December across the test, and December trading continued at normal daily rates through the configured pre-year-end window. Two baskets carried across the year boundary, including the eight-position December 2023 basket, which added recovery positions on 18, 19, 22 and 27 December and closed on 2 January. Two further recovery additions were made on 3 January 2022 to a basket opened on 31 December 2021.

The order history does not demonstrate the pre-year-end restriction or the close-out behaviour implied by CloseEndYear operating as the parameter names suggest, while the post-year-end suppression is present in every year. Parameter semantics may differ from the names, and a tester environment may not exercise every code path.

Round-number levels

The vendor states that Opal uses psychological round-number levels and publishes a separate Round Level Indicator described as drawing psychologically significant levels. The public descriptions do not specify which level family the EA uses, so four families were tested against entry prices: whole figures at 100-pip spacing, 50-pip levels, 20-pip levels and 10-pip levels.

Avoidance appears only around the 100-pip whole-figure family (1.0800, 1.0900 and so on), and only for initial cycle entries. Recovery additions serve as an internal control, since they are generated by a different part of the process.

Among the 6,009 reconstructed initial entries, none occurred within 10 pips below a whole figure, and only ten (0.17%) occurred within 10 pips above one — and those ten all sit at 9.3 to 9.9 pips, at the very edge of the zone. Across the rest of the 100-pip band the entries distribute fairly evenly, between roughly 11.4% and 13.9% per 10-pip slice. The 1,024 recovery additions, generated by a different part of the process, show no such gap: they fall within 10 pips of a whole figure at 10.5% above and 9.7% below, indistinguishable from the rest of the band.

This pattern is strongly consistent with whole-figure avoidance for initial entries. I have stopped short of attaching a significance test to it, because the correct null model is not a uniform distribution: EURUSD did not spend equal time at every price location during the eligible trading hours, and hourly observations are serially dependent, so a naïve test against a flat baseline would overstate the result. The order history contains the entries that occurred but not the full set of eligible bars where no entry occurred, so the market-exposure denominator needed to estimate how much of the gap is attributable to the entry rule cannot be reconstructed from it. The descriptive gap is clear; its exact magnitude relative to market exposure is not quantified here.

The trade history alone does not establish the internal rule, and an input named Rndsize=10 is not proof of its implementation. The effect is also specific to the whole-figure family: at 50-pip and 20-pip spacing no comparable gap appears, so the finding should not be generalised to every “psychological level” the vendor’s wider material references.

Robustness and risk structure

Trade duration

The median position lasted six minutes; the mean lasted three hours and 25 minutes. 47.3% of positions closed within five minutes and 78.2% within an hour, with a tail extending to 21.7 days.

Single-position cycles have a median of two minutes. Positions belonging to a multi-position basket have a median of 124 minutes and a mean of nearly 13 hours. Median duration by depth rises monotonically: two minutes at depth one, 1.7 hours at depth two, 4.7 hours at depth three, 26 hours at depth four, and two to 6.5 days beyond.

Duration does not cause the loss. Baskets remain open longer because price has moved against the position and the shared exit is further away, so the holding time reflects the adverse move rather than producing it.

Histogram of Opal EA trade durations showing most positions closing within five minutes and a long tail extending to weeks
Duration distribution across the reconstructed order history.

Performance by year

Year of initial cycle entryNet basket P/LCycles startedCycles needing recoveryDeep cycles (5+)Maximum depthLongest basket
2020 (partial)+$93.981,083114 (10.5%)26 positions3.7 days
2021+$55.9276486 (11.3%)36 positions10.7 days
2022+$176.001,387170 (12.3%)47 positions5.1 days
2023+$90.56981138 (14.1%)88 positions21.7 days
2024+$61.4072677 (10.6%)25 positions4.1 days
2025+$88.49979119 (12.2%)15 positions3.5 days
2026 (partial)+$8.36897 (7.9%)03 positions17 h
Total+$574.716,009711 (11.8%)208 positions21.7 days

Every calendar-year segment in the tested sample was positive. The complete years 2021–2025 were all positive; 2020 and 2026 are partial periods, since the test starts on 13 January 2020 and ends on 20 February 2026. The spread across the complete years runs from $53.58 to $178.34, and 2022 contributed 31% of the total, with a single February basket accounting for 28% of that year. Positive annual bars establish consistency of sign rather than consistency of return, and are not on their own evidence of regime robustness.

Bar chart of Opal EA annual profit from 2020 to 2026, with complete years 2021 to 2025 all positive and 2020 and 2026 partial
Position results grouped by trade open year. 2020 and 2026 are partial periods.

The chart above groups position results by trade open year, matching the supplied QuantAnalyzer visual; the research table groups complete reconstructed baskets by the year their cycle started. For baskets that open in December and close in January the two conventions assign the result to different years, so the figures differ slightly — 2021 and 2022, for instance, read $55.92 and $176.00 at cycle-start level against $53.58 and $178.34 at position-open level. They answer slightly different questions and are labelled accordingly.

Historical data after the publication date

The MQL5 product page was published on 11 November 2023 and shows version 1.0. Splitting the test at that exact date, with each cycle assigned by its initial entry date, gives the following. No cycle straddles the cutoff, so the split is unambiguous.

  • Before 11 November 2023: 4,125 cycles, 4,838 positions, +$401.39, Profit Factor 1.335, win rate 85.66%, 105.7 positions per month
  • From 11 November 2023: 1,884 cycles, 2,195 positions, +$173.32, Profit Factor 1.355, win rate 85.92%, 80.7 positions per month

The historical segment after the 11 November 2023 publication date remained profitable, with a similar position-level Profit Factor and win rate, although trade frequency was lower. This is not out-of-sample evidence: it cannot be established that the algorithm was frozen, that later data were never used in optimisation, or that the compiled executable is unchanged. The version number is suggestive but is not proof.

Cycle-level Monte Carlo

A Monte Carlo run at individual-trade level is structurally unsuitable for this system. Positions inside one basket are opened conditionally on the previous ones and closed together, so randomly reordering 7,033 individual trades breaks that dependency and generates sequences the EA could not produce. The QuantAnalyzer Monte Carlo supplied with the test set was not used for any published figure, since its simulation count, resampling method and confidence configuration are not established.

The simulation below treats each of the 6,009 reconstructed baskets as one indivisible unit, so positions inside a basket are never separated. 10,000 permutations and 10,000 bootstrap resamples were run.

Cycle-level Monte Carlo chart for Opal EA showing 10,000 permutation paths of 6,009 reconstructed recovery baskets with median and percentile bands
Cycle-level Monte Carlo: 10,000 permutations of the 6,009 reconstructed baskets, each resampled as one indivisible unit. Tests the ordering of realised basket outcomes only, not account equity drawdown. Chart and statistics come from the same simulation.

One point has to come before the numbers, because the numbers are small and could be read the wrong way. This Monte Carlo is not an estimate of maximum account equity drawdown. It tests only the ordering and mix of realised basket outcomes. The drawdown figures below are closed-basket sequence drawdowns — how far a running total of already-realised basket results dips — and they deliberately exclude the floating exposure inside an open basket, which is the actual risk of this strategy.

  • Permutation (order varies, outcome set fixed): final result invariant at $574.71; maximum closed-basket sequence drawdown median $9.14, 95th percentile $10.18, 99th percentile $13.26, worst of 10,000 runs $16.66.
  • Bootstrap (order and mix vary): final result median $570.39, 5th percentile $507.57, 1st percentile $491.89, worst run $462.01; maximum closed-basket sequence drawdown 95th percentile $10.55, worst $24.17.

These figures describe sequence risk on a closed-basket series and nothing more. The simulation does not model floating intra-basket equity, new market price paths, spread or slippage changes, regime changes, dependency between cycles, overlapping opposite-direction exposure, margin and stop-out constraints, or any departure from independent and identically distributed conditions. It says nothing about the exposure open on the account in December 2023, or about what a basket would do at a depth the sample never reached.

What the reported drawdown measures

MT4’s Maximal and Relative Drawdown are equity-based metrics that include floating positions, not simply closed-balance drawdown. Reconstructing the closed-trade balance curve across all 7,033 rows gives a deepest balance drawdown of $86.35, or 6.10% — a separately derived metric, not a restatement of the report’s $306.74.

Even that $86.35 reflects booking order: it occurs entirely within the simultaneous close of the December 2023 basket on 2 January 2024, where the profitable legs are booked before the losing ones. Measured basket by basket on realised results, the deepest drawdown across six years is $9.14.

On attribution, the reported $306.74 is consistent with the December 2023 eight-position sell basket. In late December 2023 the only positions open were that basket’s eight legs, totalling 0.21 lots at a volume-weighted entry of 1.09915. The adverse price required to produce a $306.74 floating loss on that exposure is approximately 1.11376, which lies inside the late-December 2023 EURUSD range, and the closed balance immediately before 28 December was $1,409.99 against an equity peak of $1,408.36 implied by the report’s own 21.78% ratio. The timing, basket exposure and required adverse price movement are consistent with that basket being the main source of the reported equity drawdown. This is not an exact reconciliation: it does not incorporate the trough timestamp, the bid/ask side applicable to each position, accumulated swap at that moment or commission treatment, and tick-level equity reconstruction was not performed.

MetricPosition level (MT4 report)Reconstructed cycle level
Units counted7,033 positions6,009 recovery cycles (structural)
Winners6,030 (85.74%)5,948 (98.98%) — structural basket metric
Losers1,003 (14.26%)58 (0.97%)
Break-even units13
Average winner+$0.38+$0.10
Average loser−$1.68−$0.71
Largest winner+$52.56+$50.58
Largest loser−$24.12−$9.14
Profit Factor1.3415.05 — structural basket metric, not comparable with position PF
Median holding time6 minutes3 minutes
Mean holding time3 h 25 min1 h 32 min
Sequential close-row balance DD (affected by same-timestamp booking order)$86.35 (6.10%)—
Basket-series realised DD (floating intrabasket equity excluded)—$9.14 (0.66%)
Initial legs inside multi-position cycles711 positions, 1 positive, −$1,018.61 realised—
Added recovery legs1,024 positions, 738 positive (72.07%), +$1,125.44 realised—
NOTENeither reconstructed realised metric replaces MT4's 21.78% equity drawdown. Basket-series DD collapses each basket into one realised observation and excludes the floating exposure that is the main risk of this strategy.Cycle-level PF and win rate are structural properties of a basket system and are not directly comparable with the MT4 position-level figures.

Neither reconstructed figure replaces the report’s 21.78% equity drawdown, and the smaller numbers do not mean the system is safer after aggregation. The basket-series drawdown collapses each recovery basket into one realised observation precisely by excluding the floating exposure that is the strategy’s main risk, and the cycle-level Profit Factor of 15.05 and 98.98% cycle win rate are structural properties of a basket system rather than metrics comparable with the position-level figures. If anything, the distance between the realised numbers and the equity drawdown is the point: the risk lives in the gap.

Live results vs backtest

Myfxbook / SignalStart comparison

Opal has a vendor-controlled live MT4 account at Vantage Markets, running since November 2023 and exposed through both Myfxbook and SignalStart. The two services identify the same underlying Vantage Markets MT4 account and report closely aligned statistics: SignalStart is powered by Myfxbook, the Myfxbook page links directly to the SignalStart listing, both report Real USD accounts at Vantage Markets on MetaTrader 4 at 1:500, and both show Profit Factor 1.82 and average trade length 3h 2m. The small differences between them — 1,966 against 1,970 trades, 2,463.4 against 2,468.3 pips — are consistent with update or synchronisation timing rather than two different accounts. They are one live record visible in two places, not two independent forward tests.

MetricEA ForexLab MT4 testVendor live account (Myfxbook / SignalStart, one account)Reading
PlatformMetaTrader 4MetaTrader 4Same platform
Broker / serverIC Markets demo (ICMarketsSC-Demo03)Vantage Markets, real, 1:500Different execution venue
InstrumentEURUSDEURUSD onlyMatch
PeriodJan 2020 – Feb 2026Nov 2023 – presentLive covers the later part only
Funding / current balance$1,000 initial depositDeposits $500, withdrawals $331, current balance $385.76Account cash-flow snapshot, not a stated single starting deposit
Trades / positions7,033 (2,195 from 11 Nov 2023)1,966 trades (1,972-record history view)Different sample sizes; history records not equated with trades
Positions per month96.2 overall; 80.7 from 11 Nov 202360Live runs at lower frequency
Win rate85.74% overall; 85.92% from 11 Nov 202386%Consistent (aggregate)
Profit Factor1.34 overall; 1.355 from 11 Nov 20231.82Live higher; cause not established
Average winner (pips)3.09 overall; 3.01 from 11 Nov 20232.99Consistent (aggregate)
Average loser (pips)−14.31 overall; −13.91 from 11 Nov 2023−9.10Live losses smaller; cause not established
Average holding time3 h 25 m overall; 3 h 58 m from 11 Nov 20233 h 2 mConsistent (aggregate)
Booked P/L, small single trades (USD)median +$0.08 on 0.01-lot single-position cycles−$0.01 to +$0.14 across the 10 accessible rowsCompatible in USD terms; live figure is n=10 only
Realised price movement, sampled (pips)3.09-pip average winner (aggregate)+0.5 to +2.0 pips across the 10 accessible rowsCompatible in pip terms; live figure is n=10 only
Base position size0.01 lot on 6,720 of 7,033 positions0.01 lot in all 10 accessible rowsn=10 live observation; not full-account
Broker-side Stop LossNo non-zero S/L across the full 16,584-row report, including 7,033 entries and 2,518 modificationsNone visible in the 10 accessible history rowsFull-history in the test; n=10 only live
Displayed Take Profit1.5 pips on all 6,009 initial entriesExplicit TP on 7 of 10 accessible rows, ~0.5–1.6 pips; 3 rows show noneBroadly compatible; limited sample, incomplete visibility
New entry timingMinute 00 on all 6,009 initial entries, hours 03–20 serverJust after the hour in the 10 accessible rowsn=10 live observation
Recovery basket depthUp to 8 same-direction; 10 total concurrentNot measurable from accessible dataCannot be compared
Recovery spacing and lot progression15 / 20 / 40-pip thresholds; observed 0.01×1.27ⁿ ladderNot measurable from accessible dataCannot be compared
Synchronised basket exits711 groups with common exit and common modified TPNot observable in live-monitoring dataCannot be compared
Trade dependenceBasket structure reconstructed directlyZ-score −33.28 (99.99%): non-random clustering; mechanism not identifiedIndicative only
Reported drawdown21.78% (MT4 equity basis)16.13% Myfxbook / 21.31% SignalStartDifferent definitions
ManagementNone — unattended testVendor states continuous monitoring, periodic optimisation and event pausesVendor operating description

The aggregate live statistics are broadly consistent with the tested configuration in win rate (86% against 85.92% in the post-publication segment), average winner (2.99 pips against 3.01) and average holding time (3h 2m against 3h 58m). Those three come from the monitoring page’s account-wide figures.

The remaining observations come only from the ten accessible history rows and cannot be extended to the full account. In those ten rows, all positions were 0.01 lots, no broker-side Stop Loss was shown, and entries fell just after the hour (17:00:01, 18:00:02, 19:00:01 and similar). Three separate quantities need to be kept apart. Displayed take-profit: seven of the ten rows carry an explicit TP, at roughly 0.5 to 1.6 pips from the open; the other three show no TP value. Realised price movement: all ten rows are positive, ranging from +0.5 to +2.0 pips. Booked P/L: from −$0.01 to +$0.14 — the one trade that gained only +0.5 pip still finished at −$0.01 after the account’s non-price effects, which is the same tight-margin arithmetic the backtest shows on its smallest wins. The displayed live TP distances are broadly compatible with the tested 1.5-pip target, but the sample is small and TP visibility incomplete, and none of the three quantities should be read as a proxy for the others.

They are not sufficient on their own to establish a close basket-by-basket mechanical match. The live trade table is paginated through a scripted interface, and only the ten most recent rows from the 1,972-item history view were retrievable — SignalStart separately reports 1,966 trades, the six-record difference being unidentified account events I have not attributed. The Myfxbook hourly and duration breakdowns are marked private. No live basket reconstruction was therefore possible. Maximum live basket depth, depth distribution, recovery spacing, lot progression inside live baskets, synchronised closing timestamps, simultaneous opposite-direction exposure and entry-hour distribution could not be measured. Take-profit modifications, the defining mechanism of the tested recovery logic, are not observable in live-monitoring data at all and cannot be compared.

Myfxbook reports a Z-score of −33.28 at 99.99% probability. That is consistent with non-random clustering or dependence in the win/loss sequence; it does not identify the mechanism responsible for that dependence.

Two aggregate differences stand out: the live account trades about 60 positions a month against 80.7 in the post-publication segment, and its average loss is 9.10 pips against 13.91. The vendor states that the account is continuously monitored, regularly optimised, and that trading is paused around news and geopolitical events. The lower trade frequency and different loss profile are consistent with that description, but the aggregate statistics do not establish that these interventions caused the difference — different parameters, broker conditions, version changes, execution, market sample and account size are alternative explanations the available data does not separate.

The vendor-managed operating context

The SignalStart listing describes the account as automated trading by Opal EA “continuously monitored and regularly optimized by the developer”, and states that the operator tracks news and geopolitical events and pauses trading during strong market fluctuations, citing the US election. The Relevant Trading site states that its robots are continuously monitored and that manual intervention occurs from time to time.

These are vendor operating descriptions rather than independently verified facts, and they do not contradict “fully automated” — automated execution and human oversight coexist routinely. They do define what the live record can support. It reflects Opal operating inside a vendor-managed process. It is not evidence of what an untouched default configuration would produce, and the live Profit Factor of 1.82 against the test’s 1.34 cannot be attributed to the EA alone.

Three things stay separate for that reason: the EA’s built-in news filter, whose historical operation is not validated by this backtest; the operator’s stated manual pausing; and the live account result, which reflects both plus broker and sample differences.

The previously associated MQL5 signal

MQL5 signal 2116681, named Opal, is a separate vendor-associated account that the seller’s MQL5 profile linked on 6 September 2025 when announcing the Opal MT5 version, under “Live account”. It is therefore evidence for the Opal MT5 operating record, not validation of the MT4 configuration tested here. No statistics from that signal are used in the MT4 backtest-versus-live comparison.

Non-price deductions and execution sensitivity

An expected payoff of $0.08 per position against a 1.5-pip target leaves a narrow cost margin, and the accounting deserves precision.

Executed-price P/L across the test was $1,123.46 against booked P/L of $574.71. About $548.75 of non-price deductions are inferred from that difference. Roughly $517.58 reconciles to commission under the tested account schedule — 73.94 lots at $7.00 per round-turn lot — with the remaining $31.17 consistent with a net non-commission adjustment (swap/carry) and rounding. Spread is already embedded in the executed entry and exit prices and is not separately isolated by this calculation. Commission is therefore the largest separately reconstructed non-price deduction, not necessarily the largest cost in total.

On a typical winning single-position trade, the strategy captures $0.15 of price movement and books $0.08.

A static sensitivity overlay — holding the trade path fixed, assuming identical entries and exits, and ignoring any interaction with the spread filter — indicates that a schedule of $8 per round-turn lot would reduce the six-year result by roughly $74, and $10 per lot by roughly $222. This is not a rerun. In an actual rerun with different costs or a wider spread, fills, basket formation, take-profit distances and timing would all change, and the spread filter could suppress entries that occurred in this test. Whether a commission-free account with a wider spread would have produced a profitable result cannot be determined without running it.

Two further costs behave differently. The residual non-commission adjustment applies mainly to baskets held across days and, as shown above, changed the sign of every deep buy basket in this sample. Slippage was not simulated; on 1.5-pip targets taken at the hour, a consistent fraction of a pip would be material, and quantifying it requires a separate test.

Because commission is the largest separately reconstructed deduction here, a cashback arrangement has arithmetic relevance to this specific cost line: it can return part of eligible broker commission. It does not reduce spread, remove swap, prevent a basket from expanding, reduce floating exposure or alter the entry logic.

Vendor claims and independent evidence

Vendor claim or positioningIndependent evidenceAssessment
Fully automatedThe tested EA configuration executed automatically in Strategy Tester; the vendor also states the live account is continuously monitored with occasional interventionAutomated execution supported; untouched fully autonomous live operation not established
Cutting-edge algorithms, AI-driven calculationsNothing in the order history distinguishes an AI-derived signal from a rule-based oneNot independently verifiable from the trading record
Psychological / round price levelsNo initial entry within 10 pips below a whole figure; 10 of 6,009 (0.17%) within 10 pips above; recovery additions show no such gapStrongly consistent with whole-figure avoidance; full market-exposure baseline not reconstructible, so the share attributable to the rule is not estimated
Round Level identificationA visible gap appears only at 100-pip whole-figure spacing, not at 50-pip or 20-pip spacingDescriptive effect limited to the whole-figure family
Money Management moduleTested configuration used AutoLot=false and Lots=0.01, so dynamic base-lot money management was not active; recovery positions showed deterministic volume scalingPartially observable; dynamic base-lot money management was not active in the tested configuration, and any broader module's behaviour is not established by this trade history
Time filterAll 6,009 new cycles opened in hours 03–20 server time; 58 recovery additions fell outside, spanning 21:00–02:00Confirmed for new entries; does not restrict basket management
News protection filterUseNewsFilter=true was configured; the historical test does not establish whether a usable historical news dataset was available to the EAEffectiveness not validated by the backtest
New Year protectionZero new cycles opened 1–15 January in any year; 10 new cycles opened on 31 December; two baskets carried across the year boundaryPost-year-end suppression present every year; pre-year-end and close-out behaviour not demonstrated
Recovery system711 multi-position baskets reconstructed; all share one common exit timestamp and one common modified take-profitConfirmed structurally
Strong protectionNo non-zero broker-side Stop Loss was recorded anywhere in the 16,584-row order record, including all 7,033 entries and all 2,518 modification records; EquitySave was disabledMarketing wording; the order history does not establish what other internal exit logic may exist
Default settings are low-mid risk21.78% MT4 equity drawdown, 8-position baskets, 21.7-day maximum exposure, up to 10 simultaneous positionsVendor terminology rather than a standard category; tested set not confirmed as the shipped default
Minimum deposit $100Test funded with $1,000; observed equity drawdown of $306.74 exceeds $100 threefoldNot validated; a separate $100 test with specified leverage, margin and stop-out is required
Adaptability since 2020Every calendar-year segment in the sample was profitable; 2021–2025 are complete years, 2020 and 2026 partial; the trade record does not expose an adaptation mechanismHistorical profitability observed across 2020–2026; adaptability as a mechanism is not independently verifiable from the trade record
We do not produce curve fitted backtestsA backtest cannot verify a development or optimisation process; the post-publication segment and live record are robustness evidence onlyNot independently verifiable; neither the post-publication segment nor the live record establishes how the strategy was developed, optimised or selected

Two entries need expanding. “AI-driven calculations” cannot be confirmed or refuted from a trading record, since nothing in an order sequence distinguishes a learned scoring function from conditional rules; it is recorded as not independently verifiable. And the $1,000 test does not validate the vendor’s $100 minimum-deposit statement. The observed $306.74 equity drawdown alone exceeded $100 by more than three times, so a separate $100-account test specifying leverage, margin requirement, lot sizing and stop-out conditions would be required to establish what happens at that account size. Scaling the $1,000 result down is not a substitute.

What still needs validation

What a trader would need to validate before live use

The risk profile measured here imposes specific operational requirements.

  • Account sizing. The vendor’s $100 minimum is not supported by any test in this review. Establishing a workable balance requires a test at the intended size with specified leverage and stop-out level.
  • Cost verification. With $548.75 of inferred non-price deductions against $574.95 booked, the broker’s commission schedule and typical EURUSD spread need measuring on the intended account rather than assumed.
  • Floating exposure tolerance. A basket reached eight positions and 0.21 lots, was held 21.7 days across a New Year, and carried an equity drawdown consistent with $306.74 on a balance of about $1,410.
  • Absence of a broker-side stop. No standard Stop Loss was recorded on any tested order and the equity-protection switch was disabled in the tested configuration. Anyone requiring a hard per-order stop would need to establish whether one can be configured.
  • Direction-dependent holding cost. Deep long baskets in this sample were pushed negative by a residual non-commission adjustment consistent with swap, so applicable swap rates on the intended broker matter for multi-day exposure.
  • Operating assumptions. The live monitoring reflects a vendor-managed process including stated pauses. Running the EA unattended is a different proposition from the one the live record documents.

What would be tested next

1. Rerun the identical configuration on $100, with leverage, margin and stop-out conditions specified. Measure whether every position executes, margin level at depth, whether a stop-out occurs, and maximum survivable depth.

2. Measure floating equity directly. The drawdown attribution above is a consistency argument, not a measurement. A run logging equity per tick would give the actual distribution of open exposure.

3. Reconstruct a live basket sample. Whether the deployed account trades like the tested system at basket level remains open because public data does not expose it. A full live history export would resolve depth distribution, spacing, lot progression and synchronised exits.

4. Cost and slippage stress as actual reruns, not overlays, across commission schedules and spread assumptions, including spread-filter interaction.

5. Parameter sensitivity on Scale, Step1, Step2, Step, GridTP, MaxOrders, TakeProfit and the time window.

6. News and year-end behaviour with a controlled event feed, to establish whether features whose historical operation was not validated in this backtest operate as documented.

7. Broker comparison between IC Markets and Vantage or another RAW environment, since the live account runs on a different venue.

Conclusion

The historical test was profitable: $574.95 over six years on EURUSD H1, every calendar-year segment in the sample positive (the complete years 2021–2025, with 2020 and 2026 partial) across 7,033 positions, both directions profitable, and a segment after the publication date that stayed profitable at a similar Profit Factor and win rate. Two advertised features were testable against the trade record and behaved consistently with their descriptions — the time filter, which restricted every one of 6,009 new cycle entries to the configured window, and whole-figure avoidance for initial entries. The aggregate live statistics show a similar win rate, holding-time and payoff profile; in the ten accessible history rows, position size, visible Stop Loss and entry timing were also broadly compatible with the tested configuration, though that small sample cannot establish those characteristics across the full live history.

The remaining uncertainty is concentrated in four places. The recovery tail: 20 baskets reached five positions or more, they were net negative, and nothing in the record establishes what happens beyond the observed maximum depth. Execution sensitivity: inferred non-price deductions were comparable in size to the booked result, and no rerun under alternative cost assumptions has been performed. Operating differences: the live account runs on a different broker inside a vendor-managed process with stated pauses and optimisation, so it does not document an untouched default configuration. And the absence of an independently reconstructed live basket sample, which leaves the central mechanical comparison unresolved.

Forward testing adds evidence about current-market behaviour and execution that a historical backtest cannot provide, and the two evidence layers are complementary — see why forward testing an Expert Advisor is important. Other multi-position systems tested to the same standard are collected in the Forex EA Database.

Test archive

The complete MT4 report, full order history and derived cycle reconstruction for this test are archived at