Skip to content

Commit 6f3dca4

Browse files
committed
fix: apply hyperliquid market rate fix to fetch_orders
1 parent a4ae5b7 commit 6f3dca4

File tree

1 file changed

+31
-5
lines changed

1 file changed

+31
-5
lines changed

freqtrade/exchange/hyperliquid.py

+31-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""Hyperliquid exchange subclass"""
22

33
import logging
4+
from copy import deepcopy
45
from datetime import datetime
56

67
from 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

Comments
 (0)