refactor: 调整实时价格数据源优先级

调整:
- 实时价格:腾讯 → Yahoo → Tiingo
- 历史K线:Yahoo → Tiingo(不变)

原因:
- Yahoo 经常 429 限流
- 腾讯财经对国内用户更稳定
- 腾讯支持美股 ETF(如 UPRO、TMF)
This commit is contained in:
OpenClaw Agent 2026-03-24 10:57:24 +00:00
parent f2105eeb3a
commit 39808c6d5d

View File

@ -9,7 +9,7 @@ namespace AssetManager.Infrastructure.Services;
/// <summary> /// <summary>
/// 市场数据服务实现(组合模式) /// 市场数据服务实现(组合模式)
/// <para>数据源优先级:</para> /// <para>数据源优先级:</para>
/// <para>- 实时价格:Yahoo → 腾讯 → Tiingo</para> /// <para>- 实时价格:腾讯 → Yahoo → Tiingo腾讯国内稳定Yahoo 常限流)</para>
/// <para>- 历史K线Yahoo → Tiingo腾讯历史接口已废弃</para> /// <para>- 历史K线Yahoo → Tiingo腾讯历史接口已废弃</para>
/// <para>- 加密货币OKX</para> /// <para>- 加密货币OKX</para>
/// </summary> /// </summary>
@ -154,27 +154,27 @@ public class MarketDataService : IMarketDataService
} }
else else
{ {
// 股票优先Yahoo财经失败降级腾讯财经最后降级 Tiingo // 股票实时价格:优先腾讯财经(国内稳定),失败降级 Yahoo最后 Tiingo
try try
{ {
_logger.LogInformation("[数据源] 尝试 Yahoo 获取 {Symbol}", symbol); _logger.LogInformation("[数据源] 尝试腾讯获取 {Symbol}", symbol);
response = await _yahooService.GetStockPriceAsync(symbol); response = await _tencentService.GetStockPriceAsync(symbol);
source = "Yahoo"; source = "Tencent";
_logger.LogInformation("[数据源] Yahoo 成功: {Symbol} = {Price}", symbol, response.Price); _logger.LogInformation("[数据源] 腾讯成功: {Symbol} = {Price}", symbol, response.Price);
} }
catch (Exception ex) catch (Exception ex)
{ {
_logger.LogWarning("[数据源] Yahoo 失败: {Symbol}, 错误: {Error}", symbol, ex.Message); _logger.LogWarning("[数据源] 腾讯失败: {Symbol}, 错误: {Error}", symbol, ex.Message);
try try
{ {
_logger.LogInformation("[数据源] 降级使用腾讯获取 {Symbol}", symbol); _logger.LogInformation("[数据源] 降级使用 Yahoo 获取 {Symbol}", symbol);
response = await _tencentService.GetStockPriceAsync(symbol); response = await _yahooService.GetStockPriceAsync(symbol);
source = "Tencent"; source = "Yahoo";
_logger.LogInformation("[数据源] 腾讯成功: {Symbol} = {Price}", symbol, response.Price); _logger.LogInformation("[数据源] Yahoo 成功: {Symbol} = {Price}", symbol, response.Price);
} }
catch (Exception tencentEx) catch (Exception yahooEx)
{ {
_logger.LogWarning("[数据源] 腾讯失败: {Symbol}, 错误: {Error}", symbol, tencentEx.Message); _logger.LogWarning("[数据源] Yahoo 失败: {Symbol}, 错误: {Error}", symbol, yahooEx.Message);
_logger.LogInformation("[数据源] 最后降级使用 Tiingo 获取 {Symbol}", symbol); _logger.LogInformation("[数据源] 最后降级使用 Tiingo 获取 {Symbol}", symbol);
response = await _tiingoService.GetStockPriceAsync(symbol); response = await _tiingoService.GetStockPriceAsync(symbol);
source = "Tiingo"; source = "Tiingo";