Phase 5.2: TradingState-Split (Core-State vs. CopyTradingState)

- Core TradingState (in Core): globale Schalter, Accounts, MarketCache, GlobalPnl.
- Neuer CopyTradingState (im Modul): Traders, MasterTraderPositions,
  TraderAnalyticsCache, TotalCopyTrades/GetNextTradeId, PendingOrderTimestamps,
  SixSharesMinimum.
- 10 Konsumenten umgestellt (Program, frm_main, CopyTradingEngine,
  TraderMonitor, Alchemy, WSS, Snapshot, StartupHydration, beide Analytics-Jobs):
  Modul-Felder von _state.* auf _copyState.* umgeleitet, CopyTradingState via DI.
- Rein mechanische Feld-Umleitung, keine Logikänderung. Build 0 Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-07-01 20:09:50 +02:00
co-authored by Claude Opus 4.8
parent 55050a19e5
commit f8d395b2a3
13 changed files with 174 additions and 127 deletions
+5 -2
View File
@@ -18,6 +18,7 @@ namespace PolyTraderSharp.Services
public class StartupHydrationService : IHostedService
{
private readonly TradingState _state;
private readonly CopyTradingState _copyState;
private readonly IAccountRepository _accountRepo;
private readonly IPositionRepository _positionRepo;
private readonly IMongoDatabase _db;
@@ -25,12 +26,14 @@ namespace PolyTraderSharp.Services
public StartupHydrationService(
TradingState state,
CopyTradingState copyState,
IAccountRepository accountRepo,
IPositionRepository positionRepo,
IMongoDatabase db,
TerminalLogger logger)
{
_state = state;
_copyState = copyState;
_accountRepo = accountRepo;
_positionRepo = positionRepo;
_db = db;
@@ -58,10 +61,10 @@ namespace PolyTraderSharp.Services
var tradersCol = _db.GetCollection<TrackedTrader>("trackers");
foreach (var trd in tradersCol.Find(_ => true).ToList())
{
_state.Traders[trd.Id] = trd;
_copyState.Traders[trd.Id] = trd;
}
_logger.Info($"Startup-Hydration abgeschlossen: {_state.Accounts.Count} Accounts, {_state.Traders.Count} Trader geladen.");
_logger.Info($"Startup-Hydration abgeschlossen: {_state.Accounts.Count} Accounts, {_copyState.Traders.Count} Trader geladen.");
}
catch (System.Exception ex)
{