diff --git a/AssetManager.Infrastructure/Services/MarketDataService.cs b/AssetManager.Infrastructure/Services/MarketDataService.cs index 0311547..3b155de 100644 --- a/AssetManager.Infrastructure/Services/MarketDataService.cs +++ b/AssetManager.Infrastructure/Services/MarketDataService.cs @@ -428,12 +428,20 @@ public class MarketDataService : IMarketDataService /// private DateTime GetCacheExpirationTime(string assetType) { - return assetType.ToLower() switch + if (assetType.Equals("crypto", StringComparison.OrdinalIgnoreCase)) { - "stock" => DateTime.Now.AddMinutes(15), // 股票缓存15分钟 - "crypto" => DateTime.Now.AddMinutes(1), // 加密货币缓存1分钟 - _ => DateTime.Now.AddMinutes(15) - }; + return DateTime.Now.AddMinutes(1); // 加密货币7*24小时交易,缓存1分钟 + } + + // 美股交易时段:9:30-16:00 美国东部时间 = 14:30-21:00 UTC(夏令时)/15:30-22:00 UTC(冬令时) + // 简化处理:UTC时间14:00-22:00视为美股交易时段 + var nowUtc = DateTime.UtcNow; + if (nowUtc.Hour >= 14 && nowUtc.Hour < 22 && nowUtc.DayOfWeek is not DayOfWeek.Saturday and not DayOfWeek.Sunday) + { + return DateTime.Now.AddMinutes(15); // 交易时段缓存15分钟 + } + + return DateTime.Now.AddHours(24); // 非交易时段(盘前/盘后/周末)缓存24小时,节省API调用 } }