feat: 持仓锁 — 同币种只跟一个 trader
【背景】之前 BTC 同时跟多个 trader (Jasonleo/麻吉/巨鲸), 信号互相干扰
- 群体投票算法复杂,实际投出分歧
- 单一币种单一信号源更清晰
【实现】
- position_locks 表 (symbol PK, trader, side, locked_at, reason, auto_locked)
- acquire_lock / release_lock / get_lock / list_locks / check_signal_lock
- 72h 自动过期 (按 _hours_since 算)
- 同 trader 同方向 → 续期
- 同方向不同 trader → 检查过期,过期后接管
- 不同方向 → 跳过 (允许一多一空并存)
- is_real_trader 黑名单: 'X聚合社区'/'某转发' 等不参与锁
【集成】process_signal.format_message 开头调 check_signal_lock:
- 锁被占用 → 推 '🔒 {reason}' (被锁,跳过)
- 锁允许 → 继续推信号
【测试】6 场景全过: 同 trader 续期/反向跳过/同向跳过/聚合放行/新币自动锁 ✅
【当前锁】BTC long → 矿工Jasonleo, HYPE short → 麻吉大哥 (手动加锁)