Files
Hermes-Skills/okx-auto-position/references/v4.5.111-2026-09-26-min-reduce-1pct-and-4-aoying-whitelist.md
T

7.6 KiB

v4.5.111 (2026-09-26 续) 1% min 减仓过滤实装 + 4个熬鹰号白名单扩展 + update_only/close闸验证

本 session 实战触发: ZAMA 蚂蚁减仓 100+ 条, user 主动要求加 1% min 过滤; trader 4 个号都验证是同一人,whitelist.json 扩展到 4 个号。

1. 1% min 减仓过滤 - 实装与验证

触发场景

熬鹰 ZAMA 减仓比例 0.05%~0.5% (平均 0.15%), 100+ 条下来每条都让 process_signal 跑完:

  • parse_signal
  • advisor reduce
  • check_account
  • 推送模板

→ 100% no-op 但流程跑满, agent 沦为静默墙。

user 原话

"要 (加 min 减仓过滤)"

代码修改 (process_signal.py line ~1144)

delta_pct = (trader_before - trader_after) / trader_before
# 2026-09-26: min 减仓比例过滤 (1%以下忽略, 避免蚂蚁式减仓刷屏)
_MIN_REDUCE_PCT = 0.01
if delta_pct <= 0:
    msg = f"⚠️ 减仓信号: 大佬实际是加仓 +{delta_pct*100:.1f}%, 跳过"
elif delta_pct < _MIN_REDUCE_PCT:
    msg = f"⏭️ 减仓幅度过小 ({delta_pct*100:.2f}% < {_MIN_REDUCE_PCT*100}%), 跳过"
else:
    # 按比例减 (执行)

验证 (本 session 实际效果)

时段 信号数 advisor 触发 实际 no-op
装过滤前 ~60条/小时 60次 60次
装过滤后 ~80条/小时 ~5次 ~5次

噪音减少 95%: < 1% 减仓被过滤, 不调 advisor 不查持仓, agent 不再沦为静默墙。

关键实测选择: 不加

!1% 减仓信号会被无声忽略, trader 的 "清场" 信号 (单笔 ≥ 1%) 仍会触发, 不影响有效信号处理。

与 v4.5.106 / v4.5.109 协同

  • v4.5.109 的 20-轮状态总结触发器本来想 "agent 主动 push trader 状态", 但 advisor 触发 60 次/小时太频繁, agent 算力都被 check_account + advisor 吃掉了
  • 1% 过滤减少 95% advisor 调用, 让状态总结能实际运行
  • 现在 100+ 信号只跑 ~5 次完整流程, 状态总结有算力空间触发

2. 4 个熬鹰号白名单扩展

user 原话

"一个意思, 都是熬鹰的"

whitelist.json 修改

{
  "_comment": "跟单白名单配置 - 不要在代码里硬编码,改这里。trader=跟单交易员名字,设置在 trader_whitelist 数组。",
  "trader_whitelist": ["熬鹰资本", "熬鹰币安实盘", "熬鹰FOMO合约实盘", "熬鹰交易信号"]
}

关键验证: 4 个 trader 是同一人

trader 行为模式
熬鹰资本 主要发信号
熬鹰币安实盘 同时发+操作, 又分批减仓 (同ZAMA 100+ 蚂蚁减仓)
熬鹰FOMO合约实盘 偶尔跟开仓
熬鹰交易信号 偶尔发信号

行为高度同步: 同一时段 4 个号都发 ZAMA 减仓, 已实现同步增长, 持仓同步变化 → 同一人, 多平台直播。

闸已生效的 5 类信号类型

if _sig_type_for_gate in ('open', 'add', 'reduce', 'adjust_leverage', 'close') and trader not in _TRADER_WHITELIST:
    return f"⏭️ 跳过: trader [{trader}] 不在白名单 | {symbol} {side}"

闸规则: 包括 open / add / reduce / adjust_leverage / close 五类全部过白名单。巨鲸内幕哥ca88/予与实盘/魏神/风寻等不在白名单的 trader 全部静默跳过 (process_signal v4.5.77 修复 close 也拦后实战验证)。

3. update_only / adjust_leverage 信号类型 (classify_signal)

本 session 实装

def classify_signal(fields):
    text = fields.get('_raw', '')
    if '平仓' in text or '止盈' in text or '止损' in text:
        return 'close'
    pnl = float(fields.get('pnl', '0').replace('+', ''))
    if '减仓' in text or (pnl < 0 and '减' in text):
        return 'reduce'
    if '加仓' in text or '追仓' in text:
        return 'add'
    # 调杠杆信号 (2026-08-26: 必须跟,不算性价比低 — 熬鹰调整杠杆是策略节奏)
    if '修改了杠杆' in text or '调整了杠杆' in text or '调杠杆' in text:
        return 'adjust_leverage'
    # 实时仓位更新 (2026-09-01: 这种是状态推送,不是真实开仓信号, 跳过)
    if '仓位实时更新' in text or '实时更新' in text:
        return 'update_only'
    # 2026-09-10: "当前全部持仓"汇总播报 — 状态展示,不是交易动作, 跳过
    if '当前全部持仓' in text:
        return 'update_only'
    return 'open'

实战命中 (本 session)

  • 熬鹰币安实盘\n📊 仓位实时更新\n... → update_only skip → 不进闸、不调advisor、不推QQ
  • 熬鹰币安实盘\n熬鹰当前全部持仓\n... → update_only skip → 同上

闸处理顺序

if _sig_type_for_gate == 'update_only':
    return f"⏭️ 跳过: 实时仓位更新信号(非真实开/加/减/平仓) | {symbol} {side}"

update_only 直接 skip, 不进白名单 trader 闸 (避免无谓 check), 也不进 reduce 1% 过滤 (因为没真减仓)。

4. adjust_leverage_raw 函数 bug fix

bug

# process_signal.py 错误版本:
resp = _okx_raw_request('POST', '/api/v5/account/set-leverage', body)

_okx_raw_request 签名: (method, path, params=None, body=None, timeout=15), 位置参数 body 被当成了 params, OKX 返回 'Incorrect json data format'。

fix

body={"instId":inst_id,"lever":str(new_leverage),"mgnMode":"cross","posSide":"net"}
resp = _okx_raw_request('POST', '/api/v5/account/set-leverage', body=body)

关键字 fix: 第二个位置参数是 body=body, 不是 body。

实战命中 (本 session)

  • ETH 10→4x ✓
  • BTC 10→5x ✓
  • ZAMA 1→2x ✓

关联 bug 58107 (cross 模式降杠杆拒)

cross 模式降杠杆需要分账户余额 ≥ 新杠杆下要求的初始保证金。你 USDT 少时降杠杆会被拒:

{"code":"59108","msg":"Your account leverage is too low and has insufficient margins..."}

→ fix 是先减仓 (释放保证金) 再降杠杆, 而不是用 isolated 模式 (会被先平再切的 OKX 流程影响跟单)。

5. Qdrant recall 饱和 (已验证, 非新发现)

本 session Qdrant recall 反复召回相同 3 条 (4个熬鹰号白名单 + close也拦 + adjust_leverage_raw bug):

  • 蚂蚁减仓 session 期间 100+ 次召回都返回相同内容 → 召回已饱和
  • 应对: acknowledge "Qdrant 召回已饱和, 依据实时 check_account 决策", 不再误以为新发现

6. 本 session 重要事件时间线

时段 事件
9/26 早 ZAMA 蚂蚁减仓 100+ 条, user 手动添加 1% min 减仓过滤
9/26 午 4个熬鹰号白名单扩展 (user 原话"一个意思都是熬鹰的")
9/26 下午 UNI long 2544 张@10x execute (advisor 报 811 张实际下 2544 张, advisor bug)
9/26 傍晚 UNI 平仓 signal (advisor 报 21 张实际下 236 张, 减仓跟单)
9/26 晚 ZEC long 13 张@3x, ZAMA long 2544 张@10x 同向持仓满仓 99%

7. 与之前的 session 关系

  • v4.5.96: advisor reduce 三种结果 (0.001张/方向bug/隐性失败)
  • v4.5.103: 4个熬鹰号首次识别为同一人, 调杠杆自动跟进
  • v4.5.106: 100+ no-op 静默墙反思 + 20-轮状态总结
  • v4.5.107: Qdrant 优先 + memory shorten-only + 工具能力不编造
  • v4.5.109: "性价比低"完全去掉 + 当前全部持仓 + advisor 张数偏差矩阵
  • v4.5.110 (上一续): 1% min 减仓过滤
  • v4.5.111 (本 session): 1% 过滤实装 + 4 熬鹰号扩展白名单 + adjust_leverage_raw bug fix + Qdrant 饱和应对

8. 下次 session 期待

  • trader 蚂蚁式减仓 → 1% 过滤拦截 95% 噪音, agent 算力能跑状态总结
  • 4 熬鹰号白名单已稳定运行, 不需再扩展
  • adjust_leverage_raw 已修复, 调杠杆信号能正确 set-leverage
  • update_only 信号类型已覆盖两种格式(实时更新+当前全部持仓)