Files
IBKRTrader/Program.cs
T
RichardandClaude Opus 4.8 ebeb035e92 Initial commit: IBKRTrader
.NET WinForms-Anwendung (Core, Modules/CongressTrading, UI).
Enthaelt .gitignore und settings.example.json als Konfigurationsvorlage.
Echte settings.json mit Zugangsdaten ist bewusst ausgeschlossen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-26 18:19:47 +02:00

85 lines
3.2 KiB
C#

using IBKRTrader.Core.AI;
using IBKRTrader.Core.Budget;
using IBKRTrader.Core.Database;
using IBKRTrader.Core.Database.Migrations;
using IBKRTrader.Core.IBKR;
using IBKRTrader.Core.Logging;
using IBKRTrader.Core.Settings;
using IBKRTrader.Core.Trading;
using IBKRTrader.Core.Workers;
using IBKRTrader.Core.Workers.BuiltIn;
using IBKRTrader.Modules.CongressTrading;
using Microsoft.Extensions.DependencyInjection;
namespace IBKRTrader;
internal static class Program
{
[STAThread]
static void Main()
{
ApplicationConfiguration.Initialize();
// ── DI-Container aufbauen ────────────────────────────────────────────
var services = new ServiceCollection();
// Core: Settings (zuerst laden)
var settingsService = new SettingsService();
settingsService.Load();
services.AddSingleton(settingsService);
// Core: Logging
services.AddSingleton<LoggingService>();
// Core: Database
services.AddSingleton<DatabaseService>();
services.AddSingleton<CoreMigrations>();
services.AddSingleton<IBKRMigrations>();
// Core: IBKR Services
services.AddSingleton<IBKRGatewayService>();
services.AddSingleton<IBKRMarketDataRepository>();
// Core: Other Services
services.AddSingleton<BudgetService>();
services.AddSingleton<TradeHistoryService>();
services.AddSingleton<AIModelService>();
// Core: Built-In Worker
services.AddSingleton<BackupWorker>();
services.AddSingleton<WebserverService>();
services.AddSingleton<WebApiService>();
services.AddSingleton<IBKRInstrumentSyncWorker>();
services.AddSingleton<IBKRPriceHistoryWorker>();
// ── Module registrieren ──────────────────────────────────────────────
CongressTradingModule.Register(services);
// ── IWorker-Sammlung: Core + Module ──────────────────────────────────
services.AddSingleton<IEnumerable<IWorker>>(sp => new IWorker[]
{
// Core-Worker
sp.GetRequiredService<BackupWorker>(),
sp.GetRequiredService<WebserverService>(),
sp.GetRequiredService<WebApiService>(),
// IBKR Market Data Worker
sp.GetRequiredService<IBKRInstrumentSyncWorker>(),
sp.GetRequiredService<IBKRPriceHistoryWorker>(),
}
// Modul-Worker dynamisch anhängen
.Concat(CongressTradingModule.GetWorkers(sp))
.ToArray());
services.AddSingleton<WorkerEngine>();
services.AddSingleton<Form1>();
var provider = services.BuildServiceProvider();
// WebApiService bekommt Engine-Referenz (zirkuläre Abhängigkeit auflösen)
var webApi = provider.GetRequiredService<WebApiService>();
var engine = provider.GetRequiredService<WorkerEngine>();
webApi.SetEngine(engine);
Application.Run(provider.GetRequiredService<Form1>());
}
}