Markets › Metals · XAUUSD spot (broker data)

H1 Open Trap Strategy Backtest: Gold (XAUUSD), 1-Minute Data, 2004 to 2026

Fading a false break of the day's highest or lowest hourly open, the rules of an MT4 indicator with its default settings, on 22 years of gold minute data: three exits, a follow-up with a wider stop, costs and a control.

Gold (XAUUSD) · 1-minute data · H1 Open Trap (highest and lowest hourly open of the day) · Protocol v1.0 plus the 8 Oct 2026 rules

Buried · No proven edge

Half its trades won, half lost. The costs took the rest.

BornFrozen 21 Oct 2026 (h1ot_spec.md), before any signal was computed
Died21 Oct 2026

Variants tried: 4 (3 + 1 follow-up) · Passed every gate: 0 · Best: 2 of 6 gates · Holdout opened: yes (already used)

Short answer: not on gold in our test. Selling when price falls back to the day's highest hourly open after trading above it, and buying the mirror image at the lowest hourly open, with the stop at the day's extreme, won about half the time at 1R and made +0.006 R a trade before costs over 9,026 trades from 2004 to 2026. The stops were a median 1.37, so costs turned that into a loss in every year; a $5 minimum stop lost less but still made nothing before costs.How much costs took here, compared across all 54 of our tests →Compare all 14 gold strategies we tested →

00The verdict in three lines

  • We tested the H1 Open Trap on gold minute data from June 2004 to October 2026: when price trades above the day's highest hourly open and falls back to it, sell, with the stop at the day's high; when it trades below the lowest hourly open and rises back to it, buy, with the stop at the day's low. Targets of 1R, 2R and 3R, $0.30 an ounce a round trip.
  • Before costs it made nothing, and after costs it lost in every year. At 1R: 9,026 trades, 49.2% winners, +0.006 R a trade before costs and -0.286 R after them (-2,583 R). The stops were tiny, a median $1.37, so the cost alone was 0.29 R a trade.
  • A wider stop did not rescue it. A follow-up we chose after seeing this, with the stop at least $5 away, lost -0.064 R a trade over 6,058 trades and did no better than the same trades placed on other days.

01What we tested

The rules come from the H1 Open Trap Dashboard, a MetaTrader 4 indicator by the owner of this site, tested with its default settings and only its trap signals (it also shows continuation and recovery signals, which we did not test). The idea: the highest and lowest hourly opens of the day are levels where a move often fails; when price pushes beyond one and comes back, the push was a trap.

  • The day is the broker day, from 00:00 server time (17:00 New York, when gold's daily break begins). The lines are the highest and the lowest open of the day's 1-hour bars so far; a new higher (lower) hourly open moves the line and cancels a waiting sell (buy).
  • Arming (from 06:00 to midnight server time, after at least two hourly bars): at the open of each 15-minute bar, a sell is armed if that open is above the highest hourly open and not above the day's high so far; a buy if it is below the lowest hourly open and not below the day's low. A new day high (low) cancels it.
  • The signal: an armed sell triggers when price touches the line again, an armed buy the same way. Filters that skip a signal: price beyond the previous day's high (for a sell) or low (for a buy); more than 90 minutes since arming; two 15-minute closes beyond the line since arming; an EMA 9/20/50/200 stack against the trade, unless the setup is a classic trap. At most three trap signals a day.
  • The trade: entry at the line (or at the minute's open if price gapped through it), stop at the day's extreme from the setup, which is 1R. HOT-1R: target 1R. HOT-2R and HOT-3R: targets 2R and 3R; once a trade is 1R in profit, a trailing stop $2.00 behind the best price. Any trade still open closes at the end of the broker day. One position at a time; if the stop and the target are both inside one minute, the stop is taken.

The indicator has no profit target of its own (its panel only moves the stop at +$5 and +$10); the three exits were chosen by the indicator's author before the test, and the end-of-day exit by us, all written down before any signal was computed.

What the filters actually did: of all the touches, 10,834 were skipped, 10,824 of them because price was beyond the previous day's high or low. The 90-minute window blocked none and the two-close filter 13, because the setup is armed again at every 15-minute open inside the zone, which restarts both clocks; and with the default settings every armed setup counts as a classic trap, so the EMA filter never blocked one. 11,242 signals remained (7,409 more came after the third of the day).

02Data and costs

Gold (XAUUSD), the 1-minute bid history of an IC Markets MetaTrader 4 demo server, from its first bar (11 June 2004) to 7 October 2026, with the hourly and 15-minute bars rebuilt from the minutes. Clock: these rules depend on the time of day, so we used the clock correction of our EMA 9/20 gold test, which moves 20 weeks of 2020 to 2026 in which the broker's server followed the European clock change, and server time = New York + 7 hours. (Until 23 October 2026 this paragraph said the correction moved the weeks of 2004 to 2010 that our clock audit found labelled an hour early; it does not.) Clock check: run again on the audit's clock, which does move those weeks, the results barely change: HOT-1R -0.297 R a trade (-0.286 R on this page's clock), HOT-2R -0.302 R a trade (-0.287 R on this page's clock), HOT-3R -0.306 R a trade (-0.294 R on this page's clock), HOT-1R-S5 -0.063 R a trade (-0.064 R on this page's clock), with the same gates and verdicts (h1ot_results_auditclock.txt, h1ot5_results_auditclock.txt). Costs: $0.30 per ounce per round trip, as in every gold test on the site; stops and targets fill at their level, which is optimistic. No trade is held overnight, so there is no financing. Periods: development 2004 to 2012, validation 2013 to 2019, holdout 2020 to 2026, already used by our earlier gold tests.

Two fixes for look-ahead. On a live chart the indicator reads the current price for the previous-day filter and the current 15-minute bar for the EMAs; in a backtest that would use prices from after the signal, so we read the last completed minute and the last completed 15-minute bar. Engine check: a self-test with hand-worked days and an independent re-implementation that matched all 11,242 signals and every trade of the four versions (h1ot_selftest_result.txt). In its first run one check written in the test itself (an arbitrary count for the control's offset-zero check) failed; it was replaced by an exact check before any result was printed.

03Results

Net R after costs. R is the distance from the entry to the stop. The win rate is the share of trades that ended positive, with its 95% range.

VariantRuleTradesGross per tradeCost per tradeNet after costsNet per tradeWinners (95% range)Profit factorVerdict
HOT-1RStop at the day's extreme, target 1R9,026+0.006 R0.292 R-2,583 R-0.286 R49.2% (48% to 50%)0.56Buried
HOT-2RTarget 2R; after +1R a $2 trailing stop8,838+0.003 R0.290 R-2,541 R-0.287 R38.4% (37% to 39%)0.62Buried
HOT-3RTarget 3R; after +1R a $2 trailing stop8,770-0.005 R0.289 R-2,582 R-0.294 R35.5% (35% to 37%)0.62Buried
HOT-1R-S5Follow-up: stop at least $5 away, target 1R6,058-0.006 R0.058 R-386 R-0.064 R49.2% (48% to 50%)0.87Buried
-2,000 R-1,000 R0 R200620102014201820222026validationholdout*HOT-1RHOT-2RHOT-3RHOT-1R-S5

Cumulative net R by month. * Holdout already used before this test.

By period

VariantDevelopment 2004 to 2012 (trades)Validation 2013 to 2019 (trades)Holdout* 2020 to 2026 (trades)Development tValidation PF
HOT-1R-1196.3 R (3,235)-868.5 R (2,959)-518.4 R (2,832)-19.040.54
HOT-2R-1146.7 R (3,168)-802.9 R (2,870)-591.1 R (2,800)-15.000.63
HOT-3R-1142.0 R (3,147)-829.6 R (2,834)-610.2 R (2,789)-13.490.63
HOT-1R-S5-85.6 R (2,071)-139.3 R (1,829)-161.4 R (2,158)-2.100.84

How the trades ended

VariantTargetStopTrailing stopEnd of dayMedian R in dollarsMedian minutes held
HOT-1R49.2%48.8%–2.0%$1.3723
HOT-2R22.0%48.7%26.7%2.6%$1.3937
HOT-3R12.1%48.8%36.3%2.9%$1.4041
HOT-1R-S541.9%42.8%–15.3%$5.00193

The trailing stop of $2.00 is wider than most of the risks it follows (two thirds of the stops were under $2), so the 2R and 3R versions changed the shape of the trades but not the result.

04Small stops, fixed costs

HOT-1R by the size of its stop in dollars:

Stop distanceTradesReached the targetGross per tradeCost per tradeNet per trade
under $12,99148.0%-0.028 R0.561 R-0.589 R
$1 to $23,14050.6%+0.023 R0.222 R-0.198 R
$2 to $52,22649.9%+0.037 R0.108 R-0.071 R
$5 or more66945.0%-0.024 R0.039 R-0.063 R

A third of the trades risked less than a dollar, and on those the $0.30 cost was more than half of R. But look at the gross column: in every size group the trades made close to nothing before costs. The costs explain how much it lost, not why it did not make money.

05The follow-up: a $5 minimum stop

After seeing these results, the indicator's author asked for a wider stop: the day's extreme as before, but never closer than $5.00 to the entry, with a 1R target and no trailing stop. Because this rule was chosen after seeing why the first test failed, it is a separate test (h1ot5_spec.md, frozen before it was run), reported next to the first one and not instead of it; we said in advance that no other minimum would be tried after this one.

PeriodTradesAverage R in dollarsGross per tradeNet per trade
Development 2004 to 20122,071$5.13+0.018 R-0.041 R
Validation 2013 to 20191,829$5.04-0.016 R-0.076 R
Holdout* 2020 to 20262,158$6.28-0.020 R-0.075 R

89.0% of the trades used the $5 minimum. The cost fell to 0.058 R a trade and the loss to -0.064 R, -386 R in total, but the trades made -0.006 R before costs: slightly positive in 2004 to 2012, negative since. A fixed $5 is not the same size over the years: it was over 1% of the gold price in 2004 and about 0.1% in 2026.

06Year by year, next to gold

YearGold, first open → last closeHOT-1R (trades)HOT-2R (trades)HOT-3R (trades)HOT-1R-S5 (trades)
2004 (from June)$384 → $437 (+14%)-142.0 R (175)-166.9 R (173)-156.9 R (168)-6.8 R (98)
2005$437 → $515 (+18%)-264.7 R (273)-263.3 R (269)-275.6 R (268)-14.6 R (157)
2006$517 → $636 (+23%)-100.9 R (303)-102.2 R (299)-103.6 R (299)-22.3 R (201)
2007$638 → $832 (+30%)-239.8 R (413)-243.6 R (401)-249.3 R (397)-28.0 R (228)
2008$841 → $867 (+3%)-59.5 R (420)-33.9 R (416)-14.0 R (413)+26.4 R (290)
2009$874 → $1,098 (+26%)-142.1 R (443)-105.5 R (436)-116.2 R (433)-6.7 R (278)
2010$1,095 → $1,408 (+29%)-122.4 R (439)-99.4 R (424)-90.9 R (422)+10.6 R (272)
2011$1,416 → $1,564 (+10%)-78.2 R (384)-76.3 R (375)-68.6 R (374)-31.3 R (282)
2012$1,567 → $1,675 (+7%)-46.7 R (385)-55.5 R (375)-66.9 R (373)-12.7 R (265)
2013$1,673 → $1,208 (-28%)-67.6 R (418)-76.4 R (411)-73.1 R (408)-33.5 R (304)
2014$1,225 → $1,187 (-3%)-93.3 R (410)-64.7 R (398)-76.2 R (394)-11.7 R (251)
2015$1,187 → $1,061 (-11%)-155.3 R (448)-113.0 R (430)-110.4 R (426)-31.7 R (278)
2016$1,065 → $1,151 (+8%)-100.6 R (402)-107.9 R (395)-120.9 R (392)-10.6 R (255)
2017$1,152 → $1,302 (+13%)-135.9 R (414)-140.6 R (400)-151.0 R (390)-29.1 R (234)
2018$1,310 → $1,279 (-2%)-180.4 R (428)-176.0 R (416)-174.6 R (411)-15.8 R (250)
2019$1,282 → $1,520 (+19%)-135.4 R (439)-124.3 R (420)-123.5 R (413)-6.8 R (257)
2020$1,520 → $1,893 (+25%)-66.2 R (419)-75.9 R (416)-73.9 R (416)-15.0 R (310)
2021$1,909 → $1,828 (-4%)-60.0 R (437)-75.0 R (430)-86.1 R (427)-38.7 R (307)
2022$1,831 → $1,824 (-0%)-88.8 R (440)-133.6 R (436)-136.0 R (432)-13.2 R (312)
2023$1,827 → $2,063 (+13%)-114.8 R (472)-103.8 R (464)-106.5 R (463)-10.1 R (313)
2024$2,063 → $2,625 (+27%)-111.0 R (449)-125.4 R (441)-130.6 R (439)-44.1 R (341)
2025$2,624 → $4,316 (+64%)-45.2 R (347)-48.0 R (345)-46.8 R (344)-2.3 R (308)
2026 (to 7 Oct)$4,319 → $4,110 (-5%)-32.3 R (268)-29.4 R (268)-30.3 R (268)-38.1 R (267)

The three original versions lost in all 23 calendar years; the follow-up made money in 2008 and 2010 only.

Long, short and closed-trade drawdown

VariantLongs: trades / gross / netShorts: trades / gross / netDrawdown, closed trades
HOT-1R4,558 / +138.7 R / -1122.5 R4,468 / -81.8 R / -1460.6 R-2586.2 R
HOT-2R4,481 / +98.6 R / -1133.0 R4,357 / -76.1 R / -1407.7 R-2543.4 R
HOT-3R4,445 / +37.5 R / -1179.0 R4,325 / -83.6 R / -1402.8 R-2584.5 R
HOT-1R-S53,114 / +10.0 R / -168.6 R2,944 / -46.9 R / -217.7 R-391.7 R

Gold rose about 11-fold over these years, from $384 to $4,110 in this file. Even so, the buys made little before costs and the sells lost before costs.

07By time of day

Net R by the hour of entry, server time (New York time in brackets):

HourHOT-1R (trades)HOT-2R (trades)HOT-3R (trades)HOT-1R-S5 (trades)
06:00 (23:00 NY)-537.0 R (1353)-567.3 R (1346)-584.7 R (1344)-148.8 R (1281)
07:00 (00:00 NY)-326.7 R (997)-304.2 R (958)-327.5 R (953)-30.3 R (744)
08:00 (01:00 NY)-442.1 R (1091)-470.7 R (1047)-448.0 R (1037)-65.9 R (657)
09:00 (02:00 NY)-293.7 R (1024)-237.0 R (993)-232.1 R (979)-36.8 R (571)
10:00 (03:00 NY)-159.4 R (832)-173.2 R (814)-192.1 R (801)-3.2 R (448)
11:00 (04:00 NY)-145.0 R (608)-120.3 R (595)-154.6 R (587)-16.4 R (342)
12:00 (05:00 NY)-155.5 R (486)-151.1 R (476)-164.8 R (471)-37.8 R (279)
13:00 (06:00 NY)-137.2 R (400)-151.6 R (392)-135.3 R (388)-36.4 R (222)
14:00 (07:00 NY)-79.8 R (454)-75.4 R (450)-74.1 R (448)+16.3 R (253)
15:00 (08:00 NY)-46.3 R (485)-48.4 R (482)-36.5 R (481)+0.9 R (313)
16:00 (09:00 NY)-65.9 R (420)-56.9 R (417)-50.0 R (415)-8.1 R (307)
17:00 (10:00 NY)-81.7 R (307)-81.2 R (306)-82.7 R (304)-10.5 R (220)
18:00 (11:00 NY)-57.2 R (202)-52.5 R (200)-47.3 R (200)-6.5 R (147)
19:00 (12:00 NY)-24.5 R (119)-18.2 R (117)-23.8 R (117)+6.7 R (88)
20:00 (13:00 NY)-20.2 R (97)-26.8 R (96)-25.2 R (96)-10.1 R (74)
21:00 (14:00 NY)+4.3 R (72)+6.4 R (72)+12.0 R (72)+0.3 R (60)
22:00 (15:00 NY)-12.8 R (57)-8.2 R (55)-11.1 R (55)+0.9 R (35)
23:00 (16:00 NY)-2.5 R (22)-3.8 R (22)-3.8 R (22)-0.7 R (17)

The losses were largest in the first hours of the window (06:00 to 09:00 server, late evening and night in New York), where most signals happen. No hour was clearly profitable; picking the few slightly positive hours after the fact would be curve fitting.

08Is it the trap or chance?

The moved-entry control: every real entry moved by one random offset of whole days, at least 5% of the series, to the same server time on another day, same direction, the same R in dollars and the same exits and costs; 500 runs with fixed seeds. It has fewer trades because days moved onto weekends and holidays have no trading. The bar is the 95th percentile of the average net R per trade.

VariantTradesReal average per tradeControl trades (mean)Control medianControl 5th to 95thPercentile (95 needed)
HOT-1R9,026-0.286 R5,728-0.316 R-0.343 R to -0.291 R97.4
HOT-2R8,838-0.287 R5,494-0.293 R-0.324 R to -0.263 R62.0
HOT-3R8,770-0.294 R5,400-0.283 R-0.314 R to -0.249 R30.0
HOT-1R-S56,058-0.064 R3,718-0.060 R-0.085 R to -0.034 R41.6

At 1R the trap did a little better than the moved entries (percentile 97.4), -0.286 R against -0.316 R: a difference of about three hundredths of R, small next to the cost. With the trailing stop and with the $5 minimum it sat in the middle of its control.

09The gates

VariantTrades1. PF ≥ 1.2 in validation2. ≥ 50 trades in each period3. t ≥ 2.0 on development4. Above the 95th percentile of the moved-entry control5. Positive without the 10 best trades6. Holdout net positive (already used)
HOT-1R9,026failpassfailpassfailfail
HOT-2R8,838failpassfailfailfailfail
HOT-3R8,770failpassfailfailfailfail
HOT-1R-S56,058failpassfailfailfailfail

HOT-1R passed the trade count and the control gate; every version failed the profit gates. Four versions of a strategy not tested before on the site, so the development t-statistic bar is 2.0.

10The data-gap check

Our rule 3 removes the trades that were open across a suspect or unclear gap in the data and recomputes every gate. No verdict changed:

VariantTradesRemovedNet per tradeVerdict
HOT-1R9,02673-0.286 R → -0.287 RBuried → Buried
HOT-2R8,83896-0.287 R → -0.290 RBuried → Buried
HOT-3R8,770104-0.294 R → -0.298 RBuried → Buried
HOT-1R-S56,058369-0.064 R → -0.063 RBuried → Buried

11Verdict by variant

VariantCauseGates failedVerdict
HOT-1RCosts1, 3, 5, 6Buried
HOT-2RCosts1, 3, 4, 5, 6Buried
HOT-3RNo proven edge1, 3, 4, 5, 6Buried
HOT-1R-S5No proven edge1, 3, 4, 5, 6Buried

Costs (HOT-1R, HOT-2R) is the protocol's label for a strategy positive before costs and negative after them; here the gross result was +0.006 R and +0.003 R a trade, so close to zero that the label says more about the arithmetic than about an edge. No proven edge (HOT-3R, HOT-1R-S5) means a convincing edge was not demonstrated under our gates, not that none exists. Not tested: other settings, the continuation and recovery signals, other markets.

TWhat this shows, and what to take into your own tests

What the results show

  • The trap, sold when gold falls back to the day's highest hourly open and bought when it rises back to the lowest, won about half its trades at 1R and made +0.006 R a trade before costs over 9,026 trades: nothing to pay the costs with.
  • Its stops were tiny. The day's extreme was a median $1.37 from the entry, so our $0.30 cost took 0.29 R from every trade, and all three versions lost in every period and every year (-2,583 R at 1R).
  • A $5 minimum stop, chosen after seeing that, cut the cost to 0.06 R a trade and the loss to -0.064 R a trade, but the trades still made nothing before costs and did no better than the same trades on other days.

What remains unknown

  • Other settings of the indicator, its continuation and recovery signals, and other markets. We tested the trap signals with the default settings on gold only.
  • How a discretionary trader using the panel does. The panel shows context we did not use, and a trader can skip setups; we took every signal the rules gave.
  • Lower costs. At a $0.10 cost the 1R version would still lose about 0.09 R a trade, because it made almost nothing before costs.

Why it was buried

Before costs the trap was a coin toss: 49.2% of the 1R trades won, and the same trades moved to other days at the same hour did about as well. With a stop at the day's extreme, most risks were one or two dollars, so a fixed cost of 30 cents was a large part of every trade. Widening the stop made the cost smaller, but it cannot create an edge the entries do not have.

What you can apply to your own tests

  • Put your stop size in dollars next to your costs before anything else. A stop of $1.37 on gold leaves no room for a $0.30 round trip.
  • Look at the gross result per trade, before costs. If it is near zero, no exit or stop rule will save the strategy.
  • When you change a rule after seeing a result, test it as a new strategy and report both. Ours still failed.

A note on the numbers: drawdown figures are measured on closed trades unless a table says it includes open losses. Open losses inside a trade are not counted in a closed-trade drawdown, so real account risk is higher, especially for systems with no stop. Backtests are not live trading.

FAQCommon questions

Does the H1 open trap strategy work?

Not in our backtest on gold minute data. With the indicator's default settings, the 1R version won 49.2% of 9,026 trades and lost -0.286 R a trade after costs; the 2R and 3R versions with a trailing stop and a follow-up with a $5 minimum stop were buried too.

What is the highest hourly open of the day?

The highest opening price of the day's 1-hour bars so far, counted from the broker day's start (17:00 New York for gold). The trap idea is that a push above it that comes back was a false break, so you sell the return to the line; the lowest hourly open is the mirror image.

Why did the stops matter so much?

The stop sat at the day's extreme, a median 1.37 from the entry, so a $0.30 round-trip cost was about 0.29 R of every trade. With the stop at least $5 away the cost fell to 0.06 R, but the loss remained (-0.064 R a trade), because the trades made nothing before costs.

How was the H1 open trap tested?

On gold (XAUUSD) 1-minute data from 2004 to 2026, with rules written and dated before the data was run, costs included on every trade, results split into development, validation and holdout periods, a random-entry control as the benchmark, and every variant reported. Read the protocol.

12Check our arithmetic

Frozen specificationsThe trap rules, the exits, costs, periods, gates and control, dated before any signal was computed; and the follow-up, dated before it was run.
h1ot_spec.md · h1ot5_spec.md
CodeThe engine (its readings of the rules at the top), the independent re-implementation, the self-test and the run (node h1ot_run.js, and node h1ot_run.js --set=s5 for the follow-up). Needs your own MT4 gold history.
h1ot_lib.js · h1ot_ref.js · h1ot_selftest.js · h1ot_run.js
Shared code it usesThe MT4 loader, the clock fix, bars, statistics and control helpers.
control_audit_lib.js · fx_data.js · gh_lib.js · gold_audit_clock.js · gx_lib.js · hourly_lib.js · ma_lib.js · rsi2_protocol.js
ResultsSelf-test result, the console output of both runs and all numbers.
h1ot_selftest_result.txt · h1ot_results.txt · h1ot5_results.txt · h1ot_summary.json · h1ot5_summary.json; on the audit's clock (node audit_clock_rerun.js h1ot and h1ot5, audit_clock_rerun.js, added 23 Oct 2026): h1ot_results_auditclock.txt · h1ot5_results_auditclock.txt
Trade logs (CSV)Every trade: arming, entry and exit (server time), the trap number of the day, direction, line, entry, stop, exit, R in dollars, the exit reason, gross and net R, and whether the EMA stack was against it.
HOT-1R · HOT-2R · HOT-3R · HOT-1R-S5
Data recordFile hashes and the gap audit of the gold file.
data_manifest.md · data_holes_xau.json · clock_audit_fix.json (the clock audit's week-by-week decisions)

Code provenance: our own code, written from the indicator's rules as fixed in the specification. The indicator's source code is not published.

13Data notes

Clock. See section 02. Gaps. See section 10. Source. A broker's demo history, not an exchange record; bid prices; the hourly and 15-minute bars are rebuilt from the minutes, so they can differ slightly from the broker's own bars where minutes are missing; costs constant across years.

14Corrections

23 Oct 2026, correction: section 02 said the clock correction moved the weeks of 2004 to 2010 that the file labels an hour early; the correction used moves 20 clock-change weeks of 2020 to 2026 instead. We re-ran both tests on the clock of our clock audit, which does move the 2004-2010 weeks, and added the comparison to section 02: the averages change by about a hundredth of R, the gates and verdicts not at all. 22 Oct 2026, navigation: added links to the gold strategies guide, which now includes this test. No result changed. 22 Oct 2026, navigation: added a link to the new guide comparing trading costs across all our tests. No result changed. 22 Oct 2026, navigation: added a link to the new guide comparing trend following and mean reversion across all our tests. No result changed.

+More tests and guides