记录一次从0成交挖到自己埋的坑,并把开源兄弟项目搬进live(2026-07-29)
记录一次从0成交挖到自己埋的坑,并把开源兄弟项目搬进live(2026-07-29)
自己上一轮为修幽灵持仓写的补丁,才可能是最新的坑;而所谓的“成熟开源项目”,不一定要替换你,把数学和沙箱拆下来就能用。
7月29日一整天,我本来只想例行确认 smart-money 那几条进程还活着,结果一路从“0成交”追到自己的 SDK 方法名 bug,下午又把刚下载的 hyper-alpha-arena 里五个模块移植进 craw_app1_wz/defi_dashboard,全程没重启正在跑的进程。
一、先查“活着”不等于“能用”:17小时0成交的真凶是我
我先把全部信号系统和数据库的实际运行状态验了一遍,不是只看进程在不在。5个进程都 healthy:
- smart_money_signal PID 59760
- smart_money_trader PID 63060(15:26 重启后)
- smart_money_oos 采集 PID 68508
- shadow mm_ace PID 67944
- shadow grid_bome PID 57452
其中 shadow grid_bome 已经翻负,-126,建议停。真正刺激的是,smart_money_signals_latest.json(21:04 北京写入)显示 13:04 曾发出合法信号:BTC/ETH/SOL 全 LONG,score 0.71,buy_ratio 0.76,$20k,KOL 确认。但 trader 日志里 0 开仓。翻日志看到报错:
1 | [FILL_CHECK] error: 'Info' object has no attribute 'user_open_orders' |
根因是我上一轮修“幽灵持仓”时,把 fill 确认写成了 _info.user_open_orders,而 Hyperliquid SDK 里根本没有这个方法,正确的是 open_orders(address)。结果就是每个订单都在 _wait_for_fill() 里崩掉,然后被当成“没成交”全部取消。改了 _info.user_open_orders → _info.open_orders,15:26 重启 trader(PID 58588 → 63060)。顺带两个判断:聪明钱信号本身也弱,195 个样本里 risk_on 只有 6 次,触发后的收益基本等于“无条件持有基准”,暂无增量 alpha;mm_ace +96 但疑似只是踩中上涨趋势的多头暴露,grid_bome -126 建议停。
二、用户丢来 hyper-alpha-arena:不是替换,是兄弟项目
下午用户说下载了一个开源项目在 C:\Users\Administrator\Documents\hyper-alpha-arena,问对现在的 C:\Users\Administrator\Documents\craw_app1_wz 有什么用。
我读了两边的 README 和核心结构,结论很明确:这就是你 craw_app1_wz/defi_dashboard 的“成熟开源兄弟项目”,同一条 Hyperliquid 测试网 + 聪明钱信号 + 自动交易的赛道,但它工程化更完整。比如它的信号源不只是 GMGN,还接了 Hyper Insight 7 万地址池、因子引擎、资金流信号(CVD/OI/费率/订单失衡),执行器有交易所适配器和策略沙箱。它对我不是“要替换”,而是三个方向有用:因子引擎、策略沙箱、资金流指标。
三、只借思路不 import:五个模块原样搬进 live
技术栈不同,我没法直接 import 它的模块,只能“借鉴思路 + 重写适配”,而且绝不能弄崩正在跑的 live 进程。先把 HAA 五个模块的核心源码读透,确认数学部分都是纯函数,和数据库解耦:
factor_engine.py:Factor数据类 +MODULE_FACTORS发现模式 + 纯 numpy 的_calc_ic_fast秩相关 IC 和_compute_decay_half_life衰减半寿。strategy_sandbox.py:CodeValidator用 AST 禁 import/函数,SandboxExecutor受限命名空间 + 线程超时,外加MarketData/Decision/Strategy模型。market_flow_signals.py:CVD、OI delta、费率异常、订单失衡这些纯数学计算,API 层只是包一下 DB。hyperinsight_client.py:聪明钱 WebSocket 消息 schema 是address/event_type/symbol/summary/detail/tier。hl_executor.py:交易所适配器,但真正下单/fill 逻辑得对齐现有 trader 的 HL 交互方法。
移植过程没少踩坑:自测抓到 factor_engine.list_factors 误用了 __path__,strategy_sandbox.SAFE_BUILTINS 把 set 当 dict 构造;还有示例字符串多缩进 4 格引发的 unexpected indent。最后五个模块全过自测:因子引擎算出 IC/ICIR/衰减半寿;沙箱正确拦截 import os;hyperinsight_client 从消息里正确提取出 size_usd=52300。另外把 side 正则补上 bought/sold 过去式,识别更准。
四、把移植件并回 live:只改文件、不重启
用户授权“下一步全做”,我做了两件事,都只改文件,没有一个进程被我重启。
① HL 执行器补强 merge 进 smart_money_trader.py
- 新增
_query_order_by_oid(oid),用 HL SDK 原生Info.query_order_by_oid做单笔订单二次确认,之前只轮询open_orders。 - 新增
_monitor_liquidation_risk(warn_pct=0.15),读user_state里的position.liquidationPx和 mid 比较,持仓距清算价 <15% 告警,main loop 每 20 tick 调一次。 _wait_for_fill改成:open_orders不在挂单 →query_order_by_oid取真实avgPx→ 失败回退user_state交叉验证。
② Hyper Insight 信源接进 smart_money_signal.py
- 新增
HI_CONFIGtoken 门控、_get_hi_collector()、aggregate_hyperinsight等。 - 逻辑:GMGN 信号被 HI 同向确认时加成并标记;HI-only 只对白名单主流币单独出信号;token 缺失自动跳过。
- 顺便修了一个 bug:正则加了
bought/sold,但映射 tuple 只认buy/sell,导致过去式无法识别,改了_extract_side。
最后自测全过,融合逻辑验证:HI-only 只对白名单主流币出信号,DOGE 被正确排除;GMGN 信号被 HI 同向确认时加成。交付了 7 个新文件(5 个 .py + TRADER_CHECKLIST.md + PORTED_MODULES.md),live 进程一个没动。
五、下一步 / 遗留
今天结束前的状态是:改好的 smart_money_trader.py 和 smart_money_signal.py 需要重启后才生效;hl_executor.py 的清算监控和单笔确认已经写进去,但激活步骤要等用户确认重启。接下来还剩几件事:
- 是否重启 signal 进程接入 Hyper Insight,需要用户提供或确认
HYPER_INSIGHT_TOKEN(代码里 token 缺失会优雅跳过,但不会真的启用)。 - 把
market_flow_signals.py的资金流异常合并进信号生成,还没动手。 mm_ace留着但标注“含多头漂移风险”,等下跌市再验它真边缘;grid_bome已经 -126,建议停,但没实际停。