Add Events
add_events permet à une stratégie AQE de s’abonner à des flux de données de marché supplémentaires en plus du timeframe principal de la stratégie. Le premier type pris en charge est EventStreamType::Bar.
Le timeframe principal est toujours enregistré automatiquement depuis le timeframe passé à run_backtest(...) ou configuré pour le runtime live. Utilisez add_events uniquement pour ajouter des timeframes de contexte comme 1m, 15m ou 1h.
Utilisation de base
Section intitulée « Utilisation de base »Enregistrez les flux dans on_start :
use aq_engine::core::strategy::{EventStreamType, StrategyContext};use aq_engine::core::utils::timeframe::{TimeFrame, TimeFrameUnit};
fn on_start(&mut self, ctx: &mut dyn StrategyContext) { ctx.add_events( EventStreamType::Bar, Some(TimeFrame::new(15, TimeFrameUnit::Minute)), );}AQE applique ce flux à chaque actif de l’univers chargé. Si la stratégie suit BTC et ETH, un flux feature 15m est enregistré pour les deux symboles.
Utilisez EventStreamRequest pour définir des options :
use aq_engine::core::strategy::{EventStreamRequest, EventStreamType, StrategyContext};use aq_engine::core::utils::timeframe::{TimeFrame, TimeFrameUnit};
fn on_start(&mut self, ctx: &mut dyn StrategyContext) { ctx.add_events_with_options( EventStreamRequest::bar(Some(TimeFrame::new(1, TimeFrameUnit::Hour))) .allow_trading(true), );}allow_trading contrôle la génération côté stratégie et modèles alpha :
falseest le défaut pour les flux feature. AQE met l’historique à jour et appelleon_bar, mais n’appelle pasgenerate_insightspour cet événement feature.trueautorise les modèles alpha et la stratégie à générer des insights pour cet événement feature.
L’exécution broker suit toujours le chemin d’exécution normal. Les barres feature servent surtout à enrichir le contexte et la génération de signaux.
Clés d’historique
Section intitulée « Clés d’historique »Le timeframe principal conserve la clé symbole :
let main_history = ctx.history().get(symbol);Les timeframes feature utilisent {symbol}:{timeframe} :
let feature_history = ctx.history().get("BTC:15m");let faster_history = ctx.history().get("BTC:1m");let hourly_history = ctx.history().get("ETH:1h");Lire l’événement courant
Section intitulée « Lire l’événement courant »Utilisez ctx.current_event() dans on_bar, les modèles alpha ou generate_insights :
fn on_bar(&mut self, ctx: &mut dyn StrategyContext, symbol: &str, _bar: &BarData) { let Some(event) = ctx.current_event() else { return; };
let history = ctx.history().get(&event.history_key);
if event.is_feature { println!("feature bar: {} {}", event.symbol, event.timeframe); } else { println!("main bar: {symbol}"); }}StrategyEventContext expose event_type, symbol, timeframe, history_key, is_feature, allow_trading et timestamp.
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.
