@page "/trading-control" @using TradingBot.Services @using TradingBot.Models @inject TradingStrategiesService StrategiesService @inject TradingBotService BotService @implements IDisposable @rendermode InteractiveServer Trading Control - TradingBot
@foreach (var asset in BotService.AssetConfigurations.Values.OrderBy(a => a.Symbol)) { var mapping = StrategiesService.GetAssetMapping(asset.Symbol); var engineStatus = StrategiesService.GetEngineStatus(asset.Symbol); var isActive = mapping?.IsActive ?? false;

@asset.Symbol

@asset.Name
@if (mapping != null && mapping.StrategyIds.Count > 0) {

Strategie Assegnate (@mapping.StrategyIds.Count)

@foreach (var strategyId in mapping.StrategyIds) { var strategyInfo = availableStrategies[strategyId];
@strategyInfo.Name @strategyInfo.Category
}
@if (engineStatus?.LastDecision != null && isActive) {

Ultima Decisione

@engineStatus.LastDecision.Decision Confidenza: @engineStatus.LastDecision.Confidence.ToString("F0")%
@engineStatus.LastDecision.Reason
Buy: @engineStatus.LastDecision.BuyVotes Sell: @engineStatus.LastDecision.SellVotes Hold: @engineStatus.LastDecision.HoldVotes
} }
}
@if (showStrategySelector) { }
@code { private Dictionary availableStrategies = new(); private bool showStrategySelector = false; private string selectedAssetSymbol = ""; private string selectedAssetName = ""; private List selectedStrategies = new(); private int activeAssets = 0; private int totalStrategies = 0; protected override void OnInitialized() { LoadData(); StrategiesService.OnMappingsChanged += HandleMappingsChanged; } private void LoadData() { availableStrategies = StrategiesService.GetAvailableStrategies().ToDictionary(k => k.Key, v => v.Value); var mappings = StrategiesService.GetAllMappings(); activeAssets = mappings.Values.Count(m => m.IsActive); totalStrategies = mappings.Values.Sum(m => m.StrategyIds.Count); } private void ToggleAsset(string symbol, bool active) { if (active) { StrategiesService.ActivateAsset(symbol); } else { StrategiesService.DeactivateAsset(symbol); } LoadData(); } private void OpenStrategySelector(string symbol, string name) { selectedAssetSymbol = symbol; selectedAssetName = name; var mapping = StrategiesService.GetAssetMapping(symbol); selectedStrategies = mapping?.StrategyIds.ToList() ?? new List(); showStrategySelector = true; } private void CloseStrategySelector() { showStrategySelector = false; selectedStrategies.Clear(); } private void ToggleStrategy(string strategyId) { if (selectedStrategies.Contains(strategyId)) { selectedStrategies.Remove(strategyId); } else { selectedStrategies.Add(strategyId); } } private void SaveStrategies() { StrategiesService.AssignStrategiesToAsset(selectedAssetSymbol, selectedAssetName, selectedStrategies); CloseStrategySelector(); LoadData(); } private void RemoveStrategy(string symbol, string strategyId) { StrategiesService.RemoveStrategyFromAsset(symbol, strategyId); LoadData(); } private void HandleMappingsChanged() { LoadData(); InvokeAsync(StateHasChanged); } public void Dispose() { StrategiesService.OnMappingsChanged -= HandleMappingsChanged; } }