Baseline: Ausgangszustand vor Modularisierung

Erster Commit des bestehenden monolithischen WinForms-Copytraders,
inklusive der Alt-Backups (*.bak), damit diese dauerhaft in der
Historie rekonstruierbar bleiben. Threema-Lib unter libs/ wurde
vendored (nested .git entfernt).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
bergm
2026-07-01 13:16:16 +02:00
co-authored by Claude Opus 4.8
commit 475d396f80
147 changed files with 25455 additions and 0 deletions
@@ -0,0 +1,47 @@
PROJEKT: C# Copytrader Windows Forms App (Umwandlung aus bestehendem Python-Projekt)Ziel: Maximale Performance & niedrigste Latenz beim Kopieren von Master-Signalen auf nur 510 Follower-Accounts (max. 50100 Master-Trader).
App-Typ: Windows Forms Application (.NET 8 oder .NET 9) in Visual Studio 2022 muss unbedingt so bleiben! Der User möchte Live- und Demo-Trading-Accounts direkt in der GUI konfigurieren, Einstellungen ändern und überwachen können.
Wichtigste Anforderung: Alles kritische im RAM (Hot-Path), nur finalized Daten asynchron persistieren. Skalierung ist bewusst klein → Architektur darf deutlich einfacher und wartbarer sein als bei 1000 Accounts.Kern-Architektur für maximale Performance (angepasst an WinForms + kleine Skalierung)In-Memory Hot-Path (alles kritische im RAM)Zentrale Klasse TradingState mit:ConcurrentDictionary<string, AccountState> (Key: AccountId)
Jeder AccountState enthält: Balance, ConcurrentDictionary<string, Position> (Open Positions), Pending Orders, Risk-Parameter etc.
Keine DB-Zugriffe im Live-Copy-Pfad!
Asynchrone Signal-VerarbeitungCopyTradingEngine als BackgroundService oder IHostedService (über Microsoft.Extensions.Hosting in der WinForms-App integriert)
Eingehende Master-Signale kommen in System.Threading.Channel<CopySignal>
Einfacher Consumer (12 Tasks reichen völlig aus bei max. 10 Accounts)
Innerhalb des Consumers: asynchron über alle Accounts iterieren (kein schweres Parallel.ForEachAsync nötig)
Persistence (nur finalized Daten)Separate PersistenceService (BackgroundService)
Channel<ClosedTrade> für Fire-and-Forget Logging
Nur geschlossene Trades, Performance-Logs und Audit-Daten asynchron schreiben
Empfohlene DB: LiteDB (embedded, 100 % C#, super schnell & einfach) oder Microsoft.Data.Sqlite (EF Core / Dapper)
Crash-Recovery & Snapshot-MechanismusBeim Form-Load / App-Start:Polymarket-API abfragen → alle offenen Positionen, Orders, Balances laden
In TradingState einspielen
Letzten JSON-Snapshot laden und Reconciliation durchführen
Alle 3060 Sekunden: Snapshot des gesamten TradingState als JSON auf Festplatte (Background-Task)
Multithreading Moderner .NET-Standard (2026)Kein BackgroundWorker (veraltet!)
Nur: BackgroundService / IHostedService (sauber in WinForms integriert via HostBuilder)
System.Threading.Channels, ConcurrentDictionary, async/await überall
UI-Updates immer thread-sicher (InvokeRequired + Invoke oder BindingSource)
Graceful Shutdown mit CancellationToken
API-Integration (aktueller Stand)Primär Polymarket API nutzen (bleiben, weil günstiger)
Antigravity hat bereits die Option für wss Blockchainstream der Polygon Chain (über Alchemy.com) implementiert → diese Option soll vorhanden bleiben (als Toggle in der GUI), aber nicht aktiv genutzt werden, solange die Polymarket API ausreicht.
Wir werden früher oder später wahrscheinlich an das Polymarket-Ratelimit stoßen die Architektur soll später leicht auf Alchemy umschaltbar sein.
Gewünschtes Projekt-Gerüst (was Antigravity generieren soll)WinForms-Projekt (.NET 8/9) mit Program.cs + HostBuilder (Microsoft.Extensions.Hosting)
MainForm.cs (Einstellungen für Live-/Demo-Accounts, Start/Stop-Buttons, Monitoring)
TradingState.cs (Records + ConcurrentDictionary)
CopyTradingEngine.cs (Channel + Signal-Verarbeitung)
PersistenceService.cs (Channel + LiteDB/SQLite)
SnapshotService.cs (periodische JSON-Snapshots)
PolymarketApiService.cs (bzw. WebSocket/REST-Stub Alchemy-Option als alternativer Service)
Models/ Ordner (CopySignal, Position, ClosedTrade, AccountState etc.)
Services/ Ordner für alle BackgroundServices
appsettings.json + Konfiguration
README mit benötigten NuGet-Paketen (LiteDB, System.Threading.Channels, Microsoft.Extensions.Hosting.WindowsForms, Newtonsoft.Json oder System.Text.Json etc.)
Ziel: Das fertige Gerüst soll bei 510 Accounts + 50100 Mastern eine Copy-Latenz unter 5 ms erreichen und extrem einfach zu warten sein. Die bestehende Python-Logik (Signal-Erkennung, Risk-Management, Order-Generierung) soll schrittweise in diese Architektur übertragen werden.