Ir al contenido

Ciclo de vida de la estrategia

En el centro de AQE se encuentra el ciclo de vida de la estrategia:

  • on_start
  • universe
  • init
  • on_bar
  • generate_insights
  • insight_pipeline
  • on_teardown
aq-engine/src/core/strategy/traits.rs
pub trait Strategy {
fn name(&self) -> &str {
"Base Strategy"
}
fn on_start(&mut self, ctx: &mut dyn StrategyContext);
fn init(&mut self, ctx: &mut dyn StrategyContext, asset: &Asset);
fn universe(&self, ctx: &mut dyn StrategyContext) -> HashSet<String>;
fn on_bar(&mut self, ctx: &mut dyn StrategyContext, symbol: &str, bar: &BarData);
fn generate_insights(&mut self, ctx: &mut dyn StrategyContext, symbol: &str);
fn insight_pipeline(&mut self, ctx: &mut dyn StrategyContext, insight: &Insight);
fn on_teardown(&mut self, ctx: &mut dyn StrategyContext);
}

Usa on_start para registrar la configuración compartida del entorno de ejecución:

  • indicadores
  • modelos alfa
  • pipes
  • ajustes de riesgo
  • velas de calentamiento

universe() devuelve los símbolos con los que opera la estrategia. AQE usa esos símbolos para cargar los metadatos de Asset desde la combinación de fuente de datos y bróker seleccionada.

init() se ejecuta una vez por activo después de cargar el universo. Úsalo para la inicialización por activo, como variables por símbolo, estado de indicadores específico de cada símbolo o configuración que dependa del activo.

on_bar() se llama cada vez que llega una nueva vela para un símbolo. Aquí actualizas el estado de la estrategia con los datos de mercado más recientes.

Después de on_bar(), AQE llama a generate_insights(). Aquí creas nuevos insights y los añades al entorno de ejecución.

Después de procesar las velas, AQE ejecuta el pipeline de insights. Los pipes pueden dimensionar, validar, enviar, rechazar, cancelar o cerrar insights según su estado actual.

Usa on_teardown() para la limpieza final y los resúmenes.

Para módulos reutilizables de arranque, inicialización, finalización y selección del universo, consulta Componentes del ciclo de vida.