Trading Distorted Perspectives of Market Structure
The support, resistance, and structure you see on a chart are artifacts of how ticks got aggregated into bars, not a direct view of the market itself.
Every chart you look at is a lossy compression of something much richer. A one-minute candle collapses potentially hundreds of individual price changes into four numbers — open, high, low, close — and discards the order in which the high and low actually occurred, how long price spent at each level, and how many separate pushes it took to get there. That compression is necessary; nobody trades off raw tick streams visually. But it’s worth being precise about what gets lost in the process, because “market structure” as most traders discuss it is really structure-of-the-aggregation, not structure of the underlying order flow.
What an OHLC bar actually hides
Take a single 15-minute candle with a long upper wick. The conventional read is rejection — price pushed up, sellers stepped in, it closed well off the high. That’s one story consistent with the bar. Here’s another equally consistent with the exact same four numbers: price spiked to the high almost immediately at the bar’s open, spent the next fourteen minutes drifting sideways, and only in the final few seconds ticked down to where it closed. Same open, high, low, close. Completely different order flow, completely different implication for what happens next, and the bar itself cannot distinguish between them.
This is the actual mechanism behind why the same candlestick pattern can mean different things across different instances even when it looks identical on the chart. The pattern recognition is operating on the compressed representation, not on the process that generated it. Two bars that are visually identical can be the residue of very different intrabar sequences, and a pattern-detection rule that only looks at OHLC values is, by construction, blind to that difference.
This is also why tick-level backtesting matters more than it gets credit for. A backtest that only evaluates bar-close data is testing against the compressed artifact. If your live system has access to tick data and makes decisions based on intrabar behavior, testing it against bar-only historical data means your backtest and your live logic aren’t actually evaluating the same information, which quietly breaks the premise that a train/test split protects you against overfitting — you can only trust that protection if train and live are built from equivalent granularity of data.
Timeframe choice is a distortion, not a neutral lens
Zooming from a 5-minute chart to a 1-hour chart doesn’t just change your view, it changes which highs and lows exist as data points at all. A support level that looks obvious on the hourly chart might be one candle’s low that, at the 5-minute resolution, was touched briefly by a fast spike and immediately reversed — a level the market barely paused at, not one it respected. The hourly chart can’t show you that distinction. It only shows you that the low of that hour was a certain price, with no information about how much time price actually spent trading near it.
This means “market structure” identified on any single timeframe is a claim about the aggregation, dressed up as a claim about the market. The honest version of multi-timeframe analysis isn’t looking at several timeframes to “confirm” a level — it’s checking whether the structure survives being viewed at higher resolution, since a level that only exists because of how a particular bar size happened to draw its boundaries isn’t structural at all, it’s a boundary artifact.
Broker feeds distort the same market differently
Two brokers quoting the same currency pair at the same moment will frequently show different highs, different lows, and occasionally different candle shapes entirely, because retail forex brokers aggregate liquidity from different sets of liquidity providers and construct their own composite feed from that aggregation. A brief liquidity gap or a fast spike on one provider’s feed might register as a wick on your broker’s chart and not register at all on a different broker’s feed, if that provider didn’t experience the same momentary imbalance.
This has a very concrete practical consequence for anyone validating a strategy: a support or resistance level identified from historical data pulled from one broker’s feed is a claim about that broker’s specific aggregated price history, not a universal fact about the currency pair. If your live account runs on a different broker than the one your backtest data came from, the sl and tp levels in your JSON config are being placed relative to a slightly different version of market structure than the one they were validated against. Small discrepancies most of the time, but they compound exactly at the moments — fast markets, session opens — where precise level placement matters most.
Round-number distortion versus genuine structure
Price often does appear to hover near round numbers, and it’s tempting to treat every visually round level as meaningful support or resistance. Some of that clustering is real, driven by the fact that stop orders, take-profit orders, and psychological order placement genuinely cluster around round numbers because humans set them there. But a fair amount of apparent round-number respect is just base-rate coincidence — round numbers exist at fixed, evenly spaced intervals, so price will pass through the vicinity of one regularly no matter what it’s doing, and any reversal that happens to occur near one of those intervals gets retroactively attributed to it.
The way to tell these apart isn’t visual pattern-matching on a chart, it’s checking whether reactions near round numbers occur at a rate meaningfully higher than reactions at equivalently spaced non-round levels across a large validated sample. That’s a statistical question, and like every other pattern claim on this site, it’s one that needs to hold up out of sample rather than judged by how convincing a handful of chart screenshots look.
The distortion compounds across session boundaries
Session-based structure adds another layer, because the same price level can carry entirely different structural weight depending on which session established it. A high formed during the Asian session, 00:00-08:00 UTC, tends to reflect thinner liquidity and lower volume than a high formed during the London/New York overlap, 13:00-16:00 UTC. Visually, both are just “the high” on a daily chart. Structurally, one was set by a fraction of the volume that set the other, and treating them as equivalent inputs to a support/resistance model conflates two very different liquidity conditions into a single geometric line.
| Session | Typical relative volume | Structural reliability of levels formed |
|---|---|---|
| Asian (00:00-08:00 UTC) | Lower | Weaker, more prone to being swept |
| London (08:00-16:00 UTC) | Higher | Stronger, more broadly participated |
| London/NY overlap (13:00-16:00 UTC) | Highest | Strongest, most liquidity behind the level |
A strategy config that treats start_hour and end_hour purely as a time filter, without accounting for the fact that levels carried over from a low-liquidity session are structurally weaker than ones formed during the overlap, is applying one model of “structure” uniformly across data that was generated under meaningfully different conditions.
What to actually do about it
None of this is an argument that market structure is meaningless or that chart-based analysis is a waste of time. It’s an argument for being precise about what a chart is actually showing you: a specific aggregation, from a specific broker’s feed, at a specific timeframe, of a specific session’s liquidity conditions. Structure that survives being re-examined across a finer timeframe, a different broker’s data, and an awareness of which session actually built the level is a meaningfully stronger claim than structure that’s only been checked once at the resolution it happened to be first noticed on. The distortion isn’t a flaw you can eliminate. It’s a property of every representation of price you’ll ever look at, and the only real defense is knowing exactly which distortion you’re currently looking through.