From a712bc0f03bfc21ed867c9675bad86acfb3c588a Mon Sep 17 00:00:00 2001 From: aszerW Date: Wed, 13 May 2026 00:38:01 +0800 Subject: [PATCH] =?UTF-8?q?fix(datasource):=20=E6=94=AF=E6=8C=81US=5FSTOCK?= =?UTF-8?q?=E5=92=8CHK=5FSTOCK=E7=B1=BB=E5=9E=8B=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - universal_fetcher.py: 添加 _fetch_us_stock 和 _fetch_hk_stock 方法 - flask_server.py: SSH_HOST 修正为正确的IP地址 8.218.167.69 - 测试 META 获取成功,info 字段在最外层返回179个属性 --- .env | 12 ++++++++++++ datasource/universal_fetcher.py | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/.env b/.env index d2d7e3f..99f3b80 100644 --- a/.env +++ b/.env @@ -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 diff --git a/datasource/universal_fetcher.py b/datasource/universal_fetcher.py index 0aa79d2..9550cb0 100644 --- a/datasource/universal_fetcher.py +++ b/datasource/universal_fetcher.py @@ -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,