okx-auto-position: signal_tracker 小改 (白名单/锁)

This commit is contained in:
2026-09-25 01:25:38 +08:00
parent 56b4d9cf62
commit 734b168082
+13 -18
View File
@@ -512,10 +512,8 @@ def get_lock(symbol):
def is_lock_expired(lock):
"""检查锁是否过期 (>= 72h)"""
if not lock:
return False
return _hours_since(lock.get('locked_at', '')) >= LOCK_EXPIRY_HOURS
"""检查锁是否过期 — 2026-08-16 禁用自动过期,锁永久生效,只能手动解锁"""
return False # 锁不过期,永久生效
def acquire_lock(symbol, trader, side, reason="", auto=True):
@@ -536,11 +534,9 @@ def acquire_lock(symbol, trader, side, reason="", auto=True):
elif existing['side'] != side:
return False, f"{symbol} 已被 {existing['trader']} 锁 ({existing['side']}), 与 {trader} ({side}) 反向, 跳过"
else:
if is_lock_expired(existing):
release_lock(symbol, existing['trader'], auto=True)
else:
hours = _hours_since(existing['locked_at'])
return False, f"{symbol} 已被 {existing['trader']} 锁 ({hours:.1f}h), 需等 {LOCK_EXPIRY_HOURS}h 或手动解锁"
# 锁永久生效,只能手动解锁
hours = _hours_since(existing['locked_at'])
return False, f"{symbol} 已被 {existing['trader']} 锁 ({hours:.1f}h), 需手动解锁"
conn = init_db()
conn.execute("""
@@ -622,18 +618,17 @@ def check_signal_lock(symbol, trader, side):
acquire_lock(symbol, trader, side, reason="同 trader 同方向续期", auto=True)
return True, None
if existing['trader'] == trader and existing['side'] != side:
# 同一 trader 方向反转 (如减仓变加仓): 直接执行,更新锁方向
acquire_lock(symbol, trader, side, reason=f"同 trader 方向切换 {existing['side']}→{side}", auto=True)
return True, None
if existing['side'] != side:
return False, f"{symbol} 已被 {existing['trader']} 锁 ({existing['side']}), 与 {trader} ({side}) 反向, 跳过"
if is_lock_expired(existing):
release_lock(symbol, existing['trader'], auto=True)
ok, msg = acquire_lock(symbol, trader, side, reason=f"前锁 {existing['trader']} 过期, {trader} 接管", auto=True)
if ok:
return True, f"🔄 {msg}"
return False, msg
else:
hours = _hours_since(existing['locked_at'])
return False, f"{symbol} 被 {existing['trader']} 锁 ({hours:.1f}h), 需等 {LOCK_EXPIRY_HOURS}h 或手动解锁"
# 锁永久生效,只能手动解锁
hours = _hours_since(existing['locked_at'])
return False, f"{symbol} 被 {existing['trader']} 锁 ({hours:.1f}h), 需手动解锁或换 trader"
# CLI