Every setup the EA reached a decision on, and why it did or did not take it.
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.
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.
⭐ 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.
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. 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 — at a 2:1 target the break-even point is about 33%.
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 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. ⭐ The one encouraging finding is that the raw signal, before costs, is slightly positive on every instrument tested: the problem is that trading it costs more than it is worth, and cost is a property of instrument, timeframe and stop width — all three choosable.
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.
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.
bias=ON retest=32 score=55 brkpos=0.00 deep=0.00 minstop=0.00 maxspr=0.00R tighten=0.65 session=OFF news=OFF risk=0.50% tp=2.0R [email protected] [email protected]/33% trail=OFF dd=6.0% maxopen=1.0%/2Aggregates 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.
| # | Opened | Instrument | Side | Score | R | Money | Best | Worst | Exit |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 2026.09.23 08:30 | XAUUSD | short | 100 | +1.025 | — | +1.02 | -0.20 | closed_other |
| 2 | 2026.09.23 15:00 | XAUUSD | short | 92 | +1.350 | +843.68 | +2.01 | +1.92* | TP1 |
| 3 | 2026.09.24 01:15 | US30.cash | short | 82 | +1.676 | +839.03 | +2.04 | -0.31 | TP1 |
| 4 | 2026.09.24 15:00 | EURUSD | short | 80 | -0.401 | -248.73 | +1.18 | -1.05 | closed_other |
| 5 | 2026.09.24 17:30 | US500.cash | long | 77 | -1.049 | -529.16 | -0.31 | -1.02 | SL |
| 6 | 2026.09.25 00:45 | GBPUSD | short | 70 | -1.026 | -551.04 | -0.36 | -1.00 | SL |
| 7 | 2026.09.25 02:00 | US500.cash | long | 75 | +2.427 | +1,206.57 | +3.10 | -0.81 | TP1 |
| 8 | 2026.09.25 02:30 | EURUSD | short | 80 | -0.394 | -258.40 | +1.41 | -1.03 | closed_other |
| 9 | 2026.09.25 09:30 | EURUSD | short | 100 | -1.014 | -571.20 | +0.28 | -1.01 | SL |
⭐ 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.
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.
| Instrument | Decisions | Taken | Refused | Top reason | Median spread | Closed | Net R | Newest row |
|---|---|---|---|---|---|---|---|---|
| EURUSD | 3 | 3 | 0 | — | 1 | 3 | -1.81 | 2h ago |
| GBPUSD | 2 | 1 | 1 | BIAS 1 | 4 | 1 | -1.03 | 11h ago |
| US100.cash | 1 | 0 | 1 | EXPIRED 1 | 185 | 0 | — | 30h ago |
| US30.cash | 5 | 1 | 4 | BIAS 2 | 228 | 1 | +1.68 | 2h ago |
| US500.cash | 9 | 2 | 7 | BIAS 5 | 60 | 2 | +1.38 | 10h ago |
| XAUUSD | 5 | 2 | 3 | EXPIRED 2 | 40 | 2 | +2.38 | 24h 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.
⭐ 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.
| Code | Count | Share | What it means |
|---|---|---|---|
| EXPIRED | 6 | 38% | The retest never arrived inside the window, or the break failed and price closed back through the far side. |
| BIAS | 9 | 56% | The trade was against HTF bias — price the wrong side of the EMA, or structure making lower highs and lower lows. |
| NEWS | 1 | 6% | Inside a configured high-impact window. |
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.
| Code | Refused | Followed up | Never came back | Would have won | Would have lost | Their R |
|---|---|---|---|---|---|---|
| EXPIRED | 6 | 3 | 3 | 0 | 0 | — |
| BIAS | 9 | 3 | — | 0 | 3 | -3.00 |
| NEWS | 1 | 1 | — | 0 | 1 | -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.
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.
| Recipe | Mean stop distance | Total R | Mean R | Trades |
|---|---|---|---|---|
| Zone + buffer the one actually sent | 8.896 | +3.67 | +0.41 | 9 |
| ATR entry ± 1.2 × ATR(HTF) | 25.757 | +1.70 | +0.19 | 9 |
| Retest wick beyond the retest candle + a tick | 2.8746 | +12.41 | +1.38 | 9 |
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 score | Seen | Passed gates | Closed | Total R |
|---|---|---|---|---|
| 55–69 | 3 | 0 | 0 | — |
| 70–84 | 15 | 6 | 6 | +1.23 |
| 85+ | 7 | 3 | 3 | +1.36 |
⛔ 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.
| Term | Mean | Worst | Sample |
|---|---|---|---|
| Bar close → decision ticks reaching the EA | 156.6 s | 3900.0 s | 25 |
| Our own work gates, sizing, all three stops | 99.3 ms | 2423.5 ms | 25 |
| OrderSend round trip us to the broker and back | 520 ms | 1090 ms | 9 |
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) | Symbol | Dir | Zone | Score | Decision | Reason | Entry | SL | Lot | Spread | Bias | Outcome | R |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026.09.25 09:30 | EURUSD | short | 1.13913 1.13964 | 100 / 10t | entry | — | 1.13887 | 1.13958 | 7.14 | 0 | with | SL | -1.01 |
| 2026.09.25 09:30 | US30.cash | long | 51460.34 51477.29 | 92 / 4t | skip | BIAS | 51496.54 | 51455.54 | 12.37 | 218 | against | skipped | — |
| 2026.09.25 02:30 | EURUSD | short | 1.13773 1.13823 | 80 / 10t | entry | — | 1.13766 | 1.13824 | 8.66 | 0 | with | closed_other | -0.39 |
| 2026.09.25 02:00 | US500.cash | long | 7695.15 7698.35 | 75 / 13t | entry | — | 7701.80 | 7694.90 | 72.87 | 60 | with | TP1 | +2.43 |
| 2026.09.25 00:45 | GBPUSD | short | 1.32117 1.32187 | 70 / 3t | entry | — | 1.32113 | 1.32190 | 6.56 | 4 | with | SL | -1.03 |
| 2026.09.25 00:15 | US500.cash | short | 7695.15 7698.35 | 75 / 13t | skip | BIAS | 7691.30 | 7698.54 | 69.83 | 60 | against | skipped | — |
| 2026.09.24 17:30 | US500.cash | long | 7695.15 7698.35 | 77 / 12t | entry | — | 7703.15 | 7695.39 | 65.49 | 60 | with | SL | -1.05 |
| 2026.09.24 17:30 | GBPUSD | long | 1.32117 1.32187 | 70 / 3t | skip | BIAS | 1.32204 | 1.32119 | 5.97 | 3 | against | skipped | — |
| 2026.09.24 15:00 | EURUSD | short | 1.13773 1.13823 | 80 / 10t | entry | — | 1.13735 | 1.13815 | 6.36 | 1 | with | closed_other | -0.40 |
| 2026.09.24 14:45 | US500.cash | long | 7676.92 7679.33 | 72 / 4t | skip | BIAS | 7681.80 | 7676.28 | 92.29 | 60 | against | skipped | — |
| 2026.09.24 11:15 | US500.cash | long | 7657.43 7660.65 | 80 / 9t | skip | BIAS | 7667.55 | 7655.54 | 42.40 | 60 | against | skipped | — |
| 2026.09.24 11:15 | XAUUSD | long | 4252.72 4254.18 | 82 / 3t | skip | BIAS | 4259.14 | 4250.43 | 0.58 | 45 | against | skipped | — |
| 2026.09.24 09:45 | XAUUSD | short | 4300.43 4301.95 | 72 / 16t | skip | EXPIRED | 0.00 | 0.00 | 0.00 | 40 | with | skipped | — |
| 2026.09.24 08:00 | US500.cash | long | 7671.27 7672.53 | 62 / 3t | skip | EXPIRED | 0.00 | 0.00 | 0.00 | 60 | against | skipped | — |
| 2026.09.24 06:00 | US100.cash | long | 30344.93 30369.53 | 86 / 3t | skip | EXPIRED | 0.00 | 0.00 | 0.00 | 185 | against | skipped | — |
| 2026.09.24 05:30 | US500.cash | long | 7685.47 7686.93 | 62 / 3t | skip | BIAS | 7691.50 | 7683.38 | 62.75 | 60 | against | skipped | — |
| 2026.09.24 03:30 | US500.cash | long | 7694.45 7697.50 | 100 / 5t | skip | EXPIRED | 0.00 | 0.00 | 0.00 | 60 | against | skipped | — |
| 2026.09.24 01:15 | US30.cash | short | 51459.79 51471.21 | 82 / 3t | entry | — | 51449.36 | 51488.29 | 12.97 | 268 | with | TP1 | +1.68 |
| 2026.09.23 22:05 | US500.cash | long | 7704.25 7705.80 | 72 / 12t | skip | BIAS | 7712.60 | 7702.00 | 47.68 | 60 | against | skipped | — |
| 2026.09.23 15:00 | XAUUSD | short | 4300.57 4301.81 | 92 / 16t | entry | — | 4294.42 | 4303.96 | 0.52 | 40 | with | TP1 | +1.35 |
| 2026.09.23 14:00 | US30.cash | short | 51719.60 51729.33 | 69 / 3t | skip | NEWS | 51693.05 | 51739.53 | 10.77 | 210 | with | skipped | — |
| 2026.09.23 10:45 | US30.cash | long | 51876.75 51882.15 | 72 / 13t | skip | EXPIRED | 0.00 | 0.00 | 0.00 | 228 | against | skipped | — |
| 2026.09.23 08:30 | XAUUSD | short | 4322.58 4326.07 | 100 / 6t | entry | — | 4318.87 | 4327.91 | 0.55 | 38 | with | closed_other | +1.02 |
| 2026.09.23 05:45 | XAUUSD | long | 4333.44 4334.94 | 72 / 6t | skip | EXPIRED | 0.00 | 0.00 | 0.00 | 50 | against | skipped | — |
| 2026.09.23 05:30 | US30.cash | short | 51957.55 51991.26 | 100 / 10t | skip | BIAS | 51944.36 | 52003.71 | 8.42 | 238 | against | skipped | — |
Newest first. Showing the last 25 of 25 rows.
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.