1
1
"""Hyperliquid exchange subclass"""
2
2
3
3
import logging
4
+ from copy import deepcopy
4
5
from datetime import datetime
5
6
6
7
from freqtrade .constants import BuySell
@@ -157,9 +158,15 @@ def get_funding_fees(
157
158
logger .warning (f"Could not update funding fees for { pair } ." )
158
159
return 0.0
159
160
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
+ """
163
170
if (
164
171
order ["average" ] is None
165
172
and order ["status" ] in ("canceled" , "closed" )
@@ -168,7 +175,9 @@ def fetch_order(self, order_id: str, pair: str, params: dict | None = None) -> C
168
175
# Hyperliquid does not fill the average price in the order response
169
176
# Fetch trades to calculate the average price to have the actual price
170
177
# 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
+ )
172
181
173
182
if trades :
174
183
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
177
186
if total_amount
178
187
else None
179
188
)
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 )
181
196
182
197
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