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>
This commit is contained in:
+85
@@ -0,0 +1,85 @@
|
||||
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>());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user