fix(datasource): 支持US_STOCK和HK_STOCK类型数据获取

- universal_fetcher.py: 添加 _fetch_us_stock 和 _fetch_hk_stock 方法
- flask_server.py: SSH_HOST 修正为正确的IP地址 8.218.167.69
- 测试 META 获取成功,info 字段在最外层返回179个属性
This commit is contained in:
2026-05-13 00:38:01 +08:00
parent ecd8d6539f
commit a712bc0f03
2 changed files with 44 additions and 0 deletions

12
.env
View File

@@ -25,3 +25,15 @@ OSS_ACCESS_KEY_ID=LTAI5tKD9izrfbQNSVeu4NYd
OSS_ACCESS_KEY_SECRET=Vif8FmvEat9qBA4EBbKnXhHvFQokdR
OSS_BUCKET_NAME=value-investing
OSS_ENDPOINT=https://oss-cn-wulanchabu.aliyuncs.com
# ==================== SSH 隧道配置(港美股代理) ====================
SSH_ENABLED=true
SSH_HOST=8.218.167.69
SSH_PORT=22
SSH_USERNAME=root
SSH_KEY_PATH=hk_ecs.pem
SSH_LOCAL_PORT=1080
# ==================== Flask 缓存配置 ====================
CACHE_MAXSIZE=128
CACHE_TTL_SECONDS=7200

View File

@@ -135,8 +135,12 @@ class UniversalDataFetcher:
return self._fetch_china_etf(code, start_date, end_date)
elif asset_type == AssetType.US_INDEX:
return self._fetch_us_index(code, start_date, end_date)
elif asset_type == AssetType.US_STOCK:
return self._fetch_us_stock(code, start_date, end_date)
elif asset_type == AssetType.HK_INDEX:
return self._fetch_hk_index(code, start_date, end_date)
elif asset_type == AssetType.HK_STOCK:
return self._fetch_hk_stock(code, start_date, end_date)
elif asset_type == AssetType.FUTURES:
return self._fetch_futures(code, start_date, end_date)
elif asset_type == AssetType.CRYPTO:
@@ -262,6 +266,20 @@ class UniversalDataFetcher:
self._start_tunnel()
return self._yfinance.fetch(code, start_date, end_date)
def _fetch_us_stock(
self,
code: str,
start_date: str,
end_date: str
) -> Optional[pd.DataFrame]:
"""
获取美股股票
特点YFinance需要SSH隧道返回价格+股票信息
"""
self._start_tunnel()
return self._yfinance.fetch(code, start_date, end_date)
def _fetch_hk_index(
self,
code: str,
@@ -276,6 +294,20 @@ class UniversalDataFetcher:
self._start_tunnel()
return self._yfinance.fetch(code, start_date, end_date)
def _fetch_hk_stock(
self,
code: str,
start_date: str,
end_date: str
) -> Optional[pd.DataFrame]:
"""
获取港股股票
特点YFinance需要SSH隧道返回价格+股票信息
"""
self._start_tunnel()
return self._yfinance.fetch(code, start_date, end_date)
def _fetch_futures(
self,
code: str,