diff --git a/user_data/strategies/staticgrid.py b/user_data/strategies/staticgrid.py index b846cf7..53ce1e7 100644 --- a/user_data/strategies/staticgrid.py +++ b/user_data/strategies/staticgrid.py @@ -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)