Price Action or Indicators? 3,264 Backtests
Every reading the Formiq tester ships, traded on the same bars with the same exit and the same spread. USD/JPY over 2024 and 2025, on three timeframes.
Reading bars alone — candles, levels, gaps — against reading an oscillator: the question only has an answer if both are measured with the same yardstick. The 54 articles on this site do not provide one. Each tunes one reading over its own grid, so putting their numbers side by side compares the grids, not the readings.
So every condition in the tester's catalogue was traded on the same bars, at the values it ships with, with the same exit and the same spread. Neither family leads. The leading family changes with the timeframe, and the reading that earned most in 2024 finished between 47th and 59th of 68 in 2025.
The catalogue holds 70 conditions and 68 strategies
Before anything is ranked, the conditions divide into three kinds.
| Kind | Count | Which |
|---|---|---|
| Names no side | 2 | Mass index, ulcer index |
| Opens one side at shipped values | 23 | 19 buy-only, 4 sell-only |
| Opens both sides | 45 | The rest |
The mass index and the ulcer index do not choose between buying and selling. They answer whether a level is met, and the engine opens nothing when every condition in the rule set is of that kind — backtest.ts states it in one line: risk and volatility filters never invent a side. Zero trades alone is the documented behaviour rather than a fault, so both are set aside and 68 readings were traded.
The 23 one-sided readings mix two different causes. A hammer is a buy and there is no hammer that sells. RSI, by contrast, ships as "buy below 30", so it has no sell until someone edits the level. The first is a property of the formation; the second is a choice of default.
How one yardstick was built
Putting 68 readings in one table requires an exit that all of them can take.
| Item | Setting |
|---|---|
| Pair | USDJPY |
| Windows | 2024-01-01 to 2024-12-31, 2025-01-01 to 2025-12-31 |
| Split within the year | January–June 2025 and July–December 2025, measured separately |
| Timeframes | 15-minute, hourly, four-hour |
| Conditions | All 70 catalogue entries at shipped values, one at a time; 68 traded |
| Entry | At the close of the bar that satisfies the condition |
| Exit | 5, 10 or 20 bars later, and nothing else — no stop, no target, no opposite signal |
| Cost and size | 0.3 pip spread, 0.1 lots; the 10-bar exit repeated at zero spread |
| Runs | 68 x 3 timeframes x 4 windows x 4 = 3,264 |
The clock is the exit because 23 readings have no second side. Closing on an opposite signal would give the 45 two-sided readings an exit condition and leave the one-sided 23 with none, which turns the comparison into a comparison of exits. Every table below uses the 10-bar exit at a 0.3 pip spread unless it says otherwise.
Four of the 3,264 runs opened nothing, all of them the dragonfly doji on the four-hour chart in the second half of 2025. That formation produces only 90 trades a year across all three timeframes, so a four-hour half-year can contain none.
The leading family changes with the timeframe
Readings profitable in both 2024 and 2025.
| Family | Readings | 15-minute | Hourly | Four-hour |
|---|---|---|---|---|
| Price action | 22 | 2 | 7 | 8 |
| Oscillator | 24 | 2 | 6 | 8 |
| Trend | 16 | 2 | 10 | 2 |
| Volatility | 6 | 1 | 4 | 3 |
Trend leads the hourly chart with 10 and falls to 2 on the four-hour chart. The four-hour leaders are price action with 8 and oscillators with 8. On the 15-minute chart no family passed 2.
The families hold different numbers of readings, so the shares matter too. Hourly: trend 10 of 16 and volatility 4 of 6 above, price action 7 of 22 and oscillators 6 of 24 below. Four-hour: volatility 3 of 6, price action 8 of 22, oscillators 8 of 24, and trend last at 2 of 16.
No family is near the top on all three timeframes. The family that led the hourly chart is last on the four-hour chart, and the family with the most four-hour survivors is third on the hourly. Choosing a family is not what decides the outcome; the timeframe moves it more. Volatility holds only 6 readings, so one reading moves its share by 17 points.
Median annual net for 2025 ranks the families the same way.
| Family | 15-minute | Hourly | Four-hour |
|---|---|---|---|
| Price action | −377.0 | +99.9 | +63.7 |
| Oscillator | −328.7 | +264.2 | +219.0 |
| Trend | −492.9 | +394.6 | +5.6 |
| Volatility | +196.5 | +205.9 | +186.2 |
Last year's best reading finished 47th to 59th of 68
The reading with the highest 2024 net, carried unchanged into 2025.
| Timeframe | 2024 leader | 2024 net | 2025 net | 2025 rank | 2025 median |
|---|---|---|---|---|---|
| 15-minute | Perfect order | +2,137.3 | −836.4 | 47th | −377.0 |
| Hourly | Momentum | +2,458.6 | −688.0 | 59th | +216.1 |
| Four-hour | Perfect order | +2,316.3 | −560.3 | 53rd | +102.8 |
All three lost money in the following year. The hourly leader finished 59th of 68, far under the +216.1 pip median.
Rank correlation between the two years was +0.19 on the 15-minute chart, +0.09 hourly and −0.23 on the four-hour chart. Splitting 2025 into halves gives −0.18, −0.22 and −0.12: negative on all three. Halving the period does not carry the order forward either.
For the record, the 2025 leaders were the moving average slope on the 15-minute chart at +1,807.4 pips, parabolic SAR hourly at +1,930.1 pips and the doji on the four-hour chart at +1,955.3 pips. Reading those as candidates for 2026 is the move this table argues against.
One-sided readings partly measure the year
A reading that only buys is helped by a year in which price rose, so its result may belong to the market rather than to the reading. That needs a control.
The control enters on every bar. It ignores every condition, buys at each close, holds the same number of bars and pays the same spread. The figures are pips per trade.
| Timeframe | 2024 | 2025 |
|---|---|---|
| 15-minute | +0.356 | −0.328 |
| Hourly | +2.233 | −0.369 |
| Four-hour | +9.185 | −0.776 |
USD/JPY in 2024 paid for simply holding: +9.185 pips for ten four-hour bars. In 2025 that reward is near zero on every timeframe, and the difference shows up directly in the one-sided readings.
| Timeframe | Year | 19 buy-only | 4 sell-only | 45 two-sided |
|---|---|---|---|---|
| 15-minute | 2024 | 12 profitable | 0 | 16 |
| 15-minute | 2025 | 5 | 2 | 15 |
| Hourly | 2024 | 10 | 0 | 29 |
| Hourly | 2025 | 9 | 3 | 31 |
| Four-hour | 2024 | 10 | 3 | 24 |
| Four-hour | 2025 | 12 | 2 | 27 |
In 2024 not one of the four sell-only readings made money on the 15-minute or hourly chart. When the drift flattened in 2025 they returned 2 and 3. Judging the evening star or the three black crows on 2024 alone measures the direction of the year, not the merit of the formation.
On the 15-minute chart the spread decides 11 readings
The 10-bar exit was run again with the spread removed.
| Timeframe | Year | Profitable at zero spread | At 0.3 pips | Reversed by cost | Median trades |
|---|---|---|---|---|---|
| 15-minute | 2024 | 34 | 28 | 6 | 1,172 |
| 15-minute | 2025 | 33 | 22 | 11 | 1,164 |
| Hourly | 2024 | 40 | 39 | 1 | 279 |
| Hourly | 2025 | 44 | 43 | 1 | 294.5 |
| Four-hour | 2024 | 39 | 37 | 2 | 74 |
| Four-hour | 2025 | 41 | 41 | 0 | 73.5 |
Cost alone flips the sign of 11 readings on the 15-minute chart in 2025. Hourly and four-hour lose 0 to 2. Median trade counts of 1,164 against 73.5 mean the same spread is paid about 16 times over.
Changing the holding period moves the order less than changing the year
The 5-bar and 20-bar exits, against the 10-bar exit as the reference.
| Timeframe | Exit bars | Profitable readings | Median | Correlation with 10 bars |
|---|---|---|---|---|
| 15-minute | 5 | 14 | −584.4 | +0.60 |
| 15-minute | 20 | 27 | −137.1 | +0.53 |
| Hourly | 5 | 34 | +2.4 | +0.51 |
| Hourly | 20 | 32 | −25.1 | +0.37 |
| Four-hour | 5 | 39 | +138.3 | +0.62 |
| Four-hour | 20 | 36 | +53.4 | +0.65 |
The hourly chart peaks at the 10-bar exit with 43 profitable readings, against 34 at 5 bars and 32 at 20. Correlations across the holding period (+0.37 to +0.65) are higher than correlations across the year (+0.09 to +0.19). Doubling the time in the trade disturbs the order less than moving to a different year.
Related reading
- Candlestick patterns, all tested the same way: the formation family alone, against the bars that formed nothing
- Do support and resistance lines work?: the level reading inside price action
- Do trend filters remove false signals?: what happens when a condition is added to another
- Do indicator settings transfer between pairs?: this measurement is also USD/JPY only
Notes
Two years of USD/JPY. Each condition was measured once at the values it ships with, so this is not the result of tuning; the per-indicator articles cover tuning. Signals and fills both use the close of the same bar. Conditions need different amounts of history, so bars before each window are loaded to prepare them. The anchored VWAP is the one reading that requires an anchor, and it was given the first moment of each window. The spread is fixed; slippage and swap are excluded. The families are the catalogue's own categories, so the dividing line was not drawn after seeing the results.
Questions people ask
- Is price action better than using indicators?
- Not on this evidence. On the hourly chart 10 of 16 trend readings were profitable in both years against 7 of 22 price action readings; on the four-hour chart trend falls to 2 of 16 while price action reaches 8 of 22. The order changes with the timeframe, so it does not rank the families.
- Which single condition was strongest?
- It depends on the year. The highest 2024 net came from the perfect order on the 15-minute and four-hour charts and from momentum on the hourly chart. All three lost money in 2025, finishing 47th, 59th and 53rd of 68.
- Is trading one condition alone realistic?
- No. Each reading is traded alone here so that the 68 can share one yardstick. What happens when readings are combined is measured separately.
- Can all 70 conditions be traded?
- 68 of them. The mass index and the ulcer index answer whether a level is met without saying which way to trade, and the engine opens nothing from a rule set that names no side. Both are meant to be added to another condition.
Formiq is a free browser-based FX terminal with replay practice and no-code backtesting. Open the chart or see what the free plan includes.