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)."));
}
}