Files
ProStock/src/data/api_wrappers/__init__.py
liaozhaorun 6730acbae1 feat(data): 添加每日筹码及胜率数据接口 (cyq_perf)
- 新增 api_cyq_perf 模块,支持筹码分布数据获取和同步
- 在 sync_registry 中注册 cyq_perf 同步器
2026-03-26 00:15:30 +08:00

229 lines
7.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""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 (每日指标换手率、PE、PB、市值等)
- 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股票列表)
- api_stk_limit: Stock limit price (每日涨跌停价格)
- api_cyq_perf: CYQ performance (每日筹码及胜率)
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
>>> from src.data.api_wrappers import get_stk_limit, sync_stk_limit
>>> from src.data.api_wrappers import get_cyq_perf, sync_cyq_perf
>>> 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')
>>> stk_limit = get_stk_limit(trade_date='20240101')
>>> cyq_perf = get_cyq_perf('000001.SZ', start_date='20240101', end_date='20240131')
"""
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_stk_limit import (
get_stk_limit,
sync_stk_limit,
preview_stk_limit_sync,
StkLimitSync,
)
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,
)
from src.data.api_wrappers.api_cyq_perf import (
get_cyq_perf,
sync_cyq_perf,
preview_cyq_perf_sync,
CyqPerfSync,
)
__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",
# Stock limit price
"get_stk_limit",
"sync_stk_limit",
"preview_stk_limit_sync",
"StkLimitSync",
# CYQ Performance (筹码分布)
"get_cyq_perf",
"sync_cyq_perf",
"preview_cyq_perf_sync",
"CyqPerfSync",
]
# =============================================================================
# 自动注册同步任务到 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,
)
# 7. Stock Limit Price - 每日涨跌停价格
from src.data.api_wrappers.api_stk_limit import StkLimitSync
sync_registry.register_class(
name="stk_limit",
sync_class=StkLimitSync,
display_name="每日涨跌停价格",
description="股票每日涨跌停价格(涨停价、跌停价)",
order=50,
)
# 8. CYQ Performance - 每日筹码及胜率
from src.data.api_wrappers.api_cyq_perf import CyqPerfSync
sync_registry.register_class(
name="cyq_perf",
sync_class=CyqPerfSync,
display_name="每日筹码及胜率",
description="A股每日筹码平均成本和胜率情况2018年开始",
order=60,
)
except ImportError:
# sync_registry 可能不存在(首次导入),忽略
pass