Files
sanguo_vnpy_v2/vnpy_v4.4.0/vnpy/trader/datafeed.py
T
claude_dev 3fbe6c9be5 feat: 纳入 VeighNa 4.4.0 上游源码作为版本参考
- 添加 vnpy_v4.4.0/ 目录到版本控制
- 删除嵌入的 .git 目录避免嵌套仓库
- 添加 README_SANGUO.md 说明来源和用途
- 更新 .gitignore 移除 vnpy_v4.4.0/ 忽略规则

上游代码信息:
- 项目: VeighNa 量化交易平台
- 版本: 4.4.0
- 来源: https://github.com/vnpy/vnpy

用途: 版本参考、代码学习、差异对比、离线开发

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-01 21:40:21 +08:00

69 lines
1.9 KiB
Python

from types import ModuleType
from collections.abc import Callable
from importlib import import_module
from .object import HistoryRequest, TickData, BarData
from .setting import SETTINGS
from .locale import _
class BaseDatafeed:
"""
Abstract datafeed class for connecting to different datafeed.
"""
def init(self, output: Callable = print) -> bool:
"""
Initialize datafeed service connection.
"""
return False
def query_bar_history(self, req: HistoryRequest, output: Callable = print) -> list[BarData]:
"""
Query history bar data.
"""
output(_("查询K线数据失败:没有正确配置数据服务"))
return []
def query_tick_history(self, req: HistoryRequest, output: Callable = print) -> list[TickData]:
"""
Query history tick data.
"""
output(_("查询Tick数据失败:没有正确配置数据服务"))
return []
datafeed: BaseDatafeed | None = None
def get_datafeed() -> BaseDatafeed:
""""""
# Return datafeed object if already inited
global datafeed
if datafeed:
return datafeed
# Read datafeed related global setting
datafeed_name: str = SETTINGS["datafeed.name"]
if not datafeed_name:
datafeed = BaseDatafeed()
print(_("没有配置要使用的数据服务,请修改全局配置中的datafeed相关内容"))
else:
module_name: str = f"vnpy_{datafeed_name}"
# Try to import datafeed module
try:
module: ModuleType = import_module(module_name)
# Create datafeed object from module
datafeed = module.Datafeed()
# Use base class if failed
except ModuleNotFoundError:
datafeed = BaseDatafeed()
print(_("无法加载数据服务模块,请运行 pip install {} 尝试安装").format(module_name))
return datafeed