架构改动: - 移除 HybridDataSource(功能被 UniversalDataFetcher 覆盖) - 新增分层接口设计:基础层 + 扩展层 基础层(统一接口): - fetch(): 统一 OHLCV 接口,自动识别资产类型 - fetch_batch(): 批量获取 扩展层(资产类型特有): - fetch_etf_adj(): A股 ETF 后复权价格 - fetch_us_adj(): 美股复权价格 - fetch_etf_with_nav(): ETF 价格 + 净值 + 溢价率 其他修改: - YFinanceSource: 新增 fetch_adj() 方法 - strategy.py: 改用 UniversalDataFetcher 替代 HybridDataSource - __init__.py: 移除 HybridDataSource 导出
38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
"""
|
||
数据源模块
|
||
|
||
核心数据获取能力:
|
||
- A股数据:Tushare(指数、ETF、期货)
|
||
- 境外数据:YFinance(港股、美股)通过SSH隧道
|
||
- 加密货币:CCXT(OKX)通过 socks2http
|
||
|
||
架构设计:
|
||
- 分层架构:基础层统一接口,扩展层资产类型特有方法
|
||
- Flask API:LRU + TTL 双缓存机制
|
||
|
||
用法:
|
||
from datasource import UniversalDataFetcher
|
||
|
||
# 基础层:统一 OHLCV 接口
|
||
fetcher = UniversalDataFetcher()
|
||
df = fetcher.fetch("000300.SH", "2024-01-01", "2024-12-31")
|
||
|
||
# 扩展层:资产类型特有方法
|
||
df_adj = fetcher.fetch_etf_adj("513100.SH", ...) # ETF 后复权
|
||
df_adj = fetcher.fetch_us_adj("AAPL", ...) # 美股复权
|
||
"""
|
||
|
||
from .ssh_tunnel import SSHTunnelManager
|
||
from .tushare_source import TushareSource
|
||
from .yfinance_source import YFinanceSource
|
||
from .asset_type_detector import AssetTypeDetector, AssetType
|
||
from .universal_fetcher import UniversalDataFetcher
|
||
|
||
__all__ = [
|
||
'SSHTunnelManager',
|
||
'TushareSource',
|
||
'YFinanceSource',
|
||
'AssetTypeDetector',
|
||
'AssetType',
|
||
'UniversalDataFetcher',
|
||
] |