dubaitrade.fr
Crypto · 10/29/2025

Backtest minimal (sanity check)

Espace publicitaire (in-article 1)
// tests/backtest-sma.ts (exécution node-ts)
import fs from 'node:fs'
import { sma } from '../src/indicators'
import { Candle } from '../src/strategy'

const data: Candle[] = JSON.parse(fs.readFileSync('data/BTCUSDT-1h.json', 'utf8'))
const closes = data.map(d => d.close)
const f = sma(closes, 20)
const s = sma(closes, 50)

let pos: 'long' | 'short' | null = null
let entry = 0
let pl = 0

for (let i = 51; i < closes.length; i++) {
  const up = f[i-1] <= s[i-1] && f[i] > s[i]
  const down = f[i-1] >= s[i-1] && f[i] < s[i]
  const px = closes[i]

  if (up && pos !== 'long') {
    if (pos === 'short') pl += entry - px
    pos = 'long'; entry = px
  }
  if (down && pos !== 'short') {
    if (pos === 'long') pl += px - entry
    pos = 'short'; entry = px
  }
}
console.log('P&L approximatif (points):', pl.toFixed(2))
Espace publicitaire (in-article 2)

Articles reliés