Suggested improvements

Notes on the strategy, from running it

What we have measured, what we cannot see, and the questions that are yours to answer.

21 September 2026, 22:25 Cayman

Not one line of the Pine has been modified. The bridge reads the JSON the strategy already emits on order fills, and every number on this site comes from a broker's own deal history.

Nothing here is a condition or a complaint. It is what running the strategy on live accounts has made visible that a backtest cannot show — offered as help. Where something is a judgement call it is written as a question, not a finding.

Division of labour

What the strategy decides, and what the executor decides

⭐ The boundary is deliberate: the strategy says where, the executor says how much. Everything the executor owns needs a fact that does not exist on TradingView — a real balance, a broker's contract value, its lot step.

DecisionOwned byWhy there
Whether there is a trade at all The strategy Macro window, IFVG confirmation, direction. Untouched.
Entry, stop and the three targets The strategy ⭐ Measured at exactly 1R / 2R / 3R on live fills, two instruments, two brokers. The geometry does what it says.
Where a third comes off, and when the stop moves The strategy The executor manages the legs but the levels are the plan's.
How many lots The executor Needs the real balance and the broker's own contract value. ⚠ The qty in the message is read and discarded — it describes TradingView's simulated $50,000 account, so it cannot size a real one.
Whether the trade is allowed The executor Account pin, staleness, clock skew, minimum stop distance, risk ceiling, concurrency, daily loss. All refuse rather than resize.
What actually happened The executor ⚠ Read from the broker's deal history, not from the message stream — one alert carries both legs of an exit, so the messages alone cannot tell a stop-out from a take-profit.
What we measured

Things a backtest cannot show

A backtest fills at the bar price and never pays a spread. These are the numbers that only appear once real money is routed through a real broker.

FindingWhat it means
The targets are exactly 1R / 2R / 3R Confirmed from live fills on gold and Nasdaq, across two brokers. Nothing drifts. This is the part that needed no attention at all.
⭐⭐⭐ A 2-minute gold signal gave up 73% of its R at the entry The entry filled 5.46 late, which moved the breakeven stop 5.46 closer to the market. Price then came back to within 0.51 of it and the last third was scratched — and 40 minutes later price reached tp3. A stop at the planned entry was never touched at all: the high after breakeven was 4364.98 against a planned entry of 4369.925. ⭐ So the same move, filled on plan, pays +2.00R (a third at each target). It paid +0.53R. ⚠ One trade.
⭐⭐ Spread is 15–37% of 1R on one broker and 6% on another Nasdaq at a demo broker costs between a sixth and a third of every trade's risk before the trade does anything. Gold at the funded broker costs a sixteenth. ⭐ Viability depends on a number the tester cannot see.
The entry field is a reference price, not a fill So realised R sits systematically below nominal R. Measured on both a winning and a losing trade.
ATR-based stops usually clear the broker minimum — but not always And the failure is silent. The executor now refuses rather than submitting an order the broker will quietly reject.

No read on profitability is offered below thirty closed trades, and the sample is far smaller than that. Everything above is about execution, not about whether the strategy makes money.

Observations and gaps

Found while wiring it up

ItemDetailAffects
Breakeven is emitted on the alert() channel A webhook alert does not carry it, so anyone wiring the strategy to a broker loses the move-to-breakeven with no error anywhere. ⭐ Discussed already
A stop-out arrives labelled tp1 The sl branch of the exit message is not reached, so a losing exit reports as a take-profit. ⚠ For anyone reading the message stream as a trade log, losses are invisible. We route around it by ignoring exit messages entirely and reading the broker instead. Anyone automating it
Use Date Filter? end date is 2026-12-31 On that date signalling stops with no error. One of three dates that can silently end a run — the others are the alert expiry and the broker account. All three are now counted down on these pages. Everyone
Position sizing is in whole contracts The % of Equity mode floors at 0.1% risk, requires at least one whole contract, and rounds to multiples of three. ⭐ Exactly right for futures. On a broker, gold trades in 0.01-lot steps and a sensible size on a large account is 1.25 lots — under half the smallest order the input can produce. ⭐⭐ Broker users, not us
The default ticker carries a dated contract code It expires at each quarterly roll. Our executor maps symbols, so it does not bite here. Anyone not mapping
Questions

These are yours to answer, not ours

Each of these is a genuine design choice with a real trade-off. We have one or two trades; you have thousands.

QuestionWhat we can contribute
⭐⭐ After an entry slips, should the targets hold their absolute prices, or re-derive from the actual fill? On our one gold trade it made no difference — absolute paid 0.327R, re-derived paid 0.333R. So it is not obviously worth changing, and your backtest can settle it properly.
⭐⭐⭐ After a slipped entry, should breakeven move to the fill or to the planned entry? This is the sharpest thing we have found. Breakeven at the fill sat 5.46 closer to the market than the plan intended; price returned to within 0.51 of it, scratched the last third, and reached tp3 forty minutes later. A stop at the planned entry was never touched. ⚠ The trade-off is real — breakeven at the plan leaves the last third risking the slippage rather than flat, which here was about $1,146 — and it would have bought 3R on that third instead of nothing.
Is IFVG Edge meant to be a limit order? ⛔ We tested it and it looks worse — see below.
Which day boundary does Max Trades Per Day intend? It resets on the chart symbol's exchange calendar day, while the macro windows are pinned explicitly to New York — so the windows are fixed and the cap limiting them moves with whichever chart it is on.
Which instrument and contract is it really for? ⚠ MT5 cannot trade real futures, only CFDs. Charting a futures contract and executing on MT5 offsets every absolute level by the basis — and the stop and targets in the message are absolute prices.
Retracted

Four things we were wrong about

⭐ Kept deliberately. Each of these looked like a clear improvement, was measured, and did not survive it — and the measurements turned out to be worth more than the suggestions were. The last one was our own bug.

We thoughtMeasuring showed
A limit order at the plan price would recover the entry slippage. It would never have filled. After the signal the highest print was 4366.63 against a plan of 4369.925, and price fell away from there. The trade would have been missed entirely — nothing instead of a profit. A maximum slippage guard would have done the same.
Re-deriving the targets from the actual fill would restore the lost R. 0.333R against 0.327R. Identical to a rounding error.
Sizing belonged on the TradingView side. ⛔ It cannot work, and not because of anything in the Pine: strategy.equity is a simulated $50,000, and syminfo.pointvalue belongs to the chart's venue rather than the broker's. ⭐ The correct division is the one in the first table.
The end-of-day flatten was a defect in the strategy. It was ours. _closeEOD is evaluated per bar and fires once, on the 15:55 bar. We implemented "at 15:55" as "after 15:55" and turned an event into a state, which killed two of the four macro windows in our own executor.