Skip to content

xxvw/backtest-engine

Repository files navigation

Forex Backtest Engine

FX向け高速マルチスレッドバックテストエンジン(C++17 + ONNX Runtime)

依存ライブラリ

  • vcpkg でインストール:
    • nlohmann-json
    • tomlplusplus
    • gtest
    • onnxruntime (オプション)

ビルド方法

# vcpkg のセットアップ(未インストールの場合)
git clone https://github.com/microsoft/vcpkg.git
./vcpkg/bootstrap-vcpkg.sh
export VCPKG_ROOT=$(pwd)/vcpkg

# ビルド
cmake -B build -S . \
  -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake \
  -DCMAKE_BUILD_TYPE=Release
cmake --build build -j$(nproc)

使い方

# 通常バックテスト
./build/backtest_engine --config config.example.toml

# ウォークフォワード検証
./build/backtest_engine --config config.example.toml --walk-forward

# グリッドサーチ最適化
./build/backtest_engine --config config.example.toml --optimize

データ形式

バーデータ (CSV)

timestamp,open,high,low,close,volume
2024-01-01T00:00:00Z,1.1000,1.1050,1.0980,1.1030,1000

または Unix ms タイムスタンプ形式も可。

ティックデータ (CSV)

timestamp,bid,ask,volume
2024-01-01T00:00:00Z,1.1000,1.1002,10

JSONレポートスキーマ

{
  "run_id": "...",
  "meta": { "symbol": "EURUSD", "timeframe": "H1", ... },
  "stats": { "total_trades": 120, "win_rate": 0.55, ... },
  "equity_curve": [{ "timestamp": 1704067200000, "equity": 10000.0 }],
  "trades": [{ "id": 1, "symbol": "EURUSD", "side": "BUY", ... }],
  "walk_forward": []
}

テスト実行

cmake --build build --target backtest_tests
cd build && ctest --output-on-failure

ディレクトリ構成

backtest-engine/
├── include/        # ヘッダーファイル
│   ├── core/       # Bar, Tick, Order, Event
│   ├── data/       # CSV ローダー
│   ├── broker/     # ブローカーシミュレーター
│   ├── strategy/   # 戦略基底クラス
│   ├── ml/         # ONNX 推論
│   ├── engine/     # バックテストエンジン + スレッドプール
│   ├── report/     # 統計・レポート
│   └── validation/ # ウォークフォワード
├── src/            # 実装ファイル
├── strategies/     # 戦略実装
└── tests/          # GoogleTest テスト

About

backtest engine selfuse

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors