@page "/indicators" @using TradingBot.Services @using TradingBot.Models @inject IndicatorsService IndicatorsService @inject TradingBotService BotService @implements IDisposable @rendermode InteractiveServer Indicatori - TradingBot
@foreach (var indicator in indicators.Values.OrderBy(i => !i.IsEnabled).ThenBy(i => i.Name)) {

@indicator.Name

@indicator.Type

@indicator.Description

@if (indicator.IsEnabled) {
@switch (indicator.Type) { case IndicatorType.RSI: case IndicatorType.Stochastic:
break; case IndicatorType.MACD:
break; case IndicatorType.SMA: case IndicatorType.EMA: case IndicatorType.BollingerBands:
break; }

Status Asset Attivi

@foreach (var symbol in BotService.AssetConfigurations.Values.Where(c => c.IsEnabled).Select(c => c.Symbol)) { var status = IndicatorsService.GetIndicatorStatus(indicator.Id, symbol); if (status != null) {
@symbol @status.CurrentValue.ToString("F2") @status.Condition @status.Recommendation
} }
}
}

Segnali Recenti

@recentSignals.Count segnali
@if (recentSignals.Count == 0) {

Nessun segnale generato

} else {
@foreach (var signal in recentSignals.Take(20)) {
@signal.Timestamp.ToLocalTime().ToString("HH:mm:ss") @signal.IndicatorName @signal.Symbol @signal.Type @signal.Strength
@signal.Message
@if (signal.Value.HasValue) {
Valore: @signal.Value.Value.ToString("F2")
}
}
}
@code { private Dictionary indicators = new(); private List recentSignals = new(); protected override void OnInitialized() { LoadIndicators(); IndicatorsService.OnIndicatorsChanged += HandleIndicatorsChanged; IndicatorsService.OnSignalGenerated += HandleSignalGenerated; } private void LoadIndicators() { indicators = IndicatorsService.GetIndicators().ToDictionary(k => k.Key, v => v.Value); recentSignals = IndicatorsService.GetRecentSignals().ToList(); } private void ToggleIndicator(string id, bool enabled) { IndicatorsService.ToggleIndicator(id, enabled); } private void SaveIndicator(IndicatorConfig indicator) { IndicatorsService.UpdateIndicator(indicator.Id, indicator); } private void HandleIndicatorsChanged() { LoadIndicators(); InvokeAsync(StateHasChanged); } private void HandleSignalGenerated(IndicatorSignal signal) { recentSignals = IndicatorsService.GetRecentSignals().ToList(); InvokeAsync(StateHasChanged); } public void Dispose() { IndicatorsService.OnIndicatorsChanged -= HandleIndicatorsChanged; IndicatorsService.OnSignalGenerated -= HandleSignalGenerated; } }