ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Vibe-Trading 数据接入指南:Tushare 周线行情接口(weekly)的完整使用与工程实践

Vibe-Trading 数据接入指南:Tushare 周线行情接口(weekly)的完整使用与工程实践 Vibe-Trading 数据接入指南Tushare 周线行情接口weekly的完整使用与工程实践【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading本篇技术指南以 Vibe-Trading 仓库内置的 Tushare 技能文档agent/src/skills/tushare/references/股票数据/行情数据/周线行情.md为骨架系统讲解 A 股周线行情接口weekly的参数语义、返回字段、调用方式与积分/限量约束并结合仓库中真实的数据加载器源码与测试用例说明如何把周线行情安全、合规地接入量化回测与个人交易 Agent 的数据管线。读完本文你将掌握weekly接口的完整用法、按日循环拉取全量历史的工程技巧以及它与「日度更新的周线接口」「复权行情接口」之间的选型差异。一、接口总览weekly 是什么weekly是 Tushare Pro 提供的 A 股周线行情接口用于获取按自然周聚合的 OHLCV 数据。它由 Vibe-Trading 的 Tushare 技能文档登记在「股票数据 / 行情数据」分类下对应技能首页agent/src/skills/tushare/SKILL.md中的接口 ID 144。该接口有三个关键约束直接决定工程接入方式约束项内容更新频率本接口每周最后一个交易日更新一次单次限量单次最大返回 6000 行积分门槛至少需要 2000 积分方可调取由于单次最多 6000 行而全 A 股周线一旦按trade_date全市场提取就会超过该上限当前全市场股票数量远大于 6000官方推荐的实践是使用交易日期循环提取按周最后交易日逐个拉取、总量不受限制。二、输入参数详解weekly接口的输入参数全部为可选N但实际调用时必须满足「ts_code与trade_date两个参数任选其一」的约束名称类型必选描述ts_codestrNTS 代码ts_code、trade_date 两个参数任选一trade_datestrN交易日期每周最后一个交易日期YYYYMMDD 格式start_datestrN开始日期end_datestrN结束日期参数使用要点ts_code维度指定单只股票的代码如000001.SZ、600000.SH配合start_date/end_date拉取该股票在一段区间内的全部周 K 线trade_date维度指定某个周最后交易日如20181123一次取回当日全市场所有股票的周线截面日期格式必须使用YYYYMMDD无分隔符格式例如20180101这与仓库技能文档agent/src/skills/tushare/SKILL.md中「参数格式说明」一节的规定一致日期YYYYMMDD股票代码ts_code 格式如000001.SZ、600000.SH返回格式pandas DataFrame交易日概念周线数据中的trade_date是每周最后一个交易日不一定是自然周五节假日会提前这一点在设计按周滚动任务时务必注意。三、输出字段与语义weekly返回的 DataFrame 包含 9 个字段名称类型默认显示描述ts_codestrY股票代码trade_datestrY交易日期closefloatY周收盘价openfloatY周开盘价highfloatY周最高价lowfloatY周最低价pre_closefloatY上一周收盘价changefloatY周涨跌额pct_chgfloatY周涨跌未复权未 ×100如需 % 单位请 ×100volfloatY周成交量amountfloatY周成交额关于pct_chg有两个必须牢记的坑数值单位该字段未乘以 100即0.05表示 5%不是 5.0展示或计算收益时若要换算成百分比需要手动× 100未复权口径weekly返回的价格与涨跌幅均为未复权数据。如果跨越除权除息日直接基于 close 计算收益率会出现跳空失真。若需复权数据应改用通用行情接口见仓库文档 通用行情接口或直接使用本仓库文档登记的「周月线复权行情」接口stk_week_month_adj见 周月线复权行情(每日更新).md)。四、接口用法两种调用模式模式一按股票 日期区间提取import tushare as ts pro ts.pro_api() df pro.weekly( ts_code000001.SZ, start_date20180101, end_date20181101, fieldsts_code,trade_date,open,high,low,close,vol,amount )模式二按周最后交易日提取全市场截面df pro.weekly( trade_date20181123, fieldsts_code,trade_date,open,high,low,close,vol,amount )模式二是官方推荐用于拉取全市场历史周线的入口trade_date一次返回该周全部股票的 6000 行上限内数据循环遍历历史每个周最后交易日即可拼出全量历史且总量不限制。工程化的初始化方式仓库内置示例脚本 stock_data_example.py 展示了项目内的标准初始化方式——优先读取环境配置中的tushare_token再回退到tushare本地缓存的 tokenfrom src.config.accessor import get_env_config import tushare as ts token get_env_config().data.tushare_token or ts.get_token() pro ts.pro_api(token)技能文档 SKILL.md 则给出了更底层的环境变量方式pip install tushare -i https://pypi.tuna.tsinghua.edu.cn/simple export TUSHARE_TOKENyour_tokenimport os import tushare as ts token os.getenv(TUSHARE_TOKEN) or ts.get_token() pro ts.pro_api(token)五、数据样例解读以下为000001.SZ平安银行2018 年下半年至 10 月的周线数据样例节选ts_code trade_date close open high low vol 0 000001.SZ 20181026 11.18 10.81 11.46 10.71 9062500.14 1 000001.SZ 20181019 10.76 10.39 10.78 9.92 7235319.55 2 000001.SZ 20181012 10.30 10.70 10.79 9.70 7257596.97 3 000001.SZ 20180928 11.05 10.52 11.27 10.48 5458134.13 ... amount 0 1.002282e07 1 7.482596e06 2 7.483906e06 3 5.904901e06解读要点每行代表一个完整交易周open/high/low/close为该周聚合结果周开盘取周一开盘、周收盘取周五收盘、high/low 取周内极值vol与amount分别为该周累计成交量与成交额amount以科学计数法返回如1.002282e07下游计算换手率或金额占比时需转为 float 使用。六、与周边接口的选型对比原文档特别提示如果需要在每周之间每天都拿到最新周线请使用「日度更新的周线行情接口」。该接口在本仓库中对应 周月线行情(每日更新).md)stk_weekly_monthly它与weekly的核心差异如下维度weekly周线行情stk_weekly_monthly周月线行情每日更新更新频率每周最后一个交易日更新一次每日更新频率参数无固定周线必须传freqweek或freqmonth输出差异无 freq/end_date 字段额外返回freq与end_date计算截至日期适用场景周期性离线研究、月级调仓回测需要每日感知最新周 K 的实盘策略stk_weekly_monthly用法示例摘自 周月线行情(每日更新).md)pro ts.pro_api() # 获取 20251024 这一周的周线数据 df pro.stk_weekly_monthly(trade_date20251024, freqweek) # 获取 202510 月的月线数据 df pro.stk_weekly_monthly(trade_date20251031, freqmonth)若需要复权口径的周线可选择 周月线复权行情(每日更新).md)stk_week_month_adj其输出同时包含*_qfq前复权与*_hfq后复权两组 OHLC 字段pct_chg基于除权后的昨收计算适合直接用于跨除权日的收益计算。七、接入 Vibe-Trading 回测管线的工程要点weekly虽未直接暴露在回测数据加载器中但理解加载器源码有助于把周线数据正确接入策略1. Token 鉴权与可用性判定在 agent/backtest/loaders/tushare.py 中Tushare 加载器通过get_env_config().data.tushare_token读取 token并判定占位符空串或your-tushare-token时视为不可用TUSHARE_TOKEN_PLACEHOLDERS {, your-tushare-token} def is_available(self) - bool: from src.config.accessor import get_env_config return get_env_config().data.tushare_token.strip() not in TUSHARE_TOKEN_PLACEHOLDERS周线接口调用前应同样先校验 token 是否已配置否则会抛出鉴权异常。2. 按符号类型路由端点加载器的_fetch_daily_frame会按代码后缀路由到不同 Tushare 端点A 股股票走daily、ETF/LOF 走fund_daily、指数走index_daily、港股走hk_daily美股与加密货币则直接跳过见 agent/tests/test_tushare_loader.py 中TestFetchDailyFrameRouting的断言。weekly同理只覆盖 A 股股票与复权场景指数周线应使用 指数周线行情index_weekly对应的参考文档。3. 复权与收益口径weekly返回未复权价格。仓库加载器对股票/ETF 日线会通过adj_factor/fund_adj做前复权处理apply_qfq并有一个硬性策略取不到复权因子时宁可丢弃该标的也不回测未复权价格见_fetch_daily_frame中的相关注释与测试test_a_symbol_with_no_factors_is_dropped_not_returned_raw。用weekly计算周收益率时建议遵循同样的纪律跨除权日的数据必须结合复权因子或直接使用复权周线接口避免在除权周出现虚假的巨幅涨跌。4. 限频与重试Tushare 有每分钟/每天频次配额限制。加载器在 agent/backtest/loaders/tushare.py 中实现了_call_with_backoff通过错误信息关键词“每分钟”“每天”“抽取”“频率”“rate limit”“too many requests”识别配额拒绝并按(5.0, 20.0, 40.0)秒的退避序列重试总等待超过 1 分钟以跨越配额窗口而对非配额类错误如ts_code does not exist则立即抛出、不做无谓重试对应测试见 agent/tests/test_tushare_loader.py 的TestRateLimitBackoff。按周循环提取全量历史时建议为每次调用预留 510 秒间隔或复用类似的退避机制。5. 日期区间与字段规整加载器在拉取数据后统一做sort_values(trade_date)、日期转 datetime、vol → volume重命名与数值强制转换。接入周线数据时同样建议按trade_date升序排序、将vol统一为volume列名并与日线/月线框架保持一致方便下游策略复用同一套特征计算代码。八、实战拉取单只股票一年内的周线综合以上内容一个可直接运行的最小示例import os import tushare as ts token os.getenv(TUSHARE_TOKEN) or ts.get_token() pro ts.pro_api(token) df pro.weekly( ts_code600519.SH, start_date20230101, end_date20231231, fieldsts_code,trade_date,open,high,low,close,pre_close,change,pct_chg,vol,amount, ) # 规整升序、类型转换、百分比换算 df df.sort_values(trade_date).reset_index(dropTrue) df[pct_chg_pct] df[pct_chg] * 100 # 未复权涨跌幅 → % 单位 print(df.head())若需全市场历史周线则按周最后交易日循环# 伪代码weekly_last_dates 为历史各周最后交易日列表可用交易日历接口获取 frames [] for d in weekly_last_dates: part pro.weekly(trade_dated, fieldsts_code,trade_date,close,pct_chg,vol,amount) frames.append(part) time.sleep(5) # 控制请求频率 all_weekly pd.concat(frames, ignore_indexTrue)获取周最后交易日可借助仓库登记的 交易日历trade_cal接口按周粒度聚合出每周最后一个is_open1的日期。九、小结weekly是 Tushare 的 A 股周线行情接口每周最后交易日更新一次单次限量 6000 行、需 2000 积分可用交易日期循环提取全量历史支持按ts_code start_date/end_date或按trade_date两种模式调用返回未复权周 OHLCV 及涨跌字段pct_chg未乘以 100若需要每日更新的周线改用stk_weekly_monthly需要复权周线改用stk_week_month_adj或通用行情接口工程接入时可参照仓库 Tushare 加载器的 token 校验、限频退避、字段规整与复权纪律把周线数据无缝并入 Vibe-Trading 的策略研究与回测管线。更多 Tushare 技能文档与示例请查阅 SKILL.md 及 股票数据示例脚本。【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表