Modelos de universo
Un modelo de universo es un selector modular de símbolos. Devuelve símbolos mediante UniverseResult:
pub trait UniverseModel { fn version(&self) -> &str; fn run(&mut self, ctx: &mut dyn StrategyContext) -> UniverseResult;}AQE combina los símbolos devueltos por Strategy::universe(ctx) y todos los modelos de universo registrados. El universo final es una unión sin duplicados. Esto significa que un universo estático puede seguir definido directamente en la estrategia mientras uno o más modelos de universo añaden símbolos a partir de listas de seguimiento, filtros, reglas de cuenta o lógica de selección que tenga en cuenta la fecha.
state.add_universe_model( UniverseModelBuilder::new(Box::new(MyUniverseModel::new())) .can_fail(false) .build(),);Ejemplo
Sección titulada «Ejemplo»use aq_engine::core::strategy::StrategyContext;use aq_engine::core::universe::{UniverseModel, UniverseResult};use std::collections::HashSet;
pub struct CryptoMajors;
impl CryptoMajors { pub fn new() -> Self { Self }}
impl UniverseModel for CryptoMajors { fn version(&self) -> &str { "1.0" }
fn run(&mut self, _ctx: &mut dyn StrategyContext) -> UniverseResult { let symbols = ["BTCUSD", "ETHUSD"] .into_iter() .map(str::to_string) .collect::<HashSet<_>>();
UniverseResult::passed(symbols, self.name().to_string()) }}Código directo o modular
Sección titulada «Código directo o modular»Sigue siendo válido escribir el código del ciclo de vida directamente en la estrategia:
- coloca el registro sencillo de arranque en
Strategy::on_start - coloca la configuración sencilla por activo en
Strategy::init - devuelve un conjunto fijo de símbolos desde
Strategy::universe - coloca la limpieza puntual en
Strategy::on_teardown
Usa preferentemente modelos de universo cuando la selección de símbolos pertenezca claramente a un módulo, necesite configuración de constructor o deba reutilizarse entre estrategias.
Usamos cookies y almacenamiento esenciales para el inicio de sesión, la seguridad de la cuenta, las preferencias de tema de color, este aviso y las métricas internas necesarias de PostHog sobre uso, calidad de las sesiones y fiabilidad. No usamos cookies publicitarias.
