Aller au contenu

Courtiers et flux de données

AQE expose actuellement ces intégrations runtime concrètes :

  • courtiers d’exécution : PaperBroker, Mt5Broker
  • datafeeds : YahooFinanceDataFeed, Mt5DataFeed

Elles sont composées via UnifiedBroker, qui donne au runtime de stratégie une surface courtier cohérente.

aq-engine/src/core/broker/mod.rs
pub trait Broker {
async fn connect(&self) -> Result<bool, BrokerError>;
async fn disconnect(&self) -> Result<bool, BrokerError>;
fn is_connected(&self) -> bool;
fn get_name(&self) -> String;
fn get_account_type(&self) -> Result<AccountType, BrokerError>;
}
pub trait OrderManagementProvider: Broker {
async fn submit_order(&self, insight: Insight) -> Result<Order, BrokerError>;
async fn cancel_order(&self, order_id: &str) -> Result<bool, BrokerError>;
async fn close_position(&self, order_id: &str, qty: f64, price: Option<f64>) -> Result<bool, BrokerError>;
async fn get_account(&self) -> Result<Account, BrokerError>;
fn drain_trade_events(&self) -> Vec<(Order, TradeUpdateEvent)>;
}
aq-engine/src/core/broker/mod.rs
pub trait DataFeed {
async fn connect(&self) -> Result<bool, BrokerError>;
async fn disconnect(&self) -> Result<bool, BrokerError>;
fn is_connected(&self) -> bool;
}
pub trait DataProvider: DataFeed {
async fn get_ticker_info(&self, symbol: &str) -> Result<Asset, BrokerError>;
async fn get_history(
&self,
symbol: &str,
start: DateTime<Utc>,
end: DateTime<Utc>,
time_frame: TimeFrame,
) -> Result<DataFrame, BrokerError>;
async fn get_latest_quote(&self, symbol: &str) -> Result<Quote, BrokerError>;
async fn get_latest_bar(&self, symbol: &str) -> Result<Bar, BrokerError>;
}

PaperBroker est le simulateur d’exécution d’AQE pour :

  • le backtesting
  • le paper trading
  • la validation du comportement du cycle de vie des insights

Il gère :

  • la soumission d’ordres
  • les fills
  • les annulations
  • les demandes de clôture
  • les jambes bracket
  • l’exécution du trailing stop
  • l’émission d’événements de trade
  • l’état du compte et de l’equity

Il empêche aussi les états de compte paper invalides, comme des ordres qui dépasseraient le buying power disponible.

YahooFinanceDataFeed fournit :

  • les métadonnées ticker
  • les barres historiques
  • les dernières cotations
  • les dernières barres
  • l’abonnement au flux de barres live

C’est le chemin de données de marché par défaut pour la recherche historique et les workflows runtime orientés paper.

Mt5Broker et Mt5DataFeed sont des intégrations live-only qui connectent AQE à un terminal MetaTrader 5 en cours d’exécution via le bridge local AQE MT5.

Elles sont conçues pour :

  • les snapshots de compte live
  • les dernières cotations et mises à jour de barres
  • la soumission et l’annulation d’ordres
  • les demandes de clôture de position
  • la livraison des événements de trade vers AQE

Le bridge MT5 exige que le service bridge AQE tourne localement et que l’Expert Advisor MT5 soit attaché à un graphique du terminal avec des paramètres de session et de token correspondants.

L’intégration MT5 a deux côtés :

  • Côté AQE : Mt5Broker et Mt5DataFeed parlent au bridge MT5 local avec le token et l’adresse de bind configurés.
  • Côté terminal MT5 : l’Expert Advisor AQE tourne dans MetaTrader 5 et interroge le bridge AQE local pour les demandes market-data et RPC courtier.

Utilisez ce flux de configuration :

  1. Installez ou mettez à jour l’Expert Advisor AQE MT5 depuis le dépôt AQE.
  2. Démarrez MetaTrader 5 et connectez-vous au compte qu’AQE doit utiliser.
  3. Attachez l’Expert Advisor AQE à un graphique pour un symbole exposé par votre courtier.
  4. Définissez le même AQE_MT5_BRIDGE_TOKEN dans l’environnement runtime AQE et dans l’Expert Advisor.
  5. Gardez l’adresse de bind du bridge alignée entre AQE et l’Expert Advisor. L’adresse locale par défaut est 127.0.0.1:18080.
  6. Démarrez le runtime AQE et confirmez que l’Expert Advisor interroge le bridge.

Pour les fichiers de l’Expert Advisor, les notes d’installation et le README du bridge, consultez le répertoire d’intégration AQE MT5 sur GitHub : algoquantstudio/aq-engine integrations/mt5.

Quand vous utilisez MT5 pour l’exécution live, vérifiez les fills, stops, l’état du compte et les positions ouvertes dans le terminal MT5. AQE reçoit les mises à jour courtier depuis le bridge, mais le compte MT5 reste la source de vérité pour l’exécution live.

let execution = PaperBroker::new(100_000.0);
let data = YahooFinanceDataFeed::new();
let broker = UnifiedBroker::new_backtest(execution, data);

En live, le même pattern s’applique, mais le runtime utilise le chemin live au lieu de new_backtest(...).

Quand la synchronisation live est activée, AQE publie l’état broker/runtime dans des tables par session utilisées par AQS :

  • insights
  • strategy_accounts
  • strategy_equity_points
  • strategy_live_metrics
  • strategy_events

Cela signifie que le comportement courtier/datafeed façonne directement ce que l’opérateur voit dans l’UI desktop.

  • aq-engine/src/core/broker/mod.rs
  • aq-engine/src/core/broker/paper_broker.rs
  • aq-engine/src/core/broker/data_feeds/yahoo.rs