Ir al contenido

Backtests y ejecuciones en vivo

Seleccionar un bróker y una fuente de datos

Sección titulada «Seleccionar un bróker y una fuente de datos»

AQE expone los brókeres de ejecución y los proveedores de datos de mercado mediante UnifiedBroker.

Estas son algunas combinaciones habituales:

  • PaperBroker + YahooFinanceDataFeed para backtests históricos locales.
  • PaperBroker + Mt5DataFeed cuando necesitas velas de MT5 con ejecución simulada en los backtests.
  • Mt5Broker + Mt5DataFeed para ejecución en vivo en MetaTrader 5.
aq-engine/src/core/broker/mod.rs
let execution = PaperBroker::new(AccountType::Paper, 100_000.0, 1);
let data = YahooFinanceDataFeed::new();
let broker = UnifiedBroker::new_backtest(execution, data);

Para la configuración específica de cada bróker, consulta Brókeres y fuentes de datos.

El ejecutor de backtests sigue la implementación actual de StrategyState::run_backtest:

aq-engine/src/core/strategy/mod.rs
// 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

Los artefactos de cada ejecución se guardan en disco en:

  • backtests/<run_id>/backtest.db

AQE escribe el artefacto SQLite con registros de operaciones, operaciones completas de apertura y cierre, historial de cuenta, insights y velas. Puedes inspeccionar esos resultados en AlgoQuant Studio mediante Backtest Results o con cualquier lector de SQLite.

El modo en vivo usa la misma estructura de estrategia y entorno de ejecución, pero se suscribe a datos y actualizaciones de operaciones en vivo.

Puedes ejecutar AQE en vivo:

  • con AQS, proporcionando autenticación y activando la sincronización en vivo
  • sin AQS, ejecutando run_live(None)
aq-engine/src/node/codegen.rs
if let Err(e) = state.run_live(auth).await {
eprintln!("Live execution failed: {:?}", e);
std::process::exit(1);
}

Cuando se proporciona autenticación, AQE escribe el estado en vivo en tablas del ámbito de AQS, como:

  • insights
  • strategy_accounts
  • strategy_equity_points
  • strategy_live_metrics
  • strategy_events

Cuando se omite la autenticación, AQE puede seguir ejecutándose en vivo de forma local sin sincronizarse con AQS.

Cuando AQE se compila con las funcionalidades runtime y tui y el proceso está conectado a un terminal interactivo, los backtests y las ejecuciones en vivo abren automáticamente una interfaz Ratatui. La TUI refleja métricas, insights activos, variables de estrategia, rutas de variables supervisadas, estado de sincronización con AQS y eventos de ejecución.

Usa --no-tui cuando necesites el flujo de registros de consola sin interfaz:

Ventana de terminal
cargo run --features runtime,tui --release -- --no-tui

Lee Interfaz de terminal para conocer la distribución de los paneles, los controles y el comportamiento de apagado de las ejecuciones en vivo.