using AssetManager.Data; using AssetManager.Models.DTOs; using Microsoft.Extensions.Logging; namespace AssetManager.Infrastructure.StrategyEngine.Calculators; /// /// 吊灯止损策略计算器 /// public class ChandelierExitCalculator : IStrategyCalculator { private readonly ILogger _logger; public string StrategyType => AssetManager.Models.DTOs.StrategyType.ChandelierExit; public ChandelierExitCalculator(ILogger logger) { _logger = logger; } public async Task CalculateAsync( string configJson, List positions, CancellationToken cancellationToken = default) { _logger.LogInformation("计算吊灯止损策略信号"); var config = System.Text.Json.JsonSerializer.Deserialize(configJson, new System.Text.Json.JsonSerializerOptions { PropertyNameCaseInsensitive = true }) ?? new ChandelierExitConfig(); if (positions.Count == 0) { return new StrategySignal { StrategyType = StrategyType, Signal = "HOLD", Reason = "无持仓", GeneratedAt = DateTime.UtcNow }; } // 简单实现:返回持有信号 await Task.Delay(1, cancellationToken); return new StrategySignal { StrategyType = StrategyType, Signal = "HOLD", Reason = "吊灯止损策略暂未实现", GeneratedAt = DateTime.UtcNow }; } }