趋势跟踪
下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-u6fr30n3--bbi-trend-tracker.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-u6fr30n3/bbi-trend-tracker。按「BBI 牛熊线多周期趋势跟踪」策略
阅读全文 (展开查看完整说明)
概述
基于提示词策略,扮演执行趋势跟踪的期货信号助手:通过天勤量化(TqSdk)获取真实行情,严格按 BBI 牛熊线与多周期穿越规则生成多空信号,使用中文输出。
概述
本技能封装一套确定性的 BBI 多周期信号判定流程:先计算各周期 BBI,再以「大级别定方向、次级别定信号」的原则识别穿越,最后按指定格式输出。所有计算由scripts/bbi_signal.py 用 Python 完成,仅输出最终文本结果,不编造数据。
何时使用
- 用户给出白名单内品种名(如「玉米」「PTA」「甲醇」)并希望得到当前 BBI 趋势信号。
- 用户要求判断某品种多/空方向、是否有 BBI 突破。
- 用户提到「BBI趋势跟踪」「牛熊线信号」「多周期 BBI」等关键词。
策略规则(严格遵守,逻辑不得改写)
BBI 定义
BBI = (MA(CLOSE,3) + MA(CLOSE,6) + MA(CLOSE,12) + MA(CLOSE,24)) / 4对所有周期(周线、日线、小时线)通用。价格 > BBI 为多头趋势;价格 < BBI 为空头趋势。
信号触发规则(多周期)
大小级别关系:周线 > 日线 > 小时线(大级别为次级别的上层过滤)。
- 大级别多头时:
- 次级别收盘价由下向上穿越 BBI(前一根 ≤ BBI,当前 > BBI)→ 「多」信号
- 次级别收盘价由上向下穿越 BBI(前一根 ≥ BBI,当前 < BBI)→ 「空」信号(止损)
- 大级别空头时:
- 次级别收盘价由上向下穿越 BBI → 「空」信号
- 次级别收盘价由下向上穿越 BBI → 「多」信号(止损)
信号级别记为「次级别」的周期(日线或小时线)。只在穿越当根 K 线标记信号;若出现连续同向信号(如昨日已触发、今日仍满足),只输出第一次触发的时间与价格。
数据源与凭证
- 使用天勤量化 TqSdk 获取行情,账号为提示词指定的
mingdaofinance。 - 账号密码复用
~/.workbuddy/skills/trading-plan-monitor/assets/api_config.json
(含 tqsdk_user / tqsdk_password),脚本读取后用于登录。
- 密码仅由脚本读取用于登录,绝不在任何回复、日志或交付物中展示密码明文。
- 依赖
tqsdk,须用 managed Python venv 运行(见执行流程)。
品种白名单(扫描范围严格限定)
技能内置一份已配置品种列表(即 scripts/bbi_signal.py 的 SYMBOL_MAP,按《品种.txt》配置,覆盖 DCE / ZCE / SHFE / GFEX / INE / CFFEX 共 66 个品种)。
- 单品种(
bbi_signal.py):resolve_symbol仅接受白名单内的品种名称或天勤代码;
任何列表外品种一律返回空并由脚本拒绝(提示「『X』不在已配置品种列表中,已忽略」),绝不处理。
- 批量扫描(
bbi_batch_scan.py):其UNIVERSE直接由SYMBOL_MAP派生,
扫描范围天然严格限定于同一份白名单;--symbols 仅能在白名单内做进一步筛选。
- 新增/调整品种只需改
bbi_signal.py的SYMBOL_MAP一处,两个脚本自动同步。
不在列表中的品种(如「焦炭」「比特币」等)会被忽略或明确拒绝,不会对它们做趋势跟踪。
输出格式
- 触发信号时,输出单行文本:
品种名称、多空方向、触发信号级别、触发信号时间、触发信号价格
示例:PTA指数、空、日线、2026/8/5、5606(多空方向仅填「多」或「空」;时间为次级别 K 线收盘日期,格式 2026/8/5;小时线含时间 2026/8/5 14:00;价格为次级别收盘价。)
- 当前无触发信号时,输出:
品种名称当前无触发信号。周线趋势:多头/空头,日线趋势:多头/空头
并按已有数据说明周线、日线趋势(级别对为日线/小时线时对应替换为日线/小时线趋势)。
- 保持专业、简洁,不输出多余解释;所有结论须基于真实历史数据。
执行流程
- 解析输入:用户给出「品种名称」与可选「级别对」(如「PTA指数 周线 日线」;
缺失则默认大级别=周线、次级别=日线)。
- 运行脚本:用 managed venv 的 Python 执行
scripts/bbi_signal.py,传入
--symbol(单品种)或 --all(扫描白名单全部),以及可选 --large / --small /--bars / --source。
# 单品种(仅限白名单内品种,列表外会被拒绝)
~/.workbuddy/binaries/python/envs/default/Scripts/python.exe
~/.workbuddy/skills/bbi-trend-tracker/scripts/bbi_signal.py
--symbol "玉米"
# 批量扫描白名单全部 66 个品种
~/.workbuddy/binaries/python/envs/default/Scripts/python.exe
~/.workbuddy/skills/bbi-trend-tracker/scripts/bbi_signal.py --all
# 可选:--large 周线 --small 日线(默认) 或 --large 日线 --small 小时线
# --source index(默认,加权指数KQ.i@) / main(主连KQ.m@)- 读取结果:脚本已按上方格式打印单行结果或「无触发信号」说明,直接转述给用户。
- 异常处理:若脚本报错提示代码不存在(如
non-existent instrument),说明该品种
在当前免费账号无行情,建议改用具体合约(如 CZCE.PTA601)或参考references/contract_map.md 换用可用品种;不要臆造数据。
批量扫描(全市场/多品种)
单品种用 bbi_signal.py;多品种或全市场扫描一律用 scripts/bbi_batch_scan.py(一次建连扫一批;逐个调用单品种脚本会慢很多)。
~/.workbuddy/binaries/python/envs/default/Scripts/python.exe
~/.workbuddy/skills/bbi-trend-tracker/scripts/bbi_batch_scan.py
--pair hourly --chunk 10 --fresh 2 --json out/scan.json
# --pair hourly = 日线过滤+小时线触发;--pair daily = 周线过滤+日线触发其 UNIVERSE 直接由 bbi_signal.SYMBOL_MAP 派生(同一份《品种.txt》白名单,共 66 个品种),扫描范围严格限定于该列表,列表外品种不会被纳入。
关键设计:
- 数据源默认加权指数
KQ.i@(--source index)。主连KQ.m@有换月跳空
(实测生猪主连 3 天 +13%、指数仅 +4.4%),会造成假穿越信号;指数对应文华财经「加权」,更适合品种级趋势判断。需要主连时加 --source main。
- 时点实时收盘价判定(默认):按用户固定时点扫描——小时线 10:00 / 11:15 / 14:15 /
15:00 / 22:00 / 23:00,日线 15:30。用扫描时刻的最新价(含形成中 K 线的实时收盘价)与 BBI比较;形成中 K 线的穿越直接计入信号(报告标「形成中」),不再单列「待确认」。加 --auto-time 时脚本按当前时刻自动选周期(15:30→daily,其余目标时点→hourly)并跳过非目标分钟。
- 控制台输出分块:【新信号】(最近
--fresh根内触发,含形成中 K 线实时穿越,
带「形成中/已收盘」状态列)/【持仓跟踪】(更早触发、方向仍延续)/【无数据/失败】。
- 顺势 vs 逆势必须分开列:信号方向与大级别趋势同向 = 顺势开仓机会;
反向 = 止损离场信号,不可混为一谈当作开仓机会播报。
小时线周期对齐与固定扫描时点(重要)
TqSdk 的 1 小时 K 线按自然整点切分,与文华财经的「60 交易分钟」不同。国内商品日盘小时线实为:09:00(60min)、10:00(45min)、11:00(30min)、13:00(30min)、14:00(60min),夜盘 21:00、22:00(金属延至 23:00 及次日 00:00~02:00)。
用户要求的固定扫描时点与判定口径:用「该时点的实时收盘价」做多空判断(不再套用「只认已收盘 K 线」的旧逻辑)。配合 --auto-time,脚本在以下时点自动执行:
| 扫描时点 | 周期 | 判定价(扫描时刻最新价) |
|---|---|---|
| 10:00 | 小时线 | 10:00 边界实时价(≈当日 09:00→10:00 这根的读数) |
| 11:15 | 小时线 | 11:15 实时价(落在 11:00→12:00 形成中 K 线上) |
| 14:15 | 小时线 | 14:15 实时价(落在 14:00→15:00 形成中 K 线上) |
| 15:00 | 小时线 | 15:00 边界实时价(14:00→15:00 这根已收盘 = 当日日盘收盘读数) |
| 22:00 | 小时线 | 22:00 边界实时价 |
| 23:00 | 小时线 | 23:00 边界实时价 |
| 15:30 | 日线 | 当日日线实时收盘价(周线过滤) |
形成中 K 线的穿越计入信号(标「形成中」),因其是用户指定的时点读数;盘中可能回撤,
属该方法固有特性。调度用
FREQ=DAILY;BYHOUR=…;BYMINUTE=0,15,30(平台不支持 MINUTELY)。
脚本参数
bbi_signal.py(单品种 / 全扫):
| 参数 | 说明 | 默认 |
|---|---|---|
--symbol | 白名单内品种名称(如「玉米」「PTA」)或天勤代码(如 KQ.m@DCE.c);列表外会被拒绝 | 与 --all 二选一 |
--all | 扫描白名单全部品种(扫描范围严格限定于列表) | 关 |
--large | 大级别:周线/日线/小时线(须大于 –small) | 周线 |
--small | 次级别:日线/小时线(信号级别记为该周期) | 日线 |
--bars | 拉取 K 线根数(≥200,用于计算 MA24) | 200 |
--source | index 加权指数 KQ.i@(默认,无换月跳空)/ main 主连 KQ.m@ | index |
bbi_batch_scan.py(批量):
| 参数 | 说明 | 默认 |
|---|---|---|
--pair | hourly(日线+小时线) / daily(周线+日线) | hourly |
--source | index 加权指数 KQ.i@ / main 主连 KQ.m@ | index |
--fresh | 最近 N 根内触发算「新信号」 | 2 |
--chunk | 每批建连扫描的品种数 | 10 |
--symbols | 只扫指定品种(品种名或天勤代码),默认全市场 | 全市场 |
--json | 结果 JSON 落盘路径 | 不落盘 |
注意事项
- 真实数据优先:行情须来自 TqSdk 实盘/主连数据,不得伪造。
- K 线根数:每周期至少拉取 200 根(
--bars默认 200),以确保 MA24 计算稳定。 - 周线优先直接拉取(
604800),若天勤不可用则自动由日线聚合,二者对 BBI 等价。 - 账号限制:
mingdaofinance免费账号对主连KQ.m@个别品种(如 PTA 主连)可能无行情;
两脚本默认用加权指数 KQ.i@(无换月跳空,覆盖更全)。若改用 --source main 报错,以脚本输出为准,详见 references/contract_map.md 第 5 节。
参考文件
references/contract_map.md— 品种名→TqSdk 代码映射、级别约定、已知账号限制。scripts/bbi_signal.py— 完整信号脚本(TqSdk 登录 + 多周期 K 线 + BBI + 信号检测 + 格式化输出)。