Every signal the strategy sent, and exactly what the broker did with it.
Taken from the broker's own deal history — not from TradingView's messages, which carry one alert for both legs of an exit and so cannot tell a stop-out from a take-profit. Planned is the price your strategy sent; filled is what the broker gave.
| Time | Instrument | Window | Dir | Planned | Filled | Slip | Exit | Risk asked | Risk taken | Held | Why | R | P&L | Running |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 16 Sep 03:36 UTC | NAS100 | 22:50 | long | 29071.1 | 29069.14 | -1.96 | 29028.57 | 42.53 | 40.57 | 12 min | stopped out | -0.95R | -202.85 | -202.85 |
1 trade, -202.85 in total. Best -202.85, worst -202.85. Far too few trades to mean anything about the strategy — they are here because execution accuracy is only worth reading next to what it cost.
What the relay did with each message before the executor ever saw it. Times are the relay's, which is the only clock in this chain that is both trusted and shared. ⚠ A rejected message is a missed trade, and a missed trade looks exactly like a quiet market — so each one is listed rather than counted.
| Time | From | Instance | Message | Outcome | Why |
|---|---|---|---|---|---|
| 16 Sep 07:11:02 UTC | manual test | nas3m | flatten | Accepted | |
| 16 Sep 07:10:07 UTC | manual test | nas3m | buy | Accepted | |
| 16 Sep 03:24:01 UTC | TradingView | nas3m | buy | Accepted | |
| 16 Sep 00:39:24 UTC | manual test | nas3m | flatten | Accepted | |
| 16 Sep 00:33:07 UTC | — | nas3m | flatten | Accepted | |
| 16 Sep 00:31:45 UTC | — | nas3m | buy | Accepted | |
| 16 Sep 00:31:26 UTC | — | nas3m | — | Rejected | bad_json bad_json |
| 16 Sep 00:16:13 UTC | — | nas3m | buy | Accepted | |
| 15 Sep 19:46:29 UTC | — | ustec3m | buy | Accepted | |
| 15 Sep 17:36:50 UTC | — | ustec3m | — | Rejected | the day's trade budget was already spent daily_ceiling |
| 15 Sep 17:36:38 UTC | — | eurusd3m | flatten | Accepted | |
| 15 Sep 17:36:03 UTC | — | ustec3m | — | Rejected | the day's trade budget was already spent daily_ceiling |
| 15 Sep 13:58:19 UTC | — | eurusd3m | buy | Accepted | |
| 15 Sep 12:57:32 UTC | — | eurusd3m | buy | Accepted | |
| 15 Sep 12:55:33 UTC | — | eurusd3m | — | Rejected | the day's trade budget was already spent daily_ceiling |
| 15 Sep 12:53:16 UTC | — | eurusd3m | — | Rejected | the day's trade budget was already spent daily_ceiling |
| 15 Sep 12:53:12 UTC | — | eurusd3m | flatten | Accepted | |
| 15 Sep 12:47:22 UTC | — | eurusd3m | buy | Accepted | |
| 15 Sep 12:33:26 UTC | — | eurusd3m | buy | Accepted | |
| 15 Sep 12:15:41 UTC | — | eurusd3m | buy | Accepted | |
| 15 Sep 12:13:28 UTC | — | eurusd3m | flatten | Accepted | |
| 15 Sep 12:11:30 UTC | — | eurusd3m | buy | Accepted | |
| 15 Sep 12:11:29 UTC | — | eurusd3m | buy | Ignored as a duplicate | |
| 15 Sep 12:11:28 UTC | — | eurusd3m | buy | Ignored as a duplicate | |
| 15 Sep 12:11:28 UTC | — | eurusd3m | buy | Accepted | |
| 15 Sep 12:05:39 UTC | — | eurusd3m | buy | Accepted | |
| 15 Sep 12:01:18 UTC | — | eurusd3m | buy | Accepted | |
| 14 Sep 23:22:10 UTC | — | eurusd3m | buy | Ignored as a duplicate | |
| 14 Sep 23:22:10 UTC | — | eurusd3m | buy | Accepted | |
| 14 Sep 23:22:08 UTC | — | nq3m | — | Rejected | the message arrived with no content empty_body |
| 14 Sep 23:22:08 UTC | — | nq3m | — | Rejected | the shared secret did not match bad_secret |
| 14 Sep 11:39:54 UTC | — | nq3m | buy | Ignored as a duplicate | |
| 14 Sep 11:39:53 UTC | — | nq3m | buy | Accepted | |
| 14 Sep 11:39:52 UTC | — | nq3m | — | Rejected | the message arrived with no content empty_body |
| 14 Sep 11:39:51 UTC | — | nq3m | — | Rejected | the shared secret did not match bad_secret |
⚠⚠ A TradingView alert freezes your inputs, the chart symbol and the timeframe at the moment you create it, and keeps firing that frozen copy until it is deleted and remade. So a trade does not belong to “the settings” — it belongs to whatever was frozen into the alert that produced it. Each block below is one such configuration, with the trades that came from it.
⚠ TradingView offers no way to read an alert's settings back, so these are declared, not read. Where the messages themselves prove something, it is marked evidenced; everything else is our word for it.
First TradingView-originated signal 2026-09-16 03:24 UTC.
1 trade came from this configuration.
| Setting | Your default | Running as | How we know |
|---|---|---|---|
| Chart and instrument | |||
| Chart | — | VANTAGE:NAS100 | declared |
| Timeframe | — | 3m | declared |
| Broker symbol | — | NAS100 | evidenced |
| Account | — | Vantage demo, 1:100, USD 100k | declared |
| Macro windows | |||
| 09:20 NY | off | on | no signal yet |
| 14:50 NY | off | on | no signal yet |
| 18:50 NY | off | on | no signal yet |
| 22:50 NY | off | on | fired |
| Trade geometry, as the messages describe it | |||
| Reward multiples, scale-out | 1:1 · 2:1 · 3:1, thirds | declared | awaiting a real signal ⚠ hand-fired tests are deliberately not counted — their geometry is ours, not the strategy's |
| Strategy inputs changed from your defaults | |||
| Max Trades Per Day | 7 | 4 | declared |
| Enable Webhook Alerts? | false | true | declared |
| Ticker Symbol | NQM2026 | NAS100 | declared |
| Execution limits (ours, not yours) | |||
| Risk per trade | — | 0.5 % of balance | declared |
| Position cap | — | 5.0 lots | declared |
| Daily loss limit | — | 3.0 % | declared |
| Concurrent positions | — | 1 | declared |
Retired: that broker refused every index order with retcode 10017. No trade ever executed on this epoch.
0 trades came from this configuration.
| Setting | Your default | Running as | How we know |
|---|---|---|---|
| Chart and instrument | |||
| Chart | — | CAPITALCOM:US100 | declared |
| Timeframe | — | 3m | declared |
| Broker symbol | — | USTEC | declared |
| Account | — | MetaQuotes demo, USD 100k | declared |
| Macro windows | |||
| 09:20 NY | off | on | no signal yet |
| 14:50 NY | off | on | no signal yet |
| 18:50 NY | off | on | no signal yet |
| 22:50 NY | off | on | no signal yet |
| Trade geometry, as the messages describe it | |||
| Reward multiples, scale-out | 1:1 · 2:1 · 3:1, thirds | declared | awaiting a real signal ⚠ hand-fired tests are deliberately not counted — their geometry is ours, not the strategy's |
| Strategy inputs changed from your defaults | |||
| Max Trades Per Day | 7 | 4 | declared |
| Enable Webhook Alerts? | false | true | declared |
| Ticker Symbol | NQM2026 | US100 | declared |
| Execution limits (ours, not yours) | |||
| Risk per trade | — | 0.5 % of balance | declared |
| Position cap | — | 5.0 lots | declared |
| Daily loss limit | — | 3.0 % | declared |
| Concurrent positions | — | 1 | declared |
⭐ Read straight out of your Pine source rather than retyped, so the defaults column cannot drift from the strategy. All 66 of them, with the 14 the pilot changed marked. Not one line of your Pine was modified — the bridge reads the plan your strategy already emits.
| Setting | Your default | Running as |
|---|---|---|
| Strategy Settings | ||
| Position Sizing | Fixed | Fixed |
| Contracts (Fixed) | 3 | 3 |
| Risk % (of Equity) | 1.0 | 1.0 |
| Scale Out (Partial TPs)? | true | true |
| Single TP Target | 2:1 | 2:1 |
| Move SL to Breakeven | After 1:1 | After 1:1 |
| Max Trades Per Day | 7 | 4 changed |
| Max Trades Per Macro Window | 1 | 1 |
| Close at End of Day? | true | true |
| Allow Longs? | true | true |
| Allow Shorts? | true | true |
| Use Date Filter? | true | true |
| Start Date | timestamp("2026-01-01 00:00 +0000") | timestamp("2026-01-01 00:00 +0000") |
| End Date | timestamp("2026-12-31 23:59 +0000") | timestamp("2026-12-31 23:59 +0000") |
| Webhook Alerts | ||
| Enable Webhook Alerts? | false | true changed |
| Ticker Symbol | NQM2026 | US100 changed |
| Signal Settings | ||
| Bars After Macro For Signal | 6 | 6 |
| FVG Size Filter (ATR)? | true | true |
| Min Gap (×ATR14) | 0.23 | 0.23 |
| FVG Validity (Bars) | 400 | 400 |
| Mitigation Level | 50% | 50% |
| Displacement Filter | ||
| Enable Displacement Filter? | true | true |
| Min Body % of Range | 0.60 | 0.60 |
| Min Body vs Avg Body (×) | 1.60 | 1.60 |
| Avg Body Lookback | 20 | 20 |
| Signal Cooldown | ||
| Enable Cooldown? | true | true |
| Cooldown (Bars) | 10 | 10 |
| Liquidity Sweep | ||
| Enable Sweep Filter? | true | true |
| Sweep Threshold (×ATR14) | 0.0 | 0.0 |
| Sweep Mode | Aligned | Aligned |
| Require Sweep Rejection? | false | false |
| Asia H/L | true | true |
| London H/L | true | true |
| NY Open | true | true |
| Midnight | true | true |
| CISD Filter | ||
| Enable CISD Filter? | true | true |
| Trade Setup | ||
| Entry Mode | IFVG Edge | IFVG Edge |
| SL Buffer (×ATR14) | 1.95 | 1.95 |
| Performance Tables | ||
| Show Results Table? | true | true |
| Show Per-Macro Breakdown? | true | true |
| Macros | ||
| 00:50-01:10 | false | false |
| 01:50-02:10 | false | false |
| 02:50-03:10 | false | false |
| 03:50-04:10 | true | false changed |
| 04:50-05:10 | false | false |
| 05:50-06:10 | false | false |
| 06:50-07:10 | false | false |
| 07:50-08:10 | true | false changed |
| 08:50-09:10 | false | false |
| 09:20-09:40 | false | true changed |
| 09:50-10:10 | true | false changed |
| 10:50-11:10 | true | false changed |
| 11:50-12:10 | false | false |
| 12:50-13:10 | true | false changed |
| 13:50-14:10 | false | false |
| 14:50-15:10 | false | true changed |
| 15:15-15:45 | false | false |
| 15:50-16:10 | false | false |
| 16:50-17:10 | false | false |
| 17:50-18:10 | false | false |
| 18:50-19:10 | false | true changed |
| 19:50-20:10 | false | false |
| 20:50-21:10 | true | false changed |
| 21:50-22:10 | false | false |
| 22:50-23:10 | false | true changed |
| 23:50-00:10 | true | false changed |
Each finding recomputes from the records on every rebuild, heading included. ⚠ The reasoning behind them does not — it updates its numbers but cannot notice something nobody has looked for.
4 plans executed, 0 plans refused by the executor, 1 rejected at the relay before the executor saw them. ⭐ This part has enough evidence to stand on after a handful of orders, because it is a question of fidelity: every plan either arrived intact or did not.
Across 1 trade closed at the stop, the mean realised result is -0.95R where the plan called for exactly -1.00R — 5% less risk than intended. ⭐ The strategy computes its stop from a reference price; the fill lands where the market puts it, so the true distance to the stop — and therefore the money actually at risk — is not the distance it planned. On this sample the two agree, which is the result you want.
Vantage demo account 2026-10-16 (30d) · TradingView alert 2026-11-14 (59d). ⚠ Each of these stops the pilot with no error, no email and no trace, and a strategy that trades at most four times a day cannot be watched for silence — a lapsed account and a quiet market look identical. ⭐ That is why they are counted down from recorded dates rather than noticed after the fact. The nearest one is the one that matters.
A live run is only meaningful against a prior, and none has been established here: this strategy has not been backtested on our side, so there is no expectation for these figures to confirm or contradict. ⭐ You have the strategy tester and the history we do not - a run on the same instrument, timeframe and four windows would give this page the baseline it is currently missing. Until then, treat every number here as a measurement of execution and none of it as evidence about edge.
Four hops. Your script owns the first and nothing after it.
⭐ The relay is yours to own, not ours to rent you. Everything on this page runs on infrastructure you would control.
The relay is a free Cloudflare account and four commands. Your account, your URL, your secrets. Nothing runs on our side, and nothing breaks if we disappear.
The executor is a single file. It drops into MetaTrader's Experts folder and attaches to a chart. Its risk settings are a text file it re-reads every thirty seconds, so they change without a dialog and without a restart.
The alert message is a wrapper around your own. ⭐ That is why your Pine needs no changes at all — TradingView substitutes your strategy's JSON inside it.