DJCUSD.c, EURUSD, GBPUSD, NACUSD.c, SPCUSD.c, XAUUSD · H4→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 01 Oct 2026 04:30 UTC · just now

Live book brt-upcomers-costgate · Upcomers Thunderbolt 1M real money · since 2026-09-29

The books — every account this rule has run on
epochaccountfromtoclosedmoneystate
brt-ftmo-demoFTMO demo, 100k2026-09-232026-09-2711+1,694.25retired
brt-upcomersUpcomers Thunderbolt 1M · real money2026-09-282026-09-291+2,305.42retired
brt-upcomers-costgateUpcomers Thunderbolt 1M · real money2026-09-29—00.00current

A book is its rule and its account together: change either and the epoch is retired and a new one opens. ⛔ Results from two epochs are never pooled — a different account is a different broker, different spreads and a different cost per trade. A retired book’s own journal is kept under journal/archive/.

1,004,545.53
Balance · USD
+326.13
Today, realised
+613.84
Today, incl. open
+287.71
Open, not yet booked
0.07%
Open risk · cap 0.2%
2.00%
Daily headroom · EA guard 2%, day from 22:00 UTC
read 56s ago from the EA · the broker's own figures ·  equity 1,004,833.24 with the open position
⚠ 2 closed trades in this book since 2026-09-29. These are risk figures, not a track record.
Live · position open

1 position open right now

short 0.96  DJCUSD.c #19952676
4h ago open · read 56s ago
+287.71
USD unrealised · +2,997 points · +0.43R
stop 51,168.41now 51,068.5target 50,883.4
◆ 33% at 51,028.56 ✓
Entry
51,098.47
Room to stop
9,991 pts
Room to target
18,510 pts
If stopped here
−671.42
If target hit
+2,064.67
Partial
+326.13 banked
Would give back
+959.13
Opened · server
2026.10.01 01:45:00

⚠ 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
6
6 have decided · DJCUSD.c, EURUSD, GBPUSD, NACUSD.c, SPCUSD.c, XAUUSD
Last decision
ENTRY short
zone 51110.20–51170.55, score 80
Journal
27
4h ago newest, at page build
Equity
1,004,833
USD · today incl. open +613.84 · as of 56s ago
Live configuration — ✓ the same on every instrument, reported by the EA itself. Spread caps: DJCUSD.c maxspr=0.12R · EURUSD maxspr=0.03R · GBPUSD maxspr=0.03R · NACUSD.c maxspr=0.12R · SPCUSD.c maxspr=0.12R · XAUUSD maxspr=0.11R.
show the full settings linebias=ON retest=32 score=55 brkpos=0.00 deep=0.00 minstop=0.00 tighten=0.65 session=OFF news=OFF risk=0.10% tp=2.0R be=OFF@1.0R partial=ON@1.0R/33% trail=OFF dd=3.0% maxopen=0.2%/1
⭐ The spread cap is per symbol on purpose: each is 12% total cost − that symbol’s own commission, so one ceiling holds across all six.
Claude shadow gate — working · 1 of 100 trades scored · last good run 04:20 UTC
Claude’s calls — shadow only, the trade is never touched
When (UTC)TradeClaudeRested onWhyResult
09.30 23:45DJCUSD.c shortrejectbars_break_to_decision17 bars break-to-entry vs ordinary 3-7 and clearly-outside above 9 — nearly double the limit. Displacement took 1 bar, so this is a long stale drift before confirmation.
⚠ this wait spans a market close: the count includes hours with no trading, so fewer real bars passed than it says.
open

⚠ The latest 1 call(s) of this gate. Far too few to judge — the test is read once, at 100 trades, and prices the freed slot; a row here is not a score.

The record — this book
Setups seen
27
3 passed every gate, 24 refused
Taken
3
orders actually sent
Refused
24
89% of everything seen
Net R
+1.34
1/2 won
Net USD
+1,169.40
profit, commission and swap
Win rate
50%
1 of 2 won · breakeven 33% · only 2 trades, not yet a rate
What is this? — start here if you have not seen it before

The short version

This is a trading program that watches six markets — gold, two currency pairs 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 four-hourly chart, with no lines drawn by hand, and then watches the 15-minute chart for the trade.

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, the trade would be against the bigger trend, a position is already open, the level simply is not good enough, or the level was broken and never came back to be retested.

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 0.1% 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. The remainder runs for twice the risk. The stop does not move.

⭐ The break-even move is switched off, and that was a finding. On fourteen months of history it lifted the win rate from 34% to 48% and cost about 12R: it turned losers into scratches, which flatters the win rate, while cutting short the few large winners the shape depends on. Win rate is exactly the number a break-even rule is built to improve, and it is the number that fooled us for a day. ⚠ A win rate on this page that looks low is the rule working, not failing — the remainder runs to about 3.1× what it risks, so the break-even point is about 24.5%, not the 33% a 2:1 target would need.

⚠ What this does not claim

It runs on a real, funded account (Upcomers Thunderbolt 1M). The numbers on this page are from a handful of trades, which is far too few to say whether the strategy makes money.

⛔ Measured properly, it has no demonstrated edge. Over 27 months and 357 trades the edge before costs is zero — and costs are about −0.03R a trade, so the account loses at roughly the price of trading. Seven configurations in a row looked good on the data they were chosen on and reversed on data they had not seen. ⚠ An earlier version of this page said the raw signal was positive on every instrument before costs. That was arithmetic error, not a finding: the tool computing it added the commission back onto a number that never contained it. Corrected, the edge before costs is +0.018R across 481 forex trades, which is indistinguishable from nothing, and it is negative on one of them.

⭐ So this page is not a claim that the strategy works. It is a record of a system whose entry rule has no measured edge, running on forward data nobody can search afterwards.

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, for the live book only. The pack breaks it down per instrument. The research tables are folded at the bottom. R means multiples of what was risked — a trade that makes 1R made exactly what it stood to lose.

The trades

Every closed trade, one row each

Aggregates hide the shape. Five trades averaging a third of an R could be five small winners or four losses and a windfall, and only the second of those tells you anything about what to expect next.

bars: each trade in R · line: running total · now +1.34R
#OpenedInstrumentSideScoreRMoneyBestWorstAfterExit
12026.09.30 08:30EURUSDshort80-1.056-1,143.72+0.04-1.01+0.06STOPPED
22026.09.30 13:30GBPUSDshort72+2.392+2,313.12+3.11-0.36···PARTIAL → FULL TP

⭐ Best and Worst are how far the trade ran in each direction before it closed, in R. A trade that reached +1.9R and closed at +0.3R gave something back; one that never left −0.3R was never right. ⚠ A positive Worst marked * means the EA restarted mid-trade and the excursion tracker was reseeded — it is not a real reading.

⭐ After is how far price ran once we were OUT, tracked by the EA against the original stop with no target. It is the only number that says whether an exit was early, and it is what a manual close gets scored against. ··· means the shadow is still running — it holds for up to 400 bars, so a recent trade has no reading yet. That is pending, not missing.

⭐ FULL TP means the trade ran the whole way. There is only one target: it sits at 2R of the untightened stop, which is about 3.09R of the stop actually sent. PARTIAL → FULL TP means a third was banked at 1R first, so the blended result is 0.33×1R + 0.67×3.09R = +2.40R — which is why R reads lower than Best on a complete winner. ⚠ The stored code is still TP1; it is a name, not a first of several.

The picture

Every closed trade, drawn from the broker's own bars

⚠ 12 chart(s) from retired books are cached and deliberately not drawn here — this section is this book only.

The shaded band is the holding period, the gold dashes mark the entry and the white dashes the exit. Both exit levels are drawn: the scale-out at +1R, where a third is banked, and the target the remainder runs to — about 3R of the stop actually sent, because it is priced off the untightened zone. ⚠ The EA calls that target tp1 because it is its first and only one; there is no second target, and a trade marked FULL TP ran the whole way. Dots are the real fills, so a partial and a runner show as two. ⭐⭐ An amber ring marks a target we were NOT paid at, that price reached after we were out — a level the partial or the runner already filled is not a target we missed. On a scale-out strategy that is the single most informative mark here, and it is the whole reason these are drawn after the fact.

GBPUSDshortPARTIAL → FULL TP+2.39R+2,313.12near-miss retestwick stayed clear
target 3.1R 1.32704scale-out 1.0R · 33% 1.32855stop 1.33001entry 1.3292830 Sep 09:3012:4516:0019:15broker time · M15
Price continued to 5.0R after the target filled.
EURUSDshortSTOPPED-1.06R−1,143.72near-miss retestwick back in zone
target 3.1R 1.13296scale-out 1.0R · 33% 1.13443stop 1.13585entry 1.13514tp1 reached without us30 Sep 04:3009:3014:3019:15broker time · M15
⛔ Stopped out, and price then reached +1R — the partial would have paid. It went on to 2.7R.
Entry types

What kind of setup each trade was — and how each kind is doing

One rule in the EA can admit different market events. A “retest”, for example, counts when price comes within a quarter of an ATR of the zone, whether or not it ever trades into it. Each trade is labelled from the price bars as the EA saw them, once, before its result is known.

⚠ 2 closed trade(s) in this book. These numbers are not a verdict. The read has not opened: it starts with the first epoch opened after the protocol was written, so this book is anecdote. Then each ★ label is judged once, when its smaller side has 30 closed trades, and a kind marked ◆ is dropped only if it is worse than the other side with p ≤ 0.0167 and its own average is below zero (docs/forward/ENTRY-TYPE-PROTOCOL.md). Everything else here, including the by-symbol table, is descriptive: with this many labels, one will always look like a winner or a loser by chance. Avg R is money-R (profit ÷ money risked), so different sizes compare. A trade without its profit or contract value is void and left out entirely.

★ judged once, later · ◆ the kind that would be dropped if it proves worse · Avg R after costs = profit ÷ money risked (the trade cards show R before commission, so they differ slightly)

LabelKindTradesWonLostOpenVoidWin rateMoneyAvg R after costs
★ Retestnear-miss — never traded into the zone ◆311150%+1,169.40+0.58R
★ Retestin-zone — traded into it and closed back0000———
★ Breakout wickcame back into the zone ◆10100%−1,143.72−1.14R
★ Breakout wickstayed clear of the zone2101100%+2,313.12+2.31R
★ Stop already printedretest touched the stop price first ◆0000———
★ Stop already printedno311150%+1,169.40+0.58R
Seven more labels — for insight, never judged
LabelKindTradesWonLostOpenVoidWin rateMoneyAvg R after costs
Touch & confirmone candle311150%+1,169.40+0.58R
Sessionmain session211050%+1,169.40+0.58R
Sessionoff-hours1001———
Deep retestno311150%+1,169.40+0.58R
Break candleclosed strong311150%+1,169.40+0.58R
Breakout speedtook longer to move away10100%−1,143.72−1.14R
Breakout speedmoved away on the next bar2101100%+2,313.12+2.31R
Market close in the waitno211050%+1,169.40+0.58R
Market close in the waityes1001———
Entry candleclosed against the trade311150%+1,169.40+0.58R

Retest type, by symbol (descriptive, never read)

SymbolRetestWon–lostOpenMoneyAvg R
DJCUSD.cnear-miss0–01——
EURUSDnear-miss0–10−1,143.72−1.14R
GBPUSDnear-miss1–00+2,313.12+2.31R
The pack

Each instrument, on its own

Every instrument runs 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
DJCUSD.c514BIAS 34000—4h ago
EURUSD312EXPIRED 121-1.0617h ago
GBPUSD514FAILBREAK 221+2.398h ago
NACUSD.c303BIAS 23500—23h ago
SPCUSD.c606BIAS 21140—5h ago
XAUUSD505EXPIRED 2500—5h 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.

Research — refusals, what refused setups did, stop recipes, zone score, latency, every decision
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
FAILBREAK625%
The break failed outright: price closed back through the far side of the zone before displacing. ⭐ Also silent until 2026-09-29.
EXPIRED417%
The break held, but price never came back to retest it inside the window. (A break that failed outright is FAILBREAK, journalled since 2026-09-29.)
BIAS1042%
The trade was against HTF bias — price the wrong side of the EMA, or structure making lower highs and lower lows.
COSTLY312%
Spread was too large a share of this trade's own stop — the cost gate, which is per symbol so that each instrument holds the same TOTAL cost ceiling once its commission is counted.
BUSY14%
A position or pending order already existed, or the EA was still standing down from the last decision.

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
EXPIRED43201-1.00
BIAS1010—46+6.31
COSTLY33—03-3.00
BUSY11—10+3.08

⭐ 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
0.001105+1.32+0.662
ATR
entry ± 1.2 × ATR(HTF)
0.00287+0.41+0.212
Retest wick
beyond the retest candle + a tick
0.00024-0.00-0.002
⚠ 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
below 55 — WEAK100—
55–69400—
70–841632+1.34
85+600—
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
0.1 s3.0 s27
Our own work
gates, sizing, all three stops
0.8 ms5.5 ms27
OrderSend round trip
us to the broker and back
306 ms331 ms3
Ledger

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.30 23:45DJCUSD.cshort51110.20
51170.55
80 / 4tentry—51098.5051168.411.43400withopen+0.00
2026.09.30 22:45SPCUSD.cshort7676.52
7679.48
92 / 6tskipCOSTLY7676.007681.3818.66133withskipped—
2026.09.30 22:45XAUUSDshort4201.55
4204.49
72 / 4tskipEXPIRED0.000.000.0050withskipped—
2026.09.30 19:45GBPUSDshort1.32623
1.32651
57 / 4tskipCOSTLY1.326071.3266218.255withskipped—
2026.09.30 16:15SPCUSD.cshort7715.16
7718.04
72 / 13tskipEXPIRED0.000.000.0095againstskipped—
2026.09.30 14:15DJCUSD.cshort51465.60
51526.95
100 / 9tskipBUSY51420.1551510.591.10400withskipped—
2026.09.30 14:00SPCUSD.cshort7695.30
7698.20
94 / 17tskipFAILBREAK0.000.000.00114withskipped—
2026.09.30 13:30GBPUSDshort1.32974
1.33000
72 / 4tentry—1.329281.3300113.721withTP1+2.39
2026.09.30 12:00XAUUSDlong4179.01
4181.95
72 / 4tskipBIAS4187.024178.951.2441againstskipped—
2026.09.30 11:00EURUSDshort1.13617
1.13639
72 / 7tskipCOSTLY1.136011.1364721.782withskipped—
2026.09.30 10:15GBPUSDshort1.32734
1.32801
70 / 3tskipFAILBREAK0.000000.000000.003withskipped—
2026.09.30 09:15SPCUSD.clong7676.69
7679.31
92 / 5tskipBIAS7686.817677.6710.96171againstskipped—
2026.09.30 08:30EURUSDshort1.13533
1.13591
80 / 4tentry—1.135141.1358514.121withSL-1.06
2026.09.30 08:15GBPUSDlong1.32624
1.32650
55 / 2tskipFAILBREAK0.000000.000000.002againstskipped—
2026.09.30 05:30XAUUSDlong4164.15
4167.61
72 / 4tskipBIAS4175.104164.780.9750againstskipped—
2026.09.30 05:30NACUSD.clong30312.08
30329.52
72 / 5tskipBIAS30341.0030305.202.80350againstskipped—
2026.09.30 02:45DJCUSD.clong51465.60
51526.95
80 / 9tskipBIAS51544.6051473.831.41400againstskipped—
2026.09.29 22:45XAUUSDlong4178.74
4182.22
62 / 3tskipFAILBREAK0.000.000.0050againstskipped—
2026.09.29 20:45EURUSDshort1.13533
1.13591
80 / 4tskipEXPIRED0.000000.000000.005withskipped—
2026.09.29 17:45NACUSD.clong30235.11
30253.69
92 / 4tskipBIAS30288.1030235.541.90350againstskipped—
2026.09.29 17:45DJCUSD.clong51110.20
51170.55
60 / 2tskipBIAS51237.2551133.410.96400againstskipped—
2026.09.29 17:00GBPUSDlong1.32028
1.32054
15 / 1tskipBIAS1.320571.3201423.321againstskipped—
2026.09.29 16:45SPCUSD.clong7659.12
7662.08
92 / 6tskipFAILBREAK0.000.000.0095againstskipped—
2026.09.29 15:15XAUUSDlong4164.15
4167.61
72 / 4tskipEXPIRED0.000.000.0041againstskipped—
2026.09.29 14:15NACUSD.cshort30311.77
30329.83
72 / 5tskipFAILBREAK0.000.000.00350againstskipped—
2026.09.29 13:45SPCUSD.clong7676.58
7679.42
72 / 5tskipBIAS7681.047675.3717.69114againstskipped—
2026.09.29 13:15DJCUSD.clong51465.60
51526.95
80 / 8tskipBIAS51546.8551474.251.38400againstskipped—

Newest first. Showing the last 27 of 27 rows.

Read this before you trust a number

What this page cannot tell you

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.