Files

3.5 KiB
Raw Permalink Blame History

订单流交易系统

概述

订单流交易策略系统,支持实盘交易和回测。

模式切换

通过 config.py 中的 SYSTEM_CONFIG["mode"] 切换:

SYSTEM_CONFIG = {
    "mode": "live", # "live" | "backtest"
}

实盘/模拟模式 (mode="live")

运行 SimNow 模拟交易或实盘交易:

python run.py

Tick 数据录制

实盘运行时可录制 tick 数据供回测使用:

SYSTEM_CONFIG = {
    "record_tick": True,              # 开启录制
    "tick_record_interval": 1, # 每N个tick录一个
}

录制的数据保存在 traderdata/{symbol}_tick.csv

回测模式 (mode="backtest")

配置

SYSTEM_CONFIG = {
    "mode": "backtest",
    "backtest_mode": "ofdata",        # "ofdata" | "tick"
    "backtest_results_dir": "backtest_results",
    "initial_equity": 100000.0,
    "contract_multiplier": {
        "jm2609": 60, # 焦煤:吨/手
        "au2608": 1000,              # 黄金:克/手
    }
}

回测模式 1: ofdata.json 回放

读取已有的 ofdata.json 历史订单流数据进行回测。

数据源:traderdata/{symbol}_ofdata.json

"backtest_mode": "ofdata"

回测模式 2: 原始 tick 回放

读取原始 tick CSV 文件,完整重放 tick → K线 → 订单流流程。

数据源:traderdata/{symbol}_tick.csv

"backtest_mode": "tick"

运行回测

python run.py

输出文件

回测结果保存在 backtest_results/ 目录:

文件 说明
{symbol}_equity.csv 权益曲线
{symbol}_trades.csv 交易记录
{symbol}_metrics.json 性能指标

性能指标

{
  "total_return": 12500.0,
  "total_return_pct": 12.5,
  "max_drawdown": -3200.0,
  "max_drawdown_pct": -3.2,
  "win_rate": 0.62,
  "total_trades": 50,
  "winning_trades": 31,
  "losing_trades": 19,
  "avg_win": 850.0,
  "avg_loss": -420.0,
  "profit_factor": 2.1,
  "final_equity": 112500.0
}

文件结构

4.orderflow/
├── run.py                    # 实盘/模拟交易主程序
├── config.py                 # 配置文件
├── backtest.py               # 回测模块
├── traderdata/              # 实盘数据
│   ├── jm2609_ofdata.json
│   └── jm2609_tick.csv      # 录制生成
├── backtest_results/        # 回测输出
│   ├── jm2609_equity.csv
│   ├── jm2609_trades.csv
│   └── jm2609_metrics.json
└── readme.md

tick CSV 格式 (Mode 2 回测数据)

字段 类型 说明
InstrumentID string 合约代码
ActionDay string YYYYMMDD
UpdateTime string HH:MM:SS
UpdateMillisec int 毫秒
LastPrice float 最新价
Volume int 累计成交量
BidPrice1 float 买一价
BidVolume1 int 买一量
AskPrice1 float 卖一价
AskVolume1 int 卖一量
UpperLimitPrice float 涨停价
LowerLimitPrice float 跌停价
TradingDay string YYYYMMDD
Turnover float 累计成交额
OpenInterest int 持仓量

历史修改记录

2026-06-05: ofdata.json 保存时机改善

问题ofdata.json 中价格数据相对于实时 tick 有延迟

修改:在 tickdata 方法中,新 K 线开始时立即保存 ofdata.json,移除 cal_sig 中的重复保存

2026-06-05: 回测模块

新增功能

  • 支持 mode 切换实盘/回测
  • Mode 1: ofdata.json 回放
  • Mode 2: 原始 tick CSV 回放
  • Tick 数据录制功能