订单流交易系统
概述
订单流交易策略系统,支持实盘交易和回测。
模式切换
通过 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 数据录制功能