fix(datasource): 修正混合数据源导入路径错误

- 修正 strategies.rotation.engine 中 hybrid_source 模块导入路径错误
- 新增 core.datasource 目录下多个数据源实现模块
- 增加 Akshare 数据源支持 A股指数数据拉取
- 实现数据缓存管理机制,支持本地数据缓存读写
- 新增 YFinance 数据源,支持通过 SSH 隧道访问美股和港股数据
- 实现混合数据源支持 A股/Tushare、港美股/YFinance、加密货币/CCXT 的统一访问
- 集成 SSH 隧道管理,支持 SOCKS5 转 HTTP 代理转发
- 新增 socks2http.py 代理转发工具,解决 CCXT 仅支持 HTTP 代理问题
- 修改 rotation.yaml 加密货币注释,明确使用 OKX 现货和 SSH->HTTP 代理访问
- 删除.gitignore中无用的 data/ 忽略规则,保留 test/ 文件夹忽略规则
This commit is contained in:
2026-03-25 01:32:33 +08:00
parent c104fca693
commit 6454e6823f
10 changed files with 1083 additions and 4 deletions

53
core/datasource/base.py Normal file
View File

@@ -0,0 +1,53 @@
"""
数据源抽象基类
"""
from abc import ABC, abstractmethod
from typing import Optional
import pandas as pd
class DataSource(ABC):
"""数据源抽象基类"""
@abstractmethod
def fetch_ohlcv(
self,
code: str,
start_date: str,
end_date: str,
fields: Optional[list] = None,
) -> pd.DataFrame:
"""
获取OHLCV数据
Args:
code: 标的代码
start_date: 开始日期 (YYYY-MM-DD)
end_date: 结束日期 (YYYY-MM-DD)
fields: 指定字段列表None表示获取全部
Returns:
DataFrame with columns: date, open, high, low, close, volume
"""
pass
@abstractmethod
def fetch_multiple(
self,
codes: list,
start_date: str,
end_date: str,
) -> pd.DataFrame:
"""
批量获取多只标的收盘价数据
Args:
codes: 标的代码列表
start_date: 开始日期
end_date: 结束日期
Returns:
DataFrame, index=日期, columns=代码, values=收盘价
"""
pass