修复网格范围更新时清理Redis旧数据 + 改进日志

This commit is contained in:
zhangkun9038@dingtalk.com 2025-11-27 20:22:28 +08:00
parent f9f6490526
commit e925a20f09

View File

@ -99,7 +99,6 @@ class StaticGrid(IStrategy):
grid_manager.step = step # 更新步长
# 重新初始化 grid_states仅在第一次之后保留已有的 FILLED 状态)
# 先从 Redis 恢复之前的网格状态
grid_manager.grid_states.clear()
for price in grid_manager.grid_prices:
grid_manager.grid_states[price] = GridLevel(
@ -113,13 +112,16 @@ class StaticGrid(IStrategy):
# 重置同步标志,以便网格范围更新后的第一次 sync 能重新初始化
grid_manager._synced_from_trade_once = False
# 从 Redis 恢复网格状态(如果存在)
# ✅ 当网格范围更新时,清理 Redis 中的旧数据,重新开始
# 并不恢复旧数据,因为网格范围已经改变,网格位置名不对应
if self.redis_available:
redis_grid_state = grid_manager.recover_grid_state_from_redis()
if redis_grid_state:
grid_manager.restore_grid_state(redis_grid_state)
print(f"[StaticGrid] {pair} 已从 Redis 恢复网格状态",
file=sys.stderr, flush=True)
try:
if grid_manager.redis_client:
grid_manager.redis_client.delete(grid_manager.redis_key)
print(f"[StaticGrid] {pair} 清理 Redis 中的旧数据",
file=sys.stderr, flush=True)
except:
pass
print(f"[StaticGrid] {pair} 更新网格范围 - 从 1000-5000 更新为 {new_lower:.2f}-{new_upper:.2f}",
file=sys.stderr, flush=True)
@ -192,7 +194,8 @@ class StaticGrid(IStrategy):
# 如果 Redis 中有持仓数据,进行恢复
if recovered_state:
grid_manager.restore_from_redis_state(recovered_state)
print(f"[StaticGrid] {pair} 已从 Redis 恢复", file=sys.stderr, flush=True)
filled_count = sum(1 for gs in grid_manager.grid_states.values() if gs.status == "filled")
print(f"[StaticGrid] {pair} 从 Redis 恢复 - {filled_count} FILLED 网格", file=sys.stderr, flush=True)
else:
print(f"[StaticGrid] {pair} 新建持仓 - 网格初始为空,等待加仓逐步填充", file=sys.stderr, flush=True)