One-minute bars and their limits.

By Evrant engineering · Reviewed · Fill rules checked against the engine source

Short answer

Evrant simulates trading on one-minute bars. A bar gives you the open, high, low, close and volume for that minute. It does not tell you the order prices traded in, the spread, or where your order would have sat in the queue.

That is fine for strategies whose stops, targets and holding times are wide compared with a minute's range. It is not good enough for scalps of a few ticks, strategies that depend on resting limit orders getting filled, or anything sensitive to latency. Where the bar cannot decide, Evrant books the outcome that is worse for you.

What a bar records

Five numbers per minute: open, high, low, close and volume. They say how far price went, but not how it got there. Different price paths can produce the same open, high, low, close and volume while touching a stop and a target in a different order.

Bars also leave out things that matter for execution: the bid–ask spread, the depth at each price, and time priority among resting orders. A limit order may wait behind other orders at its price, and matching priority varies by market. A price touching your limit does not mean you traded [2].

The order inside the bar

The hard case is a bar whose range contains both your stop and your target. Did the trade win or lose? The bar cannot say.

targetstopentry, earlier barhigh above the targetlow below the stop
Illustrative bar for a long position. Both exits are inside the range and neither was hit at the open. Evrant books the stop.

Every bar-based simulator has to pick a rule here. TradingView's broker emulator, by default, assumes the price went open, high, low, close when the open is nearer the high, and open, low, high, close otherwise. It can also look at lower-timeframe bars to narrow the guess [1]. That is a reasonable heuristic, but it can favour you as often as not.

One minute is the finest data Evrant stores, so there is nothing lower to look at. Evrant does not guess. When the open does not settle it, the protective stop wins.

Evrant’s fill rules

Every order a strategy places on a bar's close is evaluated from the next bar onward. These are the rules of fill-model-v1, and every run records the fill model version it used.

SituationRule
MarketFills at the next bar's open, moved against you by the slippage ticks in your execution profile.
StopIf the bar opens through the stop, fills at the open, not the stop price. Otherwise fills at the stop. Slippage applies to both.
LimitPrice has to trade through the limit; a touch is not enough. Fills at the limit, never better.
Stop-limitTriggered at the open: the limit is checked in the same bar. Triggered inside the bar: the limit waits for the next bar, because OHLC cannot say whether the trade-through came before the trigger.
Stop and target in one barWhichever was hit at the open wins. If neither was, the stop wins.
Entry and exit in one barAfter an entry inside a bar, only the protective stop can fill in that bar. The target cannot be claimed until the next bar.
Size and timingWhole-quantity fills, no partials. A fill records its bar; the time inside the minute is not known and not invented.

Each rule resolves uncertainty against the strategy. The result will look worse than an optimistic simulator would show. That is on purpose: if a strategy only works under the generous reading of its bars, you want to know before you trust it.

Longer timeframes

Strategies can run on 1, 5, 10, 15 and 30 minutes, 1, 4 and 12 hours, or 1 day. Longer bars are built from one-minute bars aligned to the session open. A candle is released only once every minute in it has arrived. Missing minutes, contract changes and session breaks never produce synthetic bars or partial candles, so a gap in the data shows up as a gap, not as an invented price.

A longer bar has the same blind spot as a one-minute bar, only wider. The ordering problem gets more frequent as bars get longer relative to your stop and target distances.

What is not modelled

  • Queue position. Limits need a trade-through, which stands in for being at the back of the queue. It is an approximation, not a model of the book.
  • Spread and depth. Costs come from the commission and slippage in your execution profile, applied per fill. Market impact for large size is not simulated.
  • Partial fills. Orders fill in full or not at all.
  • Sub-minute timing and latency. The fill is tied to its bar. Nothing inside the minute is timed.

Is your strategy a fit?

Usually testable on one-minute bars

  • Intraday breakouts and trend rules with stops and targets many ticks wide
  • Strategies that enter at the next open or on stop orders
  • Holding periods of many minutes to days
  • Session-based rules, such as opening ranges and session highs and lows

Not testable honestly on one-minute bars

  • Scalps with targets of a few ticks
  • Market making, or anything that earns the spread
  • Strategies that rely on resting limits being filled at the touch
  • Order-book, order-flow or latency-sensitive signals

A quick test: compare your typical stop and target distance with the typical one-minute range of the market. If they are similar in size, many of your trades will be decided by the tie-break rule rather than by your strategy.

Stresses worth running

Evrant’s robustness study reruns the strategy with one thing changed. For bar-level questions, the useful ones are an extra tick of slippage, a one-bar entry delay, and an adverse-entry fill (fill-model-v2-adverse-entry), where market and stop entries pay extra ticks and limit entries need more penetration before they fill. The engine also has a touch-fill sensitivity variant that shows how much a strategy depends on limits filling at the touch.

If one tick or one bar removes profitability or halves expectancy, the configuration is flagged fragile. The validation guide covers how that flag works.

What is built

"In the engine" means the behaviour exists in the current engine code.

CapabilityStatus
One-minute OHLCV simulation with fill-model-v1In the engine
Timeframes from 5 minutes to 1 day built from complete one-minute barsIn the engine
Adverse-entry and touch-fill sensitivity variantsIn the engine
Market coverageListed in the data catalogue
Paper sessions on live data with the same fill modelNot in the engine
Tick, quote or order-book simulationNot in the engine

Which markets you can test, and from which dates, is shown in the app's data catalogue. See compatibility and ownership for what else Evrant does and does not include.

References

  1. TradingView. Pine Script user manual, Strategies: Broker emulator and adjusting historical bar detail (use_bar_magnifier).
  2. Harris, L. (2003). Trading and Exchanges: Market Microstructure for Practitioners. Oxford University Press. Order precedence rules and bid–ask spreads.

Fill rules come from Evrant’s engine source as of the review date. Nothing on this page is a performance claim.

Early access

Be first to hear when it’s ready.

Join free for an early-access invitation. No account or payment required. We’ll confirm market coverage before you choose a plan.

For your early-access invitation only. Request removal anytime at [email protected]. See our privacy notice.