US100.cash, US30.cash, US500.cash, XAUUSD · PERIOD_H1→PERIOD_M15

REGULATOR — Break & Retest Log

Every setup the EA reached a decision on, and why it did or did not take it.

live · in a position
1 position open.
built 23 Sep 2026 15:37 UTC
What is this? — start here if you have not seen it before

The short version

This is a trading program that watches gold and the three big US stock indices, and takes a specific kind of trade automatically. This page is its diary: every setup it looked at, and why it did or did not take it.

The trade it looks for

Prices tend to stall at particular levels — places where the market has turned before. The program finds those levels by itself, on the hourly chart, with no lines drawn by hand.

Then it waits for three things in order. Price has to break through a level and close beyond it. It has to travel away, so a brief poke through does not count. And then it has to come back and touch that level again and hold. That last part is the retest, and it is the whole idea: a level that used to stop price should now support it from the other side.

Why most setups are refused

⭐ This is the part worth understanding, because it is most of what you will see here. A setup can look perfect and still be declined — the spread is too wide that second, a high-impact news release is minutes away, the trade would be against the bigger trend, a position is already open, or the level simply is not good enough.

Every refusal is written down with its reason. A strategy is defined as much by what it declines as by what it takes, and a filter nobody can see is a filter nobody can improve.

What happens once it is in

It risks half a percent of the account on each trade, and never guesses the size — it is calculated from the distance to the stop-loss.

When the trade is up by the amount it originally risked, it banks a third and moves the stop on the rest to break-even, so that trade can no longer lose. The remainder runs for twice the risk. That shape was not chosen by taste: seven different versions were tested against identical setups, and this was the only one that came out ahead.

⚠ What this does not claim

It is running on a demo account, not real money. The numbers on this page are from a handful of trades, which is far too few to say whether the strategy makes money. Measured over three months of history it was roughly break-even with a wide margin of error — which is honestly an absence of evidence, not a result.

The point of all this machinery is not to prove it works. It is to make the thing answerable: when there are enough trades to judge, the answer will come from a record rather than a feeling.

Reading the page

Right now is live state. The record is the totals. The pack breaks it down per instrument. R means multiples of what was risked — a trade that makes 1R made exactly what it stood to lose.

Live · position open

1 position open right now

short 0.35  XAUUSD #548739786
37m ago open · read 1m ago
+304.85
USD unrealised · +871 points · +0.91R
stop 4,303.96now 4,285.99target 4,275.34
◆ 33% at 4,285.16 ✓ · ▲ stop moved to 4,293.85
Entry
4,294.7
Room to stop
786 pts
Room to target
1,065 pts
If stopped here
+29.75
If target hit
+677.60
Partial
banked
Would give back
+275.10
Opened · server
2026.09.23 18:00:01

⚠ Every figure here is the broker's own, read from the EA's last heartbeat — not reconstructed from this journal. If stopped here and if target hit are what those exits would actually pay, priced by the broker with commission and swap in, never R multiplied by a remembered risk. Would give back is the open profit that a stop-out would surrender.

The EA rewrites this snapshot every 60 seconds while a position is open, and this page is rebuilt every 15 minutes — so the worst case is about a quarter of an hour behind, and the card says how old its reading is. ⛔ The stop shown is the one the broker holds; that is what will actually execute.

* the target figure assumes the partial fires. Price cannot reach 2R without passing 1R, where a third is banked and only the remainder runs on — so pricing the whole position at the target overstates what winning pays, by about a fifth, and it overstates it in the flattering direction.

Right now
Trading
ON
EnableTrading, as journalled
Instruments
4
2 have decided · US100.cash, US30.cash, US500.cash, XAUUSD
Last decision
ENTRY short
zone 4300.57–4301.81, score 92
Journal
6
37m ago newest
Equity
100,783
USD · today +377.33 · as of 1m ago
Live configuration — reported by the EA itself, not read from a file: bias=OFF retest=32 score=55 session=OFF news=ON risk=0.50% tp=2.0R [email protected] [email protected]/33% trail=OFF
The record
Setups seen
6
2 passed every gate, 4 refused
Taken
2
orders actually sent
Refused
4
67% of everything seen
Net R
+1.02
1/1 won
Net USD
1 closed before money was recorded
The pack

Each instrument, on its own

The four run the same logic with one thing changed per instrument — the spread cap, which is measured rather than carried across. ⛔ They also share a single Magic, which is what lets the account-wide risk cap see all of them at once: separate magics would make each instance blind to the others.

InstrumentDecisionsTakenRefusedTop reasonMedian spreadClosedNet RNewest row
US100.cash0001450running, no decisions yet
US30.cash303BIAS 1
bias gate is now off — historical
22801h ago
US500.cash000600running, no decisions yet
XAUUSD321EXPIRED 1401+1.0237m ago

⚠ An instrument with decisions but zero taken and one dominant refusal code is usually a gate set wrong for that symbol, not a quiet market. The median spread column is there to make the commonest cause — a spread cap carried over from another instrument — visible at a glance.

Refusals

Why setups did not become trades

⭐ This is the point of the journal. A strategy is defined as much by what it declines as by what it takes, and a gate nobody can see is a gate nobody can tune. Every code below was written by the EA at the moment of the decision, before any order existed.

CodeCountShareWhat it means
EXPIRED250%
The retest never arrived inside the window, or the break failed and price closed back through the far side.
BIAS125%
The trade was against HTF bias — price the wrong side of the EMA, or structure making lower highs and lower lows.
NEWS125%
Inside a configured high-impact window.

Were we right to refuse?

Every declined setup is kept running on the same rule, through the same code, to find out what it would have done. Nothing here was traded — and a shadow long pays the spread, so it is not flattered against the trades that were.

CodeRefusedFollowed upNever came backWould have wonWould have lostTheir R
NEWS1101-1.00

⭐ A negative figure in the last column is the gate working: the trades it turned away lost money. A positive one means that gate cost us something. ⛔ Never add this column up across rows — the codes resolve at wildly different rates, so a pooled total says nothing.

Stops

Three recipes, one of them live

Every candidate records where all three stops would have sat. Only the zone-based one is ever sent to the broker. The other two cost nothing to record and are the only honest way to compare them later — on the same setups, not on a different backtest.

RecipeMean stop distanceTotal RMean RTrades
Zone + buffer
the one actually sent
9.04+1.03+1.031
ATR
entry ± 1.2 × ATR(HTF)
14.73+0.63+0.631
Retest wick
beyond the retest candle + a tick
3.75+2.47+2.471
Every row here assumes the same exit. The journal records where each stop would have sat, not what price did on the way there — so a wider stop that would have survived an excursion, and a tighter one that would have been hit first, both look identical to this table. It ranks stop placement on trades that happened. It does not simulate the trades that a different stop would have produced. For that, run the Strategy Tester with the recipe swapped.
Structure

Does the zone score mean anything

Zones are scored 0–100 on touches, age, width and last reaction, and anything under MinScore is refused as WEAK. That threshold is a guess until this table disagrees with it.

Zone scoreSeenPassed gatesClosedTotal R
55–69100
70–84200
85+321+1.02
Latency

Where the time goes

The bar is the latency. Confirming on a closed M15 bar means the entry can be up to fifteen minutes after the retest actually touched — a mean of about seven and a half. Nothing in this table comes close to that, and no amount of tuning here will. It exists so the claim can be checked rather than assumed. Working: docs/LATENCY.md.

TermMeanWorstSample
Bar close → decision
ticks reaching the EA
1.0 s3.0 s6
Our own work
gates, sizing, all three stops
405.5 ms2423.5 ms6
OrderSend round trip
us to the broker and back
831 ms1090 ms2
The record

Every decision

Straight from the EA's own journal. Nothing here is derived, reconstructed or inferred — the row was written at the moment the decision was made, on the closed bar that produced it.

Time (UTC)SymbolDirZoneScoreDecisionReasonEntrySLLotSpreadBiasOutcomeR
2026.09.23 15:00XAUUSDshort4300.57
4301.81
92 / 16tentry4294.424303.960.5240withopen+0.00
2026.09.23 14:00US30.cashshort51719.60
51729.33
69 / 3tskipNEWS51693.0551739.5310.77210withskipped
2026.09.23 10:45US30.cashlong51876.75
51882.15
72 / 13tskipEXPIRED0.000.000.00228againstskipped
2026.09.23 08:30XAUUSDshort4322.58
4326.07
100 / 6tentry4318.874327.910.5538withclosed_other+1.02
2026.09.23 05:45XAUUSDlong4333.44
4334.94
72 / 6tskipEXPIRED0.000.000.0050againstskipped
2026.09.23 05:30US30.cashshort51957.55
51991.26
100 / 10tskipBIAS51944.3652003.718.42238againstskipped

Newest first. Showing the last 6 of 6 rows.

Read this before you trust a number

What this page cannot tell you

Paper rows are not trades. A row with enable_trading=false passed every gate and was never sent. It says the EA would have acted; it does not say the fill would have been there, at that price, with that spread.

R is price-based. It measures the distance travelled against the distance risked. It does not carry commission, swap or slippage on the exit.

Sample size beats cleverness. Every cut on this page — by refusal code, by stop recipe, by zone score — is arithmetic on whatever rows exist. At small counts that arithmetic is a shape, not a finding.

Ages come from time_utc, not the broker's clock. Three clocks run in this estate and the broker's is nobody's idea of UTC. The server time is kept in its own column for exactly that reason.