What 8 Years of BTCUSD Backtesting Taught Me About Building Trading Systems

What 8 Years of BTCUSD Backtesting Taught Me About Building Trading Systems

1 June 2026, 23:14
Cristobal Camberos Padilla
0
38

Introduction

After spending months developing and validating Bitcoin trading systems with full historical data (2018-2026), I want to share some insights that surprised me about BTC algorithmic trading. This is not a sales pitch - it is a technical breakdown of what works, what does not, and the honest math behind both.

If you are considering building your own BTC system or evaluating one to purchase, this post will save you significant time and capital.

The BTC Market: Why H4 is the Sweet Spot

Bitcoin is unique among tradeable assets:

  • Trades 24/7 - no overnight gaps, no weekend closures
  • High volatility - daily ranges of 3-5% are normal
  • Trend-prone - tends to make extended moves rather than chop sideways for months
  • Asymmetric upside - bull runs can produce 100%+ returns in months

After testing multiple timeframes, H4 emerged as the optimal balance:

  • M15 / M30: too much noise, high spread cost relative to signal
  • H1: better but still many false signals
  • H4: clean swing setups, reasonable trade frequency, good signal-to-noise ratio
  • D1: too few signals to capitalize on opportunities

Two Distinct Strategies, Two Different Risk Profiles

I built and validated two BTCUSD H4 strategies with very different DNA:

Strategy A: Adaptive Trend Following

Uses multi-timeframe trend analysis with adaptive parameters that adjust to current market volatility. Three operational modes (calm, normal, volatile) with different sensitivity settings.

Results 2018-2026 ($10,000 initial):

  • Net Result: $38,554
  • Profit Factor: 1.91
  • Maximum Drawdown: 9.85%
  • Win Rate: 70%
  • Total Trades: 185 (over 8 years)

Strategy B: Channel Breakout

Classic Donchian-style channel breakout with dual trend confirmation. Higher frequency, captures both long and short opportunities, uses multi-stage profit taking.

Results 2018-2026 ($10,000 initial):

  • Net Result: $15,894
  • Profit Factor: 1.40
  • Maximum Drawdown: 12.99%
  • Win Rate: 69%
  • Total Trades: 353 (over 8 years)

The Lesson: Both Approaches Work, For Different Reasons

Looking at these numbers, you might think Strategy A is "better" because it has higher net profit, higher profit factor, and lower drawdown. But that misses an important nuance:

  • Strategy A waits for very high-quality setups (185 trades / 8 years = ~23 trades/year). When it trades, it tends to win big. But it can sit out long periods.
  • Strategy B takes more frequent setups (353 trades / 8 years = ~44 trades/year). Lower profit factor per trade, but more opportunities to capture trends.

If you only had one strategy, A wins on most metrics. But running both in parallel produces uncorrelated returns - their bad months rarely overlap.

What Surprised Me Most: The 2024 ETF Effect

2024 was the year of BTC spot ETFs. Looking at the year-by-year data:

  • 2018-2023 average: about $3,000 per year
  • 2024 alone: $17,735 for Strategy A, $4,213 for Strategy B

This is an important honest disclosure: 48% of Strategy A's 8-year profit came from a single exceptional year. If 2024 had been a "normal" year, the strategy would still have been profitable, but considerably less so.

Lesson: when evaluating any backtest, always look at year-by-year breakdowns. A single exceptional year can mask mediocre performance in other years.

Three Bugs I Found During Validation (Save Yourself the Pain)

During the MQL5 marketplace validation process, I discovered three bugs that any EA developer will likely encounter. Sharing them here so you can fix them preemptively:

Bug 1: Hardcoded Spread Compensation

I had a feature that added $25 to the entry price to simulate real spread costs in backtests. Works perfectly for BTC at $50,000. But MQL5 tests on all symbols. On GBPUSD at 1.27, the EA tried to add $25 making the "spread-adjusted" price 26.27. Stop-loss calculated from that absurd price = "Invalid stops" rejection.

Lesson: never hardcode absolute price values. Use percentages, ATR multiples, or symbol-relative calculations.

Bug 2: Trailing Stop in Closed Markets

My trailing stop logic ran every tick. Works fine for BTC (24/7 market). But on XAUUSD with market closed periods, it tried to modify the SL by cents every second, generating dozens of "Market closed" errors.

Fix: verify SYMBOL_TRADE_MODE_FULL before any PositionModify call. Also require a minimum price change (e.g., 10 points) before modifying.

Bug 3: Lot Size Without Volume Limit

Position sizing calculated lots based on risk%. Works fine for BTC where lots are typically 0.05-0.50. But on GBPUSD M30 with a tight SL, the math produced 24.57 lots - which exceeds broker volume limits.

Fix: always cap calculated lots by SymbolInfoDouble(SYMBOL_VOLUME_MAX) AND SYMBOL_VOLUME_LIMIT. Two layers of protection.

Conclusions

  • BTC H4 is the sweet spot for trend systems - enough signal, manageable noise
  • Different strategies for different conditions - running uncorrelated systems beats betting on one
  • 2024 was exceptional - do not project that performance to future years
  • Validation reveals bugs you missed - design for multi-symbol robustness from day one
  • Profit Factor > Net Result - a system with PF 1.91 and modest returns is more reliable than PF 1.10 with huge returns

If anyone wants to discuss BTC systematic trading, feel free to comment or message me. I am always interested in comparing notes with other algo traders.

Note: I have published both strategies in the MQL5 marketplace as commercial products. If interested, you can find them on my profile. But the technical content above stands on its own - hopefully useful even if you build your own systems from scratch.