Releases: xinyuzjj/bazz.agent
Release list
BAZZ.AGENT v1.5.67
🆕 v1.5.67 更新要点(四处「两侧契约漂移」修复 + 一致性回归护栏)
你问「还有哪里有问题」—— 这一轮不是找逻辑 bug,而是找「两侧对不上」。
这四个缺陷的共同点是:跑一遍看不出来、报错也不红,只有真・切函数的 UI 是会错的。
所以除了修,还补了一套专门守这类漂移的回归测试。
① 钱包的 4 通道面板:Agent 钱包那一格一直是坏的
- 管理页「Agent 4 通道」面板 raw fetch 了
/api/wallet/status,但后端只有一个
/api/wallet(返回{cli, status, commands, daily_caps, …}),没有这条路由 →
真实 app 里就是 404 →Promise.allSettled把它当失败 → 那一格恒显示「未连接」,
哪怕你的 baw 其实已经扫码登录过了。 - 为什么几个版本都没发现:
frontend/src/preview/mock.ts里恰好 mock 了
/api/wallet/status—— 隔离预览里一切正常。mock 把真实缺陷盖住了。 - 修:新增薄路由
GET /api/wallet/status,只回get_wallet_state()["status"]
(扁平的{connected, address, detail})。与/wallet/cex/status、/wallet/web3/status
对称;且那条链路是 30s 轮询,不必每次带 COMMAND_TREE / daily_caps 那一坨。
② i18n 键漂移四处 —— 中文是默认语言,所以几处中文界面直接显示裸 key
locales.ts 第 2 行写着契约:所有 key 必须同时存在于 zh 与 en,
而 i18n.tsx 的实现是 dict[key] ?? key —— 没有 zh 兜底,缺键 = 界面把 key 当文案印出来。
实测漂移如下(均已修复,zh 与 en 键集合现已完全相等,各 1335 个):
| # | 键 | 缺在哪 | 用户实际看到什么 |
|---|---|---|---|
| ① | 22 个 track.* |
只有 zh,en 全缺 | 英文界面下「订单跟踪」面板整块显示 track.title / track.stFilled … |
| ② | common.saved |
只有 en | 中文设置保存成功的 toast 显示「common.saved」 |
| ③ | common.cancel |
两本都没有 | 订阅授权弹窗的取消按钮,中英文都显示「common.cancel」 |
| ④ | markets.trackWin |
只有 en | 中文行情页战绩条的胜率标签显示「markets.trackWin」 |
- ① 是 v1.5.63 把订单跟踪面板挂到交易所视图时只补了中文留下的。
- ④ 特别说明:别把它「改成」那个长得对的
markets.track.winRate——
后者是更早一版的遗留键,前端已无任何调用方;这次修的是把使用中的那个键补进 zh。
③ 新增一致性回归测试 tests/test_v168_i18n_parity.py
这类问题靠肉眼永远查不出来,必须机器守。四组检测:
- 键集合:zh 与 en 必须完全相等,且各自无重复键(重复键会静默覆盖)。
- 使用侧覆盖:前端全部 1164 个
t("...")用到的键,必须两本字典都有。 - API 端点:
api.ts里 98 个端点 + 非 api.ts 的裸fetch("/api/…"),都必须能在后端找到路由。 - mock 反查:预览 mock 不得伪造后端不存在的端点(这正是 ① 能藏几个版本的机制);
已登记 2 条历史占位(/api/admin、/api/stats,前端无调用方),新增任何一条都会红。
其 docstring 本身就在解释 /api/wallet/status 为什么存在,
子串匹配会让「路由存在」这条断言永远通过,正好把这个 bug 放过去。
已做变异验证(不是一个改不红的测试):把四个修复逐个「退回」到修复前状态,
四组检测各自都能抓到并报错;恢复后全绿。
验证
- 新增
tests/test_v168_i18n_parity.pyALL PASS(4 组 20 断言 + 4 组变异验证)。 - 全量 24 套件(原 23 + 本轮新增 1)全通过;
frontend tsc --noEmit退出码 0。 - 未触碰止损 10% / 10x 杠杆;未改任何引擎判据。
BAZZ.AGENT v1.5.66
🆕 v1.5.66 更新要点(妖币「控盘度 / 燃料」不再每只币都一样 —— 三个叠加缺陷)
你问的那句「控盘度和燃料为什么每一个都是显示的一样」,查下来是三个真缺陷叠在一起,
不是一个。排查过程与证据都在下面。
① 数据饥饿:过半的币压根没取到因子(这是主因)
- 雷达 v2 的「确认层」(OI / 大户比 / taker / 爆仓)只覆盖前 24 个候选
(get_radar_v2里cands = ...[:24],为控 REST 调用量),而它最终输出 40+ 行 ——
实测 55 只里 32 只没有任何确认层因子。 - 更糟的是雷达用
cf.get(k, 0.0)兜底,把这些行写成了字面 0.0 ——
消费方分不清「真的没变化」和「压根没测」。燃料轴在这些行上只能看到资金费率,
于是永远输出「中性」:这就是「每只币都一样」的机制。 - 修:妖币引擎分析的是单只币,按需补一次确认层(3~4 个 REST 调用,180 秒缓存,
单次请求代价可忽略)。顺带把被兜底成 0.0 的 OI 一律按「没测」处理
(顶层oi_chg24本来就是诚实的None)。 - 补到
oi_last之后还要重算控盘指纹 —— 否则「换手畸高」(合约成交 ÷ 持仓 > 10x)
的分母是 0,永远不成立,那一半行只能停在「未见控盘指纹」。
② 文案相同:同一个档位所有币共用一句死文案
- 37 只「中性」的币,
reading是同一个字符串;而卡片只显示档位 + 这句话,
看不到到底命中了什么 —— 视觉上当然「每只币都一样」。 - 修:两轴的文案里带上实测读数与命中项。现在同为「中性」的两只币,一只写
「费率 +0.005% · taker 0.40 · RVOL15 0.2x · OI15 −0.9% · 大户比 2.71」,
另一只写「费率 −0.012% · taker 1.12 · RVOL15 1.9x · OI15 +0.5% · 大户比 1.47」。 - 「未见控盘指纹」也不再说空话,而是列出查过哪五项:
「未命中 无现货 / 合约独大 / 换手畸高 / 空头付钱 / 拉升无爆仓」;
命中时给出该指纹的人话解释(如「合约独大(现货没深度,少量资金就能推价)」)。 - 记 0 分的条目(如大户拥挤)单列成「关注」—— 它不构成燃料、不改档位,
但「检测到了却不显示」正是「看起来什么都没发生」的来源之一。
③ 死规则:taker >= 1.85 从来没触发过
- 实测 40 个最高成交额合约的
takerlongshortRatio:min 0.439 / 中位 1.110 /
p90 1.426 / max 1.790,≥ 1.85命中 0 个。而这条信号同时挂在四个地方
(_stage_of的点火判据、_radar_score的 +3、雷达依据文案、燃料的「买盘主导」)——
也就是说它自上线起一次都没生效过。这不是「市场没出现」,是阈值压根够不着。 - 修:改成 1.30(主动买 ≈ 主动卖的 1.3 倍,实测命中 10/40 = top 25%),
四处一起改,并落成命名常量_TAKER_BUY_DOMINANT(monster 侧镜像 + 测试钉住不许漂移)。 ⚠️ 这是一处会产生行为变化的修正(点火判定更易命中、评分 +3 可能开始加分),
不是纯显示修复。之所以必须一起改:同一个数在四个地方必须同义,
只改一处等于制造口径漂移。
另外:「没测」和「中性」现在分得开
- 新增档位 「未能判定」:确认层没补到时不报「中性」,而是明说
「这是『没测』,不是『没有燃料』」。 - 只有现货、没有合约市场的币(如 SPCXBUSDT)单独措辞:OI / 持仓额 / 大户比 / 费率
本就不存在,不是取数失败 —— 但量能这类现货口径也有的读数照常给出,
该给「有油」就给「有油」。
验证
- 新增
tests/test_v167_monster_factors.py(4 组 60+ 断言):阈值镜像与「源码里 1.85 必须消失」、
补取的命中 / 缓存 / 降级三态、oi_usd重算、「没测 ≠ 中性」、同档位两只币文案必须不同、
现货口径与合约口径措辞必须分离。 - 既有
test_v166_monster_engine.py全过;全量 23 个套件通过;tsc --noEmit退出码 0。 - 真机实测:55 只里 32 只走补取;
买盘主导命中从 0/49 → 4/49;
控盘度分布 45% 明确控盘 / 44% 未见指纹 / 7% 重度 / 4% 持仓侧控盘。
BAZZ.AGENT v1.5.65
🆕 v1.5.65 更新要点(剧本进度带的游标挪进框里,不再压住表头)
这是一版纯视觉修补:上一版的妖币封面与剧本卡做验收时抓到一处叠字,修掉,其余一行没动。
那个叠字长什么样
- 剧本进度带上的三角游标原本画在高亮框外侧上方,用来指「当前格」。
- 问题出在「当前格」恰是第 1 格或第 2 格时:游标正好落在左上角那行表头
「妖币剧本 · 演到第几格」上面,把中间的「·」和后面的「演」糊成一团。 - 偏偏吸筹(第 1 格)就是引擎最常给出「可埋伏」的那一格 —— 露脸最多的图正好带着这个瑕疵。
改了什么
- 游标改为贴在高亮框内侧顶部、指向框内,与表头在纵向上彻底脱开。
- 只动妖币引擎的进度带绘制函数(
src/square_monster.py的_draw_stage_band)。
封面的「90d 高/低」「现价」标注、三轴卡、出场四段、正文文案都没动;
代币那套 SMC 引擎一行没碰。
验证
- 妖币引擎测试套件 90+ 断言全过;全量离线回归 23 个套件全过;前端类型检查退出码 0。
- 用真实雷达数据重渲染两张对照样张(一只吸筹·可埋伏、一只已拉升·窗口已过),
放大到 3 倍逐像素看过:游标与表头不再相交,进度带整体仍然一眼可读。
BAZZ.AGENT v1.5.64
🆕 v1.5.64 更新要点(广场分析拆成两套引擎:代币走 SMC,妖币走剧本三轴)
核心:你说「分析代币和分析妖币生成的广场内容要用不同的技巧」——这一版把它做成了两套引擎,
不是同一个工具的两组参数。代币继续用 SMC;妖币另起一套剧本三轴(位阶 / 控盘度 / 燃料)。
顺带把清单里挂着的两个决策仪表化了:不再是「等样本」,而是随时可问「还差几笔」。
为什么必须分开:SMC 的前提在妖币上不成立
- SMC(结构、BOS・CHoCH、OTE、OB、FVG)成立的前提是**「价格由众多参与者的共同行为堆出来」**——
结构位、订单块之所以有用,是因为那里真的有人挂单、真的有共识。代币满足这个前提。 - 妖币不满足:控盘盘的 K 线是画出来的。你看到的 OB 就是诱多区,你看到的「扫流动性」
就是庄家专门去点你止损的那一下。用 SMC 分析妖币,等于拿散户的地图去找庄家的门。 - 所以妖币看的是控盘意图,三轴:
① 位阶(庄家剧本演到第几格)· ② 控盘度(盘在谁手里)· ③ 燃料(往上推的油从哪来)。
剧本三轴:位阶一票否决,控盘度不等于坏消息
- 位阶是七格主剧本:吸筹 → 点火 → 已拉升 → 垂直拉升 → 派发顶部 → 崩跌 → 沉寂。
只有吸筹 / 点火且不晚才允许进场;做空埋伏与「异动」是旁支,直接不进。 - 「晚不晚」直接复用雷达自己的两条闸门(价格硬挡线 10% / OI 堆积线 5%),不另发明口径——
否则稿子里说的位阶会和你在 app 里看到的对不上。 - 控盘度不是坏消息:命中「无现货 / 合约独大 / 换手畸高」说明「剧本是真有人在演」,
这恰恰是妖币会涨的原因。真正的含义是离场必须果断——控盘盘没有自然买盘接你的货,
你以为的支撑是画出来的。 - 燃料全是「对手盘的痛」:空头付钱(负费率,最猛的燃料)、OI 蓄力、大户拥挤、爆仓结构。
其中「费率自极值回落」与radar_tracker._reversal_now完全同口径。
出场不改一个数:四段全部镜像 radar_tracker,并写明一个难听的事实
- 认输线 逆向 10% / 达标线 顺向 25% / 移动止盈 自极值回撤 12% / 提前落袋 反转因子命中——
四个数与radar_tracker的FAIL_HIT / GAIN_HIT / TRAIL_PCT / _reversal_now逐一对应,有测试钉住不许漂移。 - 且把一句实话写进稿子:在 10x 下,10% 止损就是强平线 ——
100U 本金 ×10x = 1000U 名义,逆向 10% 正好是 100U,打到止损等于本金归零,不存在「小亏一点」。
这条线不是「保护你」,是逼你认输;能调的只有仓位,不是这条线。这不是软件不够聪明,是杠杆的算术。 - 妖币用固定 10% 止损而不是结构位,原因和上面同源:控盘盘的「结构失效位」是画出来的,
挂结构止损等于把止损位送给庄家。
只做多,绝不做空;不给点位也是结论
- 安装版真实战绩:3 笔做空全部被轧空击穿 10% 强平线,最大有利仅 0.0% / 0.0% / 1.4%——
从一开始就没跌过。妖币的顶常是二次拉升前的换手,做空你以为在赌回调,其实是给庄家当接盘的人。
所以plan.direction写死 long,源码里不存在给空头出计划的路径。 - 位阶不在允许窗口时,稿子明说「本次不给点位」,
plan写null——绝不硬造方向。
副作用是正确行为:paper_orders那时不会建单,这不是漏单。
接线:两个端点 + 一个新技能 + agent 路由分流
- 后端:
/api/square/monster/compose(出稿)与/api/square/monster/analyze(只看结论不出图)。
注释里写明与/api/square/rich/compose是两套引擎,不是同一套的参数。 - 新技能
square-monster-post:4 套妖币专属风格(剧本拆解体 / 埋伏笔记体 / 别接盘体 / 说人话体),
与代币引擎的 4 套(冷静复盘体 / 交易员日记体 / 问答体 / 直给体)刻意不重名——
名字不同是为了让 agent 不能顺手互换。 - 产物
cover.png(90 日走势 + 剧本进度带 + 三轴卡) 与chart_playbook.png(1080×1080 竖版剧本卡,
手机可读:结论 + 进度带 + 这一格/下一格 + 控盘与燃料 + 出场四段);
产物结构与代币引擎同构,square-post发布链路没改一行,paper_tracker也能直接读plan。 - Agent 提示词改成先按标的分流:普通代币 →
square-rich-post(SMC);妖币 / meme / 百倍币 / 雷达里的异动币
→square-monster-post(剧本)。并写明两者绝不可互相替代;
判断不了就先跑 monster——它发现该币不在妖币雷达视野内会明确报错并提示改用 rich,不会硬编一篇。
挂着的两个决策:从「等样本」变成「随时可问还差几笔」
- 决策 2(设不设最低分门槛) 与 决策 3(挡不挡「登记时已下跌」) 此前写的是「等 OPT-04 后的新样本」——
但没有人会记得回来复查,挂着等是最糟糕的形态。现在做成state.radar_recheck_decisions()+ agent 工具
meme_watch(mode='audit'):每次调用重算证据,样本不够如实说还差几笔,够了直接给结论。 - 决策 2 的关键改进:先剔除 OPT-04 会挡掉的那批样本再看 score 还有没有判别力——
不剔除的话 score 只是 chg24 的影子(高分样本恰好都是「已涨」的 dump),属于重复计数。
函数会同时给出「全部样本」与「OPT-04 之后」两张分桶表,让这件事看得见。 - 它只给证据,不改任何规则——加闸门是产品决策,要你拍板。测试里钉了这条。
验证
- 新增
tests/test_v166_monster_engine.py(10 组、90+ 断言):引擎分离(monster 不得 import 任何 SMC 分析函数)、
常量镜像逐一相等、位阶一票否决、合议优先级(重度控盘 + 满油但位阶在派发 → 仍离场)、
只做多、不给点位、四风格不重名、产物同构、符号不在视野内报错、决策复核 waiting↔ready 双向、
接线(提示词 / 工具 schema / 技能发现 / 前端文案)。全量 22 个套件通过,tsc --noEmit干净。 - 真实数据端到端跑过(不是只有单测):拉真雷达 →
EIGENUSDT判定「吸筹·第 1/7 格 → 可埋伏」,
出稿 + 两张图(75KB / 98KB)落盘,plan= 入场 0.1908 / 止损 0.1717(= 入场 ×0.9)。 - 视觉验收发现并修掉三处:面积渐变把曲线下填色整片盖掉(改成先铺底再填)、
三轴卡文字超行截半句话(改成带省略号)、价格线压在高/低标签上读不出来(改成带底衬标签)。
BAZZ.AGENT v1.5.63
🆕 v1.5.63 更新要点(妖币雷达第二批落地:登记门槛分段 + 假启动提示 + 撤单与保护单)
核心:把登记清单 outputs/todo-v1.6.4.html 里能落地的项全部落地(10 条编号任务 → 9 条已落地,
第 10 条是「装上去」这个动作,得你来)。止损 10% 与 10x 杠杆一律不动——这一批改的全部是「怎么找妖币」和「怎么把单管住」。
登记门槛分段:硬挡线 3% → 10%,3~10% 只降分不挡
- 先把一条我们自己写错的话改掉:原注释说「连 3%~12% 这段也晚了」,数据不支持——
9 笔「登记时已涨」样本的chg24最小是 11.3%,其余 13.9%~21.9%,3%~11.3% 之间一笔样本都没有; - 所以有依据的只是「≥11.3% 该挡」,于是硬挡线定在 10.0(
_TRIG_LATE_CHG24),
3%~10%段降 6 分、不挡,交给 OI 判据二次筛;触发线_TRIG_UP_CHG24 = 3.0不动,两条线从此解耦; - 诚实说明:这次放宽是样本中性的(该段 0 笔样本),测试里留了「3%~10% 段样本数 = 0」的断言把这件事钉住;
- 还要说清一个事实:登记链路不看 score,所以「降分」的作用是排序 + 把这件事写进依据便于日后分桶回放,
真正的闸门只有价格硬挡线 + OI 堆积。
持仓质量提示「疑似假启动」(只提示,绝不自动平仓)
- 跟踪 ≥24h 且顺向历史极值 < 5% 的行打标,Tracks 面板出红色徽章;
- 真实口径(写清分母,别把数字读成另一个意思):活过 24h 的 10 笔 dump 里 7 笔被标,3 笔 moon 0 笔被标
(17 笔 dump 里有 7 笔在 24h 前就逆向破 10% 关单,走不到被标记那一步); - 为什么绝不自动离场:VTHO 就是反例——早期回撤 7.9% 之后冲到 +31.3%。徽章只是提醒,止损与杠杆一律不动;
- 顺手修掉一个真 bug:第一版对做空也读
max_gain_pct,而做空的顺向是「跌」——
等于拿反向指标判「假启动」,会把已经跌了 20% 的空单标成假启动。真实库实测:修前标 16 条 → 修后 5 LONG + 3 SHORT。
战绩按阶段分组:分开观察「点火」与「吸筹」
- 安装版真实库:点火 3 moon / 13 dump = 18.8%,吸筹 0 moon / 4 dump = 0%,做空埋伏 0 / 4;
- 胜率分母只用已关单(进行中既不算赢也不算输);
- 不删、不降权:4 笔样本可能纯属偶然,先分开摆在战绩面板上,攒到 10 笔再决定。
撤单 + 保护单:把交易闭环补上
- 撤单(此前整条链路只有「下」没有「撤」):签名
DELETE /api/v3/order,
订单台账同步置CANCELED,订单跟踪卡出现撤单按钮(只对「还在交易所挂着的委托单」显示);
交易所返回-2011(订单已是终态)按成功收敛——「别让它再挂着」这个意图本来就已经达成,报错只会诱导重试。
原来的DELETE /api/orders/track只是本地不再跟,两个动作的说明已经分开写清; - 保护单:下单即挂 OCO,止损 −10%(与你定的模拟口径完全一致,刻意不做成可调参数)。
只有signal.protect=True且人工确认过才发第二张单,确认框里会显示「会不会挂保护单」;
挂不上不算下单失败,只附一条protect_warning让你手动补; - 顺便抓到一个静默 bug:
executor.place_oco_order一直在传非法的legs数组
(Binance OCO 要的是扁平参数price/stopPrice/stopLimitPrice),而且它从来没有任何调用方,
所以这个 bug 挂了几个版本没人发现。已改成正确参数并委托给cex_wallet(统一密钥 + 交易规则取整 + 错误归因); - 台账口径写清楚:
radar_tracks= 雷达模拟仓、paper_orders= 广场发文纸单、tracked_orders= 真实委托,三者不混账。
v1.6.4 的四项(同批):纯合约币取价兜底 + 登记快照落库 + OI 判据 + 费率降权
- 候选池扩到合约全市场后,只上合约、不上现货的币(RAVE / LAB 这类)用现货永远取不到价 →
永久卡 pending、7 天后被静默 expired。改为三级兜底:现货 WS → 合约 WS → 合并快照(现货优先,
不让合约价差污染现货币); radar_tracks补 5 个登记时刻数值快照列(snap_chg24/oi24/amp24/funding/rvol15):
此前回放只能解析reasons_json文本反推,同一条规则两次算出不同答案。缺值写 NULL 不写 0(口径不能混);- 新增 OI 判据:
OI 24h为正的样本 9 笔 → 9 笔全 dump,3 笔 moon 从无正值 OI(零误杀)。
登记条件由「价格未启动」扩为「价格未启动 且 持仓未堆积」,阈值取 5.0 是故意的零外推
(依据生成处本身就是abs(oi_chg24) >= 5); - 「空头付钱」扣分 10 → 3:VTHOUSDT 费率 −0.776% 却是 +31.3% moon,判别力弱;风险提示语义保留。
测试:新增 tests/test_v165_radar_tune.py(含上面两处自我纠错的护栏),全量 21 个套件全绿,
frontend tsc --noEmit 退出码 0;真实库副本验证迁移与统计通过。
BAZZ.AGENT v1.5.62
🆕 v1.5.62 更新要点(妖币雷达重做选币:只登记「还没动」的币,池子扩到合约全市场)
核心:用户定位「止损 10% 与 10x 杠杆都不动,亏的根因是找妖币的方法错了」。
按安装版的真实关单数据回放,把雷达从「波动率探测器」改回「妖币探测器」——
只有尚未启动的币可以登记,并且候选池从现货扩到现货 ∪ 合约全市场。
选币规则:登记即入场,且只登记「尚未启动」的币
- 数据依据(安装版真实关单 23 笔 = 20 多 + 3 空,胜率 13.0% / −1386.5U):
3 笔 moon 的登记依据里全都没有「24h +X%」(即登记时涨幅 < 3%),
而 9 笔「登记时已涨 7.4%~24.8%」的全都是 dump; - 落地:当日涨幅 ≥ 3% 的行不再进登记组,改划「已拉升」展示组(不删除,仍然可见);
- 回放:20 笔做多 −1086.5U / 胜率 15.0% → 只留未启动 7 笔 +213.5U / 胜率 42.9%;
- 不设「候选观察期」(用户投票否决),过滤条件全部取自登记时刻的快照特征。
绝不做空 + 负费率不再硬阻断
- 3 笔做空 3/3 全亏(CAKE +10.0% / THETA +10.3% / SAGA +11.0% 被轧空),
而最大有利仅 0.0% / 0.0% / 1.4% —— 从一开始就没跌过; - 做空埋伏(SHORT_AMBUSH)移出登记组,只在「顶部风险」展示组保留可见;
- 负费率不改方向、只标注并扣分 —— 反例 VTHO 费率 −0.776% 却是 +31.3% 的大赢家:
合约里空头拥挤会把费率压负,而低负费率恰恰是挤空燃料;费率评分同时由abs()改为方向化。
候选池扩到合约全市场(纯合约妖币终于可见)
- 此前池子只取自现货快照,而 RAVE / LAB 都是只上合约、不上现货 —— 排序规则再准也看不见;
- 现在池子 = 现货 ∪ 合约,按
max(现货成交额, 合约成交额)排序取前 110; - 代币化股票/大宗必须挡在池外:合约全市场里混着近 200 个
TRADIFI_PERPETUAL
(NVDA / TSLA / XAU / XAG / BZ / QQQ / SPY / SKHYNIX…),实测会把 110 个池位中的 57 个
占成纯合约、且一大半是 TradFi。判据取合约接口的underlyingType == "COIN"
(权威字段,随上线自动更新);Alpha 币(LAB 就是)与 meme / 中文盘全部保留; - 纯合约币的 K 线走合约回退,否则会在「日线不足 25 根」与「15m 长度 < 30」两处被静默丢弃;
- 生产接口实测:池子 86 现货 + 24 加密纯合约,TradFi 零泄漏,LABUSDT 已进池。
控盘代理层(链下、零新增外部依赖)
- 公开接口拿不到持币集中度(
query-token-audit只有蜜罐/税率,token-info的holders
是持币人数、不是集中度)→ 改用四个可算指纹:
无现货/合约独大(现货成交占比 < 5%)、换手畸高(合约成交 ÷ 持仓 > 10 倍)、
空头付钱(费率 ≤ −0.15%)、拉升无爆仓(涨 ≥8% 但 5m 爆仓 < 5 万,并带数据可用性守卫); - 命中即扣分,雷达行出红色「控盘」标记、悬停显示具体原因;
- 生产实测命中:AKE 无现货 + 换手 12 倍、LSK 换手 29 倍、IOST / CVC / STEEM 空头付钱。
验证
- 新增
tests/test_v162_radar_select.py与tests/test_v163_manip_guard.py
(触发方向化 / 评分去绝对值 / 只登记未启动 / 绝不做空 / 控盘四信号 / 扩池与 TradFi 过滤 /
AST 与链路护栏);test_v162的分组断言同步更新; - 全量 19 套件全绿,
tsc --noEmit退出码 0,生产接口冒烟通过。
BAZZ.AGENT v1.5.61
🆕 v1.5.61 更新要点(广场发文模拟挂单:文章观点自动建档、7 天定胜负)
核心:富媒体发文成功后,按文章 SMC 计划自动建模拟挂单(100U 保证金 × 10x 杠杆,
不碰真实资金),后台按 5m K 线驱动状态机,7 天观察期到期强制结算——
广场页新增「模拟挂单」标签页,一眼看清每篇文章的观点到底赚没赚。
- 建单链路:compose 把 plan 节(方向/入场区/止损/止盈/进价)写进 meta.json →
发布成功入账钩子_paper_order_from_run建单(agent / 手动两条路径汇聚,run_dir
唯一索引幂等)→paper_trackerdaemon 线程 60s 复查; - 状态机(纯函数
_eval,可离线单测):pending(挂单中)→ open(已入场)→
win / loss;同根 K 同时触 TP+SL 保守判 loss;7 天未入场 → noentry;
盈亏按 10x 杠杆折算保证金收益率(%); - 观望不建单:neutral / noplay(止损距离超 8% 护栏)的文章 plan=null,绝不硬造方向;
- 广场页双标签:「发文台账 | 模拟挂单」切换,7 张统计卡(总单/挂单中/持仓/
获利/亏损/未入场/胜率)+ 订单卡列表(现价、入场区、止损止盈、盈亏着色),
支持单条删除(二次确认,仅本地数据); - 新增
GET /api/square/paper与POST /api/square/paper/delete路由,
启动钩子 + 路由双保险拉起后台复查线程。
回归测试 test_paper_orders 17/17 全绿(_eval 状态机直测 + 源码护栏)。
BAZZ.AGENT v1.5.59
BAZZ.AGENT v1.5.59
Binance Agent OS 专属 AI 交易桌面端(Agent OS Alpha Scout · Track A)
🆕 v1.5.59 更新要点(大趋势判定定版 + 反向 OB 两态显示 + OTE 口径改 0.62-0.79)
用户拍板:日线大趋势按「趋势延续优先」判定;未跌破就是还在上涨趋势中;OTE 用 0.62-0.79,中间值 0.702 作入场。
- 日线大趋势「趋势延续优先」(v1.5.57,新增
_htf_trend):锚定最近显著摆动点的
实体边缘(下沿/上沿),实体 K 收盘破位才翻转——影线捅破不算,
中途高点走低只算上涨中的调整;4h 图左上角标注「大趋势·日线 多头/空头/方向不明」; - 反向 OB 两态显示(v1.5.58):
- 已实体收盘破结构最低/最高点 → 实线框标「CHoCH 空头OB / CHoCH 多头OB」;
- 尚未破 → 虚线框标「跌破后的空头ob位 / 升破后的多头ob位」,
作为价格若跌破/升破后的反向入场参考点(用户指定:也要显示,虚线标出);
- OTE 口径改版(v1.5.59):最优入场窗口从 0.618-0.705 改为 0.62-0.79,
一般用中间值 0.702 作入场参考位;新增ote_entry字段,
计划入场价取 0.702 位;正文固定附「4h OTE 参考」行(窗口 + 中间值实际价),
「我的看法」补 OTE 概念介绍; - 4h 结构图 OTE 金框自动跟随新窗口范围。
回归测试 23/23 全绿(新增:趋势延续/实体破位翻转/新旧锚取代护栏、
反向 OB 实体破极值点才成立、虚线框护栏、OTE 0.62/0.79/0.702 窗口与中间值校验)。
真实 BTC 实测:锚 76,152(≈用户口径 76,165),影线捅破 76,000 收 77,191 仍判多头;
ETH 实测:多头 OTE 中间值 2,466.73 ≈ OB 上沿进价 2,465.82,双 SMC 位互相印证。
BAZZ.AGENT v1.5.56
🆕 v1.5.56 更新要点(日线封面不标 SMC,4h 结构图单独标记)
用户要求:日线图不需要标记 SMC,另生成一张 4 小时图标记出来。
draw_cover增加kkey/smc_zones参数:日线封面(默认)不画 SMC 标记;- 新增 draw_cover_4h:4h 蜡烛 + 多头/空头 OB(红绿矩形框)、
FVG(最近 3 条)、OTE 窗口,矩形区间框只出现在这张图上; - compose 产物新增
chart_4h.png,短贴发布自动附图(cover + 24h + 4h,共 3 张); - 4h 图高/低胶囊与信息卡文案标「近20日·4h」(120 根 4h ≈ 20 日),不与日线混淆;
- k4h 不可用时静默跳过该图,不影响出稿。
回归 fallback 14/14(新增 3 例:日线默认无标记护栏 / 4h 图出图 / 缺 k4h 报错)、
styles 17/17、sizing 16/16 全绿。真实 BTC 实测:日线净版 + 4h 图 OB/FVG/OTE 框位清晰。
BAZZ.AGENT v1.5.55
🆕 v1.5.55 更新要点(封面图叠加 SMC 区域标记:OB / FVG / OTE 矩形区间框,主图放大、量区压小)
用户要求:主 K 线图放大一点、量柱区放小,并在图上标记出 SMC 区域。
- SMC 区域矩形框(画在蜡烛下层,实线描边,标签在框内左端):
- 多头 OB(绿框 12%)/ 空头 OB(红框 12%)——4h 结构上最近的供需区;
- FVG 缺口(按距现价取最近 3 条,现价下方绿/上方红,8%);
- OTE 斐波那契 0.618-0.705 窗口(金色框 9%);
- 最小可视高度 10px,窄区间也能看出是「框」;不用虚线(用户指定矩形区间);
- 布局:价格区 216px → 380px(
y1 = H-236),量区压至 66px(vy1 = H-150); - 网格、蜡烛实体、高/低胶囊、现价胶囊、信息卡样式延续 v1.5.54 定版。
真实 BTC 行情实测:OB/FVG/OTE 色带聚焦现价附近供需,标签无遮挡。回归
fallback 11/11、styles 17/17、sizing 16/16 全绿。