The short answer
Forex has no central exchange. Every price is one venue's quote.
Free feeds often hold only hourly resolution. Asked for 15-minute bars, they repeat the hourly value four times. The chart looks fine. No such 15-minute bar ever traded.
How to spot it
Count distinct closing prices as a fraction of bar count.
Real minute data on a liquid pair is mostly distinct closes. Stretched data repeats.
A common free feed, 40 EURUSD 15-minute bars: 15 distinct closes. Values repeating exactly four times each. That is one hourly print stretched across an hour.
A real feed on the same pair and timeframe: 66 distinct closes out of 76.
Why it matters
A backtest on stretched data does not fail. It prints a clean curve. Nothing in the output says the input was fake.
The fake data is smoother than life. Gaps vanish. Wicks vanish. Stops that would have hit do not. Small-move rules look better than they are.
What is actually usable
- Your broker export. Closest to what you would have traded, including your spread.
- A paid feed with real tick or minute aggregation.
- Daily bars from almost anywhere. Daily usually has real daily resolution behind it.
The check
Before you trust a test, count distinct closes on the data that fed it. One line. It will occasionally save you months of confidence in a result that was never real.