回测与实时运行
选择经纪商和数据源
Section titled “选择经纪商和数据源”AQE 通过 UnifiedBroker 统一提供交易执行和市场数据接口。
常见组合包括:
PaperBroker+YahooFinanceDataFeed:用于本地历史回测。PaperBroker+Mt5DataFeed:使用 MT5 K 线,并在回测中模拟交易执行。Mt5Broker+Mt5DataFeed:用于 MetaTrader 5 实时交易执行。
let execution = PaperBroker::new(AccountType::Paper, 100_000.0, 1);let data = YahooFinanceDataFeed::new();let broker = UnifiedBroker::new_backtest(execution, data);有关特定经纪商的配置,请参阅经纪商与数据源。
以回测模式运行
Section titled “以回测模式运行”回测运行器遵循当前的 StrategyState::run_backtest 实现:
// 1. strategy.on_start(ctx)// 2. load_universe() -> strategy.universe() -> broker.get_ticker_info()// 3. alpha.start() per alpha// 4. load_init() -> OnInit lifecycle logic -> strategy.init per asset// 5. alpha.init(asset) per alpha per asset// 6. broker.load_backtest_data()// 7. loop: broker step -> on_bar() -> optional insight generation -> run_insight_pipeline()// 8. strategy.on_teardown(ctx)// 9. return BacktestResults运行结果文件会保存到磁盘上的以下位置:
backtests/<run_id>/backtest.db
AQE 写入的 SQLite 结果文件包含交易日志、完整开平仓记录、账户历史、交易信号和 K 线。你可以在 AlgoQuant Studio 的 Backtest Results 中查看结果,也可以使用任意 SQLite 读取工具。
实时模式使用相同的策略和运行时结构,但会订阅实时数据和交易更新。
可以通过以下方式让 AQE 实时运行:
- 配合 AQS,传入身份验证信息并启用实时同步
- 不使用 AQS,运行
run_live(None)
if let Err(e) = state.run_live(auth).await { eprintln!("Live execution failed: {:?}", e); std::process::exit(1);}提供身份验证信息后,AQE 会将实时状态写入 AQS 对应的表,例如:
insightsstrategy_accountsstrategy_equity_pointsstrategy_live_metricsstrategy_events
省略身份验证信息时,AQE 仍可在本地实时运行,但不会同步到 AQS。
编译 AQE 时启用 runtime 和 tui feature,并让进程连接到交互式终端,回测和实时运行就会自动打开 Ratatui 界面。TUI 会显示指标、活跃交易信号、策略变量、监视的变量路径、AQS 同步状态和运行时事件。
如需使用纯控制台日志流,请添加 --no-tui:
cargo run --features runtime,tui --release -- --no-tui有关面板布局、控件和实时运行的关闭行为,请阅读终端界面。
