Files
ProStock/src/data/api_wrappers/__init__.py

185 lines
5.6 KiB
Python
Raw Normal View History

"""Tushare API wrapper modules.
This package contains simplified interfaces for fetching data from Tushare API.
All wrapper files follow the naming convention: api_{data_type}.py
Available APIs:
- api_daily: Daily market data (日线行情)
- api_daily_basic: Daily basic indicators (每日指标换手率PEPB市值等)
- api_pro_bar: Pro Bar universal market data (通用行情后复权)
- api_stock_basic: Stock basic information (股票基本信息)
- api_trade_cal: Trading calendar (交易日历)
- api_namechange: Stock name change history (股票曾用名)
- api_bak_basic: Stock historical list (股票历史列表)
- api_stock_st: ST stock list (ST股票列表)
Example:
>>> from src.data.api_wrappers import get_daily, get_stock_basic, get_trade_cal, get_bak_basic
>>> from src.data.api_wrappers import get_pro_bar, sync_pro_bar, get_daily_basic, sync_daily_basic
>>> from src.data.api_wrappers import get_stock_st, sync_stock_st
>>> data = get_daily('000001.SZ', start_date='20240101', end_date='20240131')
>>> pro_data = get_pro_bar('000001.SZ', start_date='20240101', end_date='20240131')
>>> daily_basic = get_daily_basic(trade_date='20240101')
>>> stocks = get_stock_basic()
>>> calendar = get_trade_cal('20240101', '20240131')
>>> bak_basic = get_bak_basic(trade_date='20240101')
>>> stock_st = get_stock_st(trade_date='20240101')
"""
from src.data.api_wrappers.api_daily import (
get_daily,
sync_daily,
preview_daily_sync,
DailySync,
)
from src.data.api_wrappers.api_daily_basic import (
get_daily_basic,
sync_daily_basic,
preview_daily_basic_sync,
DailyBasicSync,
)
from src.data.api_wrappers.api_pro_bar import (
get_pro_bar,
sync_pro_bar,
preview_pro_bar_sync,
ProBarSync,
)
from src.data.api_wrappers.financial_data.api_income import (
get_income,
sync_income,
preview_income_sync,
IncomeQuarterSync,
)
from src.data.api_wrappers.api_bak_basic import get_bak_basic, sync_bak_basic
from src.data.api_wrappers.api_namechange import get_namechange, sync_namechange
from src.data.api_wrappers.api_stock_basic import get_stock_basic, sync_all_stocks
from src.data.api_wrappers.api_stock_st import (
get_stock_st,
sync_stock_st,
StockSTSync,
)
from src.data.api_wrappers.api_trade_cal import (
get_trade_cal,
get_trading_days,
get_first_trading_day,
get_last_trading_day,
sync_trade_cal_cache,
)
__all__ = [
# Daily market data
"get_daily",
"sync_daily",
"preview_daily_sync",
"DailySync",
# Daily basic indicators
"get_daily_basic",
"sync_daily_basic",
"preview_daily_basic_sync",
"DailyBasicSync",
# Pro Bar (universal market data)
"get_pro_bar",
"sync_pro_bar",
"preview_pro_bar_sync",
"ProBarSync",
# Income statement
"get_income",
"sync_income",
"preview_income_sync",
"IncomeQuarterSync",
# Historical stock list
"get_bak_basic",
"sync_bak_basic",
"BakBasicSync",
# Namechange
"get_namechange",
"sync_namechange",
# Stock basic information
"get_stock_basic",
"sync_all_stocks",
# Trade calendar
"get_trade_cal",
"get_trading_days",
"get_first_trading_day",
"get_last_trading_day",
"sync_trade_cal_cache",
# ST stock list
"get_stock_st",
"sync_stock_st",
"StockSTSync",
]
# =============================================================================
# 自动注册同步任务到 SyncRegistry
# 这样 sync.py 不需要手动罗列各个接口
# =============================================================================
try:
from src.data.sync_registry import sync_registry
# 1. Trade Calendar - 最高优先级,其他任务可能依赖
sync_registry.register_func(
name="trade_cal",
sync_func=sync_trade_cal_cache,
display_name="交易日历",
description="交易日期缓存",
order=1,
)
# 2. Stock Basic - 基础数据
sync_registry.register_func(
name="stock_basic",
sync_func=sync_all_stocks,
display_name="股票基本信息",
description="所有上市/退市股票的基础信息",
order=2,
)
# 3. Pro Bar - 通用行情(推荐用于替代日线)
from src.data.api_wrappers.api_pro_bar import ProBarSync
sync_registry.register_class(
name="pro_bar",
sync_class=ProBarSync,
display_name="Pro Bar 数据",
description="包含复权因子、换手率、量比的数据",
order=10,
)
# 4. Daily Basic - 每日指标
from src.data.api_wrappers.api_daily_basic import DailyBasicSync
sync_registry.register_class(
name="daily_basic",
sync_class=DailyBasicSync,
display_name="每日指标",
description="市盈率、市净率、换手率、市值等指标",
order=20,
)
# 5. Bak Basic - 历史股票列表
from src.data.api_wrappers.api_bak_basic import BakBasicSync
sync_registry.register_class(
name="bak_basic",
sync_class=BakBasicSync,
display_name="历史股票列表",
description="历史股票列表(包含退市股票)",
order=30,
)
# 6. ST Stock - ST股票列表
from src.data.api_wrappers.api_stock_st import StockSTSync
sync_registry.register_class(
name="stock_st",
sync_class=StockSTSync,
display_name="ST股票列表",
description="ST股票历史记录",
order=40,
)
except ImportError:
# sync_registry 可能不存在(首次导入),忽略
pass