From 93bd14812989040b8edca3ac5b5401b9bbbad309 Mon Sep 17 00:00:00 2001 From: yashasp322-ship-it Date: Tue, 24 Feb 2026 23:25:50 +0530 Subject: [PATCH] Fix price tick size validation by normalizing order prices using floor_to --- gridtrader/trader/strategies/spot_grid_strategy.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/gridtrader/trader/strategies/spot_grid_strategy.py b/gridtrader/trader/strategies/spot_grid_strategy.py index 0535602..54c6028 100644 --- a/gridtrader/trader/strategies/spot_grid_strategy.py +++ b/gridtrader/trader/strategies/spot_grid_strategy.py @@ -204,6 +204,7 @@ def on_tick(self, tick: TickData): for i in range(self.max_open_orders): price = self.bottom_price + (mid_count - i - 1) * self.step_price + price = float(floor_to(price, self.contract_data.price_tick)) if price < self.bottom_price: return @@ -216,6 +217,7 @@ def on_tick(self, tick: TickData): if len(self.short_orders_dict.keys()) == 0: for i in range(self.max_open_orders): price = self.bottom_price + (mid_count + i + 1) * self.step_price + price = float(floor_to(price, self.contract_data.price_tick)) if price > self.upper_price: return @@ -243,7 +245,7 @@ def on_order(self, order: OrderData): self.trade_times += 1 short_price = float(order.price) + float(self.step_price) - + short_price = float(floor_to(short_price, self.contract_data.price_tick)) if short_price <= self.upper_price: orders_ids = self.sell(short_price, self.order_volume) @@ -254,6 +256,7 @@ def on_order(self, order: OrderData): if len(self.long_orders_dict.keys()) < self.max_open_orders: count = len(self.long_orders_dict.keys()) + 1 long_price = float(order.price) - float(self.step_price) * count + long_price = float(floor_to(long_price, self.contract_data.price_tick)) if long_price >= self.bottom_price: orders_ids = self.buy(long_price, self.order_volume) @@ -265,6 +268,7 @@ def on_order(self, order: OrderData): self.trade_times += 1 long_price = float(order.price) - float(self.step_price) + long_price = float(floor_to(long_price, self.contract_data.price_tick)) if long_price >= self.bottom_price: orders_ids = self.buy(long_price, self.order_volume) @@ -274,6 +278,7 @@ def on_order(self, order: OrderData): if len(self.short_orders_dict.keys()) < self.max_open_orders: count = len(self.short_orders_dict.keys()) + 1 short_price = float(order.price) + float(self.step_price) * count + short_price = float(floor_to(short_price, self.contract_data.price_tick)) if short_price <= self.upper_price: orders_ids = self.sell(short_price, self.order_volume)