记录一次「0 BUY」的归因(2026-06-06)
记录一次「0 BUY」的归因(2026-06-06)系统在跑,日志在滚,但一笔交易都没发生
这是做交易系统时最让人心慌的一种故障:**它不是崩了,它是"活着但不动"**。
v1.8 部署上去两个小时,0 BUY、0 SELL。进程在,决策在写,就是不下单。
四层诊断:把"不动"拆开面对这种情况,最容易犯的错是直接去怀疑策略——是不是阈值太高了?是不是信号太差了?然后开始降阈值。
但那天没有先动手改参数,而是先做了一次分层排查。因为"0 BUY"这件事,可能在四个完全不同的地方断掉:
层
卡住的表现
1. 策略层
headless 跑出来的 want 比例过低
2. 风控层
策略想买,但被 _risk_check_buy 拒了
3. 仓位层
想买,有额度,但拿不到仓位
4. 持久化层
链路断了,数据根本没进来
排查结果:
第 1 层——健康。 headless 跑 sol + bsc + base 共 120 个 token,**111 个 want=True,通过率 92.5%**。策略评分没有任 ...
记录一次黑窗口的排查(2026-06-01)
记录一次黑窗口的排查(2026-06-01)如果你发现自己在打补丁,先退一步:上游修了吗
那天要解决的毛病很小——小到可以忍,但每次都在提醒你它的存在。
那个一闪而过的黑窗口现象是:每执行一次终端命令,屏幕上就闪一下黑色的 cmd 窗口。
它不影响结果,命令照跑,输出也正常。但一天下来闪几百次,人会烦。更要命的是它给人一种"这东西没做干净"的感觉。
查下来是本地装的 Hermes 0.14.0(v2026.5.16,2026-05-18 发布)的一个已知 bug:Windows 上每次调用终端都会弹一个控制台窗口。
先查上游,再动手改第一反应当然是"把弹窗的地方关掉"——找到 Popen 的调用点,加个 Windows 专用的隐藏标志就行。
但我先多做了一步:去看看上游有没有修。
结果很干脆:这个 bug 在 0.15.0(v2026.5.28)里已经修了,做法是加了一个 windows_hide_flags() 的辅助函数。而当时 PyPI 上最新是 0.15.2(v2026.5.29.2)——本地落后了整整两个补丁版本。
那正确的修法就只有 ...