72 lines
2.4 KiB
Markdown
72 lines
2.4 KiB
Markdown
# v4.5.52 锁自动过期移除 (2026-08-16)
|
|
|
|
## 用户指令原文
|
|
"是72小时释放的去掉。" — 用户明确要求移除 72h 自动释放,锁永久生效。
|
|
|
|
## 改动位置
|
|
`scripts/signal_tracker.py`
|
|
|
|
### 改动 1: `is_lock_expired()` (line ~514)
|
|
```python
|
|
# 原来:
|
|
def is_lock_expired(lock):
|
|
if not lock:
|
|
return False
|
|
return _hours_since(lock.get('locked_at', '')) >= LOCK_EXPIRY_HOURS # 72h
|
|
|
|
# 2026-08-16 改:
|
|
def is_lock_expired(lock):
|
|
"""检查锁是否过期 — 2026-08-16 禁用自动过期,锁永久生效,只能手动解锁"""
|
|
return False # 锁不过期,永久生效
|
|
```
|
|
|
|
### 改动 2: `acquire_lock()` 同 trader 同侧分支 (line ~537)
|
|
```python
|
|
# 原来:
|
|
elif existing['side'] != side:
|
|
return False, f"{symbol} 已被 {existing['trader']} 锁..."
|
|
else:
|
|
if is_lock_expired(existing):
|
|
release_lock(symbol, existing['trader'], auto=True) # 过期则释放
|
|
else:
|
|
return False, f"...需等 {LOCK_EXPIRY_HOURS}h 或手动解锁"
|
|
|
|
# 2026-08-16 改:
|
|
elif existing['side'] != side:
|
|
return False, f"{symbol} 已被 {existing['trader']} 锁..."
|
|
else:
|
|
# 锁永久生效,只能手动解锁
|
|
hours = _hours_since(existing['locked_at'])
|
|
return False, f"{symbol} 已被 {existing['trader']} 锁 ({hours:.1f}h), 需手动解锁"
|
|
```
|
|
|
|
### 改动 3: `check_signal_lock()` 分支 (line ~628)
|
|
```python
|
|
# 原来:
|
|
if is_lock_expired(existing):
|
|
release_lock(symbol, existing['trader'], auto=True)
|
|
ok, msg = acquire_lock(symbol, trader, side, ...)
|
|
if ok: return True, f"🔄 {msg}"
|
|
return False, msg
|
|
else:
|
|
return False, f"{symbol} 被 {trader} 锁 ({hours:.1f}h), 需等 {LOCK_EXPIRY_HOURS}h"
|
|
|
|
# 2026-08-16 改:
|
|
# 锁永久生效,只能手动解锁
|
|
hours = _hours_since(existing['locked_at'])
|
|
return False, f"{symbol} 被 {existing['trader']} 锁 ({hours:.1f}h), 需手动解锁或等其释放"
|
|
```
|
|
|
|
## 影响
|
|
- 锁永久生效,不会被 72h 自动释放
|
|
- 同 trader 同方向信号进来 → 直接续期(更新时间戳),不拒绝
|
|
- 不同 trader 或反向 trader 信号进来 → 永远拒绝,只能手动 `/unlock` 解锁
|
|
- `_hours_since` / `LOCK_EXPIRY_HOURS` 常量保留但不再触发自动释放逻辑
|
|
|
|
## 验证命令
|
|
```bash
|
|
cd ~/.hermes/skills/trading/okx-auto-position/scripts
|
|
python3 -c "from signal_tracker import is_lock_expired; print(is_lock_expired(None), is_lock_expired({}))"
|
|
# 输出应该是: False False
|
|
```
|