using IBKRTrader.Core.Logging; namespace IBKRTrader.Core.Trading; /// /// Sicherer Standard-Broker: handelt NIEMALS. /// Wird registriert, bis der echte IBKR-Adapter angebunden und gegen den /// Paper-Gateway verifiziert ist. So kann keine Order versehentlich rausgehen. /// public sealed class NullBrokerClient : IBrokerClient, IBrokerPortfolioReader { private readonly LoggingService _logger; public NullBrokerClient(LoggingService logger) => _logger = logger; public Task> GetPositionsAsync(CancellationToken ct = default) => Task.FromResult>(Array.Empty()); public Task> GetExecutionsAsync(DateTime? since = null, CancellationToken ct = default) => Task.FromResult>(Array.Empty()); public Task GetQuoteAsync(string symbol, CancellationToken ct = default) => Task.FromResult(null); public Task GetAccountStateAsync(CancellationToken ct = default) => Task.FromResult(new AccountState(0m, 0m)); public Task PlaceOrderAsync(OrderRequest request, CancellationToken ct = default) { _logger.Warn("Core", $"NullBrokerClient: Order NICHT ausgeführt ({request.Side} {request.Quantity}x {request.Symbol}) " + "– echter IBKR-Broker noch nicht angebunden."); return Task.FromResult(OrderResult.Fail("Broker nicht angebunden (NullBrokerClient).")); } }