Universe models
Un universe model est un sélecteur de symboles modulaire. Il retourne des symboles via UniverseResult :
pub trait UniverseModel { fn version(&self) -> &str; fn run(&mut self, ctx: &mut dyn StrategyContext) -> UniverseResult;}AQE fusionne les symboles retournés par Strategy::universe(ctx) et par chaque universe model enregistré. L’univers final est une union dédoublonnée. Cela permet de garder un univers statique inline tout en ajoutant des symboles depuis des watchlists, filtres, règles de compte ou sélections dépendant de la date.
state.add_universe_model( UniverseModelBuilder::new(Box::new(MyUniverseModel::new())) .can_fail(false) .build(),);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()) }}Inline Ou Modulaire
Section intitulée « Inline Ou Modulaire »Le code inline reste valide :
- mettez la configuration simple dans
Strategy::on_start - mettez l’initialisation par actif dans
Strategy::init - retournez un ensemble fixe depuis
Strategy::universe - placez le nettoyage ponctuel dans
Strategy::on_teardown
Préférez les universe models quand la sélection de symboles a une frontière de module claire, a besoin d’une configuration de constructeur ou doit être réutilisée entre stratégies.
Nous utilisons des cookies et du stockage essentiels pour la connexion, la sécurité du compte, les préférences de thème, cet avis et les métriques internes PostHog nécessaires sur l’utilisation, la qualité de session et la fiabilité. Nous n’utilisons pas de cookies publicitaires.
