mirror of
https://github.com/freqtrade/freqtrade.git
synced 2026-01-20 14:00:38 +00:00
fix: apply hyperliquid market rate fix to fetch_orders
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
"""Hyperliquid exchange subclass"""
|
||||
|
||||
import logging
|
||||
from copy import deepcopy
|
||||
from datetime import datetime
|
||||
|
||||
from freqtrade.constants import BuySell
|
||||
@@ -157,9 +158,15 @@ class Hyperliquid(Exchange):
|
||||
logger.warning(f"Could not update funding fees for {pair}.")
|
||||
return 0.0
|
||||
|
||||
def fetch_order(self, order_id: str, pair: str, params: dict | None = None) -> CcxtOrder:
|
||||
order = super().fetch_order(order_id, pair, params)
|
||||
|
||||
def _adjust_hyperliquid_order(
|
||||
self,
|
||||
order: dict,
|
||||
) -> dict:
|
||||
"""
|
||||
Adjusts order response for Hyperliquid
|
||||
:param order: Order response from Hyperliquid
|
||||
:return: Adjusted order response
|
||||
"""
|
||||
if (
|
||||
order["average"] is None
|
||||
and order["status"] in ("canceled", "closed")
|
||||
@@ -168,7 +175,9 @@ class Hyperliquid(Exchange):
|
||||
# Hyperliquid does not fill the average price in the order response
|
||||
# Fetch trades to calculate the average price to have the actual price
|
||||
# the order was executed at
|
||||
trades = self.get_trades_for_order(order_id, pair, since=dt_from_ts(order["timestamp"]))
|
||||
trades = self.get_trades_for_order(
|
||||
order["id"], order["symbol"], since=dt_from_ts(order["timestamp"])
|
||||
)
|
||||
|
||||
if trades:
|
||||
total_amount = sum(t["amount"] for t in trades)
|
||||
@@ -177,6 +186,23 @@ class Hyperliquid(Exchange):
|
||||
if total_amount
|
||||
else None
|
||||
)
|
||||
self._log_exchange_response("fetch_order2", order)
|
||||
return order
|
||||
|
||||
def fetch_order(self, order_id: str, pair: str, params: dict | None = None) -> CcxtOrder:
|
||||
order = super().fetch_order(order_id, pair, params)
|
||||
|
||||
order = self._adjust_hyperliquid_order(order)
|
||||
self._log_exchange_response("fetch_order2", order)
|
||||
|
||||
return order
|
||||
|
||||
def fetch_orders(
|
||||
self, pair: str, since: datetime, params: dict | None = None
|
||||
) -> list[CcxtOrder]:
|
||||
orders = super().fetch_orders(pair, since, params)
|
||||
for idx, order in enumerate(deepcopy(orders)):
|
||||
order2 = self._adjust_hyperliquid_order(order)
|
||||
orders[idx] = order2
|
||||
|
||||
self._log_exchange_response("fetch_orders2", orders)
|
||||
return orders
|
||||
|
||||
Reference in New Issue
Block a user