Procházet zdrojové kódy

Reconcile grid sides in one pass

Lukas Goldschmidt před 1 měsícem
rodič
revize
8246cdcf75
1 změnil soubory, kde provedl 5 přidání a 3 odebrání
  1. 5 3
      strategies/grid_trader.py

+ 5 - 3
strategies/grid_trader.py

@@ -550,18 +550,20 @@ class Strategy(Strategy):
         if desired_sides == {"buy", "sell"}:
             current_sides = {str(order.get("side") or "").lower() for order in live_orders if isinstance(order, dict)}
             missing_sides = [side for side in ("buy", "sell") if side not in current_sides]
+            reconciled_sides: list[str] = []
             if missing_sides and self.state.get("center_price"):
                 for side in missing_sides:
                     self._log(f"adding missing {side} side after trade_sides change, live_sides={sorted(current_sides)} live_ids={live_ids}")
                     self._place_side_grid(side, float(self.state.get("center_price") or price))
+                    reconciled_sides.append(side)
                 live_orders = self._sync_open_orders_state()
                 self._log(f"post-add sync: open_order_count={self.state.get('open_order_count', 0)} live_ids={self.state.get('order_ids') or []}")
-                self.state["last_action"] = f"added {','.join(missing_sides)} side(s)"
-                return {"action": "add_side", "price": price, "side": ",".join(missing_sides)}
-
             if live_orders and self.state.get("center_price"):
                 self._top_up_missing_levels(float(self.state.get("center_price") or price), live_orders)
                 live_orders = self._sync_open_orders_state()
+                if reconciled_sides:
+                    self.state["last_action"] = f"reconciled {','.join(reconciled_sides)}"
+                    return {"action": "reconcile", "price": price, "side": ",".join(reconciled_sides)}
 
         if not self.state.get("seeded") or not self.state.get("center_price"):
             self.state["center_price"] = price