Broker-Adapter gegen TWS/IB Gateway, aktivierbar über IBKRSettings.UseTwsApi;
NullBrokerClient bleibt Default. TradingEnabled bleibt als zweite, unabhängige
Sicherung bestehen – ohne ihn platziert der ExecutionService keine Order.
Aufteilung (src/IBKRTrader.Core/Trading/Ibkr/):
- IbkrMapping – reine Abbildung Core <-> TWS (Kontrakt, Order, Kurs, Port-
und Statusregeln), vollständig unit-getestet
- IbkrConnection – Socket-Lebenszyklus, Reader-Thread, reqId-Korrelation über
TaskCompletionSource
- IbkrBrokerClient – implementiert IBrokerClient, übersetzt Fehler in leere
Ergebnisse (Konto 0 lässt die Risikoprüfung alles ablehnen)
Bewusste Entscheidungen:
- Träges Verbinden mit Wiederholung statt Verbindungsaufbau beim Start: TWS ist
nach einem Neustart minutenlang nicht bereit.
- Port wird gegen den Handelsmodus geprüft; Paper-Modus auf Live-Port (oder
umgekehrt) lässt den Broker inaktiv, statt auf dem falschen Konto zu handeln.
- MarketDataType Default 4: Paper-Konten ohne Datenabo bekommen sonst keine Kurse.
- Fehlercode 10167 ist ein Statushinweis (verzögerte Daten folgen), kein Fehler.
Als Fehler behandelt scheiterte jede einzelne Kursabfrage.
Verifiziert gegen Paper-Konto DUR371528: Verbindung, Konto (100.105,50 EUR),
Kurse (AAPL/MSFT/NVDA, verzögert), Fehlerpfade. Orderpfad bis zur Broker-Annahme
per What-If-Order geprüft (Aktie + Option, ohne Ausführung); dabei zugleich die
Optionsberechtigung des Kontos bestätigt. Offen: echte Ausführung (Fill ->
Buchung) und asynchrone Fill-Verfolgung – beides in IBKR-Integration.md notiert.
Doku: TWS-Setup-Checkliste.md (Einstellungen für Neuinstallation) neu,
IBKR-Integration.md / ARCHITECTURE.md / README.md nachgezogen.
154/154 Tests grün.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
51 lines
2.1 KiB
XML
51 lines
2.1 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!--
|
|
Repo-lokale NuGet-Konfiguration.
|
|
Die globale NuGet.Config des Nutzers nutzt packageSourceMapping (Allowlist).
|
|
packageSourceMapping wird NICHT über Config-Dateien gemerged: die projektnächste
|
|
Datei ersetzt die Zuordnung vollständig. Deshalb hier die App-Pakete UND die
|
|
Test-Pakete gemeinsam auf nuget.org gemappt (Allowlist-Ansatz bleibt erhalten).
|
|
-->
|
|
<configuration>
|
|
<packageSources>
|
|
<clear />
|
|
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
|
|
</packageSources>
|
|
<packageSourceMapping>
|
|
<packageSource key="nuget.org">
|
|
<!-- App-Pakete -->
|
|
<package pattern="MySqlConnector" />
|
|
<package pattern="Dapper" />
|
|
<package pattern="HtmlAgilityPack" />
|
|
<package pattern="Newtonsoft.Json" />
|
|
<!-- Offizielle TWS-C#-API (NuGet-Mirror) für den IBKR-Broker-Adapter -->
|
|
<package pattern="IB.TWS.CSharpApi" />
|
|
<!-- EF Core / Pomelo (MySQL/MariaDB) -->
|
|
<package pattern="Microsoft.EntityFrameworkCore.*" />
|
|
<package pattern="Pomelo.*" />
|
|
<package pattern="Humanizer.*" />
|
|
<package pattern="Mono.TextTemplating" />
|
|
<package pattern="dotnet-ef" />
|
|
<!-- Test-Pakete -->
|
|
<package pattern="xunit*" />
|
|
<package pattern="NSubstitute" />
|
|
<package pattern="Castle.Core" />
|
|
<package pattern="FluentAssertions" />
|
|
<package pattern="coverlet.*" />
|
|
<package pattern="Microsoft.CodeCoverage" />
|
|
<package pattern="Microsoft.TestPlatform.*" />
|
|
<!-- Framework / Extensions / Runtime -->
|
|
<package pattern="Microsoft.Extensions.*" />
|
|
<package pattern="Microsoft.NET.*" />
|
|
<package pattern="Microsoft.NETCore.*" />
|
|
<package pattern="Microsoft.WindowsDesktop.*" />
|
|
<package pattern="Microsoft.AspNetCore.*" />
|
|
<package pattern="Microsoft.Bcl.*" />
|
|
<package pattern="Microsoft.Win32.*" />
|
|
<package pattern="System.*" />
|
|
<package pattern="runtime.*" />
|
|
<package pattern="NETStandard.*" />
|
|
</packageSource>
|
|
</packageSourceMapping>
|
|
</configuration>
|