11"""Hyperliquid exchange subclass"""
22
33import logging
4+ from copy import deepcopy
45from datetime import datetime
56
67from freqtrade .constants import BuySell
@@ -157,9 +158,15 @@ def get_funding_fees(
157158 logger .warning (f"Could not update funding fees for { pair } ." )
158159 return 0.0
159160
160- def fetch_order (self , order_id : str , pair : str , params : dict | None = None ) -> CcxtOrder :
161- order = super ().fetch_order (order_id , pair , params )
162-
161+ def _adjust_hyperliquid_order (
162+ self ,
163+ order : dict ,
164+ ) -> dict :
165+ """
166+ Adjusts order response for Hyperliquid
167+ :param order: Order response from Hyperliquid
168+ :return: Adjusted order response
169+ """
163170 if (
164171 order ["average" ] is None
165172 and order ["status" ] in ("canceled" , "closed" )
@@ -168,7 +175,9 @@ def fetch_order(self, order_id: str, pair: str, params: dict | None = None) -> C
168175 # Hyperliquid does not fill the average price in the order response
169176 # Fetch trades to calculate the average price to have the actual price
170177 # the order was executed at
171- trades = self .get_trades_for_order (order_id , pair , since = dt_from_ts (order ["timestamp" ]))
178+ trades = self .get_trades_for_order (
179+ order ["id" ], order ["symbol" ], since = dt_from_ts (order ["timestamp" ])
180+ )
172181
173182 if trades :
174183 total_amount = sum (t ["amount" ] for t in trades )
@@ -177,6 +186,23 @@ def fetch_order(self, order_id: str, pair: str, params: dict | None = None) -> C
177186 if total_amount
178187 else None
179188 )
180- self ._log_exchange_response ("fetch_order2" , order )
189+ return order
190+
191+ def fetch_order (self , order_id : str , pair : str , params : dict | None = None ) -> CcxtOrder :
192+ order = super ().fetch_order (order_id , pair , params )
193+
194+ order = self ._adjust_hyperliquid_order (order )
195+ self ._log_exchange_response ("fetch_order2" , order )
181196
182197 return order
198+
199+ def fetch_orders (
200+ self , pair : str , since : datetime , params : dict | None = None
201+ ) -> list [CcxtOrder ]:
202+ orders = super ().fetch_orders (pair , since , params )
203+ for idx , order in enumerate (deepcopy (orders )):
204+ order2 = self ._adjust_hyperliquid_order (order )
205+ orders [idx ] = order2
206+
207+ self ._log_exchange_response ("fetch_orders2" , orders )
208+ return orders
0 commit comments