Files
myquant/djapi/api/stock/getStockParam.py
T
simonandClaude Opus 4.7 271a9343a5 Initial commit: cc-cursor 全链路量化研究平台
7 Sprints 全部完成:
  Sprint 0: 基础设施 (DataManager + MariaDB)
  Sprint 1: 因子引擎 (34因子/12分类)
  Sprint 2: VectorBT 回测 (5策略+截面)
  Sprint 3: Optuna 优化 (+Walk-Forward)
  Sprint 4: ML 模型 (LightGBM+CatBoost)
  Sprint 5: Qwen 情绪因子 (三源新闻+日期对齐)
  Sprint 6: Agent 系统 (4Agent+日报.md/.html)

生产加固 (15项): Tushare双源fallback, SSH自动恢复, pool_pre_ping,
  save_daily先删后插, load_dotenv绝对路径, 日报5d/20d修复,
  RiskAgent改上证指数, 昨日对比+数据截止, mac_report utf8mb4,
  CLAUDE-*.md 9条已知Bug, demo全参数化, djapi数据源归一化,
  indexDatas API修正

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-07 15:59:05 +08:00

70 lines
2.7 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.
import pandas as pd
from .data_source import get_tushare_pro
# 导入当站目录的config文件
try:
# 尝试相对导入(作为包的一部分)
from .config import TS_TOKEN, START_DATE, END_DATE
from .stock_utils import dataCorrect
except (ImportError, SystemError):
# 失败则使用绝对导入(直接运行脚本)
from config import TS_TOKEN, START_DATE, END_DATE
from stock_utils import dataCorrect
def getStockParam(TS_CODE,START_DATE=START_DATE,END_DATE=END_DATE):
pro = get_tushare_pro()
"""
从tushare daily_basic接口获取单只股票的所有基础数据,并进行数据修正。
Parameters:
TS_CODE (str): 股票代码,格式为 '股票代码.SZ' 或 '股票代码.SH',例如 '000001.SZ'
Returns:
pd.DataFrame: 包含股票基础数据的DataFrame,字段说明如下:
ts_code: 股票代码
trade_date: 交易日期
close: 收盘价
turnover_rate: 换手率(%
turnover_rate_f: 换手率(自由流通股)
volume_ratio: 量比
pe: 市盈率(总市值/净利润,亏损的PE为空)
pe_ttm: 市盈率(TTM,亏损的PE为空)
pb: 市净率(总市值/净资产)
ps: 市销率(总市值/营业收入)
ps_ttm: 市销率(TTM
dv_ratio: 股息率(%
dv_ttm: 股息率(TTM
total_share: 总股本(万股)
float_share: 流通股本(万股)
free_share: 自由流通股本(万股)
total_mv: 总市值(万元)
circ_mv: 流通市值(万元)
Raises:
Exception: 如果从Tushare接口获取数据时发生错误。
"""
try:
# 获取股票基础数据
df = pro.daily_basic(ts_code=TS_CODE, start_date=START_DATE, end_date=END_DATE)
# 需要修正的列
cols = ['close', 'turnover_rate', 'turnover_rate_f', 'volume_ratio', 'pe', 'pe_ttm',
'pb', 'ps', 'ps_ttm', 'dv_ratio', 'dv_ttm', 'total_share', 'float_share',
'free_share', 'total_mv', 'circ_mv']
# 调用dataCorrect函数进行数据修正
df = dataCorrect(df, cols)
return df
except Exception as e:
# 捕获并处理异常
print(f"错误: 获取股票 {TS_CODE} 的基础数据时发生错误: {e}")
return pd.DataFrame()
if __name__ == "__main__":
# 简单测试
import datetime
yesterday = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime("%Y%m%d")
test_df = getStockParam("601398.SH", START_DATE=yesterday, END_DATE=yesterday)
print(test_df)