using AssetManager.Data;
using AssetManager.Models.DTOs;
using Microsoft.Extensions.Logging;
namespace AssetManager.Infrastructure.StrategyEngine.Calculators;
///
/// 均线趋势策略计算器
///
public class MaTrendCalculator : IStrategyCalculator
{
private readonly ILogger _logger;
public string StrategyType => AssetManager.Models.DTOs.StrategyType.MaTrend;
public MaTrendCalculator(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 MaTrendConfig();
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
};
}
}