okx-auto-position: signal_tracker 小改 (白名单/锁)
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user