From 1830b932079bbcc3cddaad8c5f9c618b220db573 Mon Sep 17 00:00:00 2001 From: OpenClaw Agent Date: Tue, 17 Mar 2026 04:30:53 +0000 Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=A7=BB=E9=99=A4=E8=85=BE?= =?UTF-8?q?=E8=AE=AF=E5=8E=86=E5=8F=B2K=E7=BA=BF=E9=99=8D=E7=BA=A7?= =?UTF-8?q?=E9=80=BB=E8=BE=91=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=BA=9F=E5=BC=83?= =?UTF-8?q?=E6=A0=87=E8=AE=B0=E5=92=8C=E6=B3=A8=E9=87=8A=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/MarketDataService.cs | 33 +++++++------------ .../Services/TencentMarketService.cs | 6 +++- 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/AssetManager.Infrastructure/Services/MarketDataService.cs b/AssetManager.Infrastructure/Services/MarketDataService.cs index 32f6035..d5e5206 100755 --- a/AssetManager.Infrastructure/Services/MarketDataService.cs +++ b/AssetManager.Infrastructure/Services/MarketDataService.cs @@ -6,7 +6,11 @@ using Microsoft.Extensions.Logging; namespace AssetManager.Infrastructure.Services; /// -/// 市场数据服务实现(组合模式:Yahoo财经优先,腾讯财经降级,Tiingo最终降级,OKX处理加密货币) +/// 市场数据服务实现(组合模式) +/// 数据源优先级: +/// - 实时价格:Yahoo → 腾讯 → Tiingo +/// - 历史K线:Yahoo → Tiingo(腾讯历史接口已废弃) +/// - 加密货币:OKX /// public class MarketDataService : IMarketDataService { @@ -135,7 +139,8 @@ public class MarketDataService : IMarketDataService } else { - // 股票:优先Yahoo财经,失败降级腾讯财经,最后降级 Tiingo + // 股票:优先Yahoo财经,失败降级 Tiingo + // 注:腾讯财经历史K线接口已废弃,不再作为降级数据源 try { response = await _yahooService.GetStockHistoricalDataAsync(symbol, timeframe, limit); @@ -145,30 +150,14 @@ public class MarketDataService : IMarketDataService } else { - throw new Exception("Yahoo财经返回空数据"); + throw new InvalidOperationException("Yahoo财经返回空数据"); } } catch (Exception ex) { - _logger.LogWarning(ex, "Yahoo财经历史数据获取失败,降级使用 腾讯: {Symbol}", symbol); - try - { - response = await _tencentService.GetStockHistoricalDataAsync(symbol, timeframe, limit); - if (response.Count > 0) - { - source = "Tencent"; - } - else - { - throw new Exception("腾讯财经返回空数据"); - } - } - catch (Exception tencentEx) - { - _logger.LogWarning(tencentEx, "腾讯财经历史数据获取失败,降级使用 Tiingo: {Symbol}", symbol); - response = await _tiingoService.GetStockHistoricalDataAsync(symbol, timeframe, limit); - source = "Tiingo"; - } + _logger.LogWarning(ex, "Yahoo财经历史数据获取失败,降级使用 Tiingo: {Symbol}", symbol); + response = await _tiingoService.GetStockHistoricalDataAsync(symbol, timeframe, limit); + source = "Tiingo"; } } diff --git a/AssetManager.Infrastructure/Services/TencentMarketService.cs b/AssetManager.Infrastructure/Services/TencentMarketService.cs index 8caaeee..c8d2d80 100644 --- a/AssetManager.Infrastructure/Services/TencentMarketService.cs +++ b/AssetManager.Infrastructure/Services/TencentMarketService.cs @@ -18,12 +18,16 @@ public interface ITencentMarketService /// /// 获取股票历史K线数据 + /// ⚠️ 注意:腾讯历史K线接口 (web.ifzq.gtimg.cn) 已废弃,此方法会抛出异常 /// + [Obsolete("腾讯历史K线接口已废弃,请使用 Yahoo 或 Tiingo")] Task> GetStockHistoricalDataAsync(string symbol, string timeframe, int limit); } /// -/// 腾讯财经市场数据服务实现(免费无限制,支持盘前盘后) +/// 腾讯财经市场数据服务实现 +/// 实时价格接口 (qt.gtimg.cn) 正常可用 +/// 历史K线接口 (web.ifzq.gtimg.cn) 已废弃 /// public class TencentMarketService : ITencentMarketService {