mirror of
https://github.com/freqtrade/freqtrade.git
synced 2024-11-10 10:21:59 +00:00
Fixed timestamp/datetime issues for mark price, funding rate and _get_funding_fee_dates
This commit is contained in:
parent
6e912c1053
commit
f795288d90
|
@ -1712,10 +1712,9 @@ class Exchange:
|
||||||
return d.minute > 0 or d.second > 0
|
return d.minute > 0 or d.second > 0
|
||||||
|
|
||||||
def _get_funding_fee_dates(self, d1: datetime, d2: datetime):
|
def _get_funding_fee_dates(self, d1: datetime, d2: datetime):
|
||||||
d1_hours = d1.hour + 1 if self.funding_fee_cutoff(d1) else d1.hour
|
d1 = datetime(d1.year, d1.month, d1.day, d1.hour, tzinfo=timezone.utc)
|
||||||
if d1_hours == 24:
|
if self.funding_fee_cutoff(d1):
|
||||||
d1_hours = 0
|
d1 += timedelta(hours=1)
|
||||||
d1 = datetime(d1.year, d1.month, d1.day, d1_hours, tzinfo=timezone.utc)
|
|
||||||
d2 = datetime(d2.year, d2.month, d2.day, d2.hour, tzinfo=timezone.utc)
|
d2 = datetime(d2.year, d2.month, d2.day, d2.hour, tzinfo=timezone.utc)
|
||||||
|
|
||||||
results = []
|
results = []
|
||||||
|
@ -1768,7 +1767,10 @@ class Exchange:
|
||||||
)
|
)
|
||||||
history = {}
|
history = {}
|
||||||
for candle in candles:
|
for candle in candles:
|
||||||
history[candle[0]] = candle[1]
|
# TODO-lev: Round down to the nearest funding fee time, incase a timestamp ever has a delay of > 1s
|
||||||
|
seconds = int(candle[0] / 1000) # The millisecond timestamps can be delayed ~20ms
|
||||||
|
opening_mark_price = candle[1]
|
||||||
|
history[seconds] = opening_mark_price
|
||||||
return history
|
return history
|
||||||
except ccxt.NotSupported as e:
|
except ccxt.NotSupported as e:
|
||||||
raise OperationalException(
|
raise OperationalException(
|
||||||
|
@ -1804,15 +1806,16 @@ class Exchange:
|
||||||
close_date = datetime.now(timezone.utc)
|
close_date = datetime.now(timezone.utc)
|
||||||
funding_rate_history = self.get_funding_rate_history(
|
funding_rate_history = self.get_funding_rate_history(
|
||||||
pair,
|
pair,
|
||||||
int(open_date.timestamp() * 1000)
|
int(open_date.timestamp())
|
||||||
)
|
)
|
||||||
mark_price_history = self._get_mark_price_history(
|
mark_price_history = self._get_mark_price_history(
|
||||||
pair,
|
pair,
|
||||||
int(open_date.timestamp() * 1000)
|
int(open_date.timestamp())
|
||||||
)
|
)
|
||||||
for date in self._get_funding_fee_dates(open_date, close_date):
|
funding_fee_dates = self._get_funding_fee_dates(open_date, close_date)
|
||||||
funding_rate = funding_rate_history[int(date.timestamp() * 1000)]
|
for date in funding_fee_dates:
|
||||||
mark_price = mark_price_history[int(date.timestamp() * 1000)]
|
funding_rate = funding_rate_history[int(date.timestamp())]
|
||||||
|
mark_price = mark_price_history[int(date.timestamp())]
|
||||||
fees += self._get_funding_fee(
|
fees += self._get_funding_fee(
|
||||||
size=amount,
|
size=amount,
|
||||||
mark_price=mark_price,
|
mark_price=mark_price,
|
||||||
|
|
|
@ -4722,39 +4722,39 @@ def test_update_funding_fees(mocker, default_conf, time_machine, fee):
|
||||||
|
|
||||||
funding_rates = {
|
funding_rates = {
|
||||||
"LTC/BTC": {
|
"LTC/BTC": {
|
||||||
1630454400000: 0.00032583,
|
1630454400: 0.00032583,
|
||||||
1630483200000: 0.00024472,
|
1630483200: 0.00024472,
|
||||||
},
|
},
|
||||||
"ETH/BTC": {
|
"ETH/BTC": {
|
||||||
1630454400000: 0.0001,
|
1630454400: 0.0001,
|
||||||
1630483200000: 0.0001,
|
1630483200: 0.0001,
|
||||||
},
|
},
|
||||||
"ETC/BTC": {
|
"ETC/BTC": {
|
||||||
1630454400000: 0.00031077,
|
1630454400: 0.00031077,
|
||||||
1630483200000: 0.00022655,
|
1630483200: 0.00022655,
|
||||||
},
|
},
|
||||||
"XRP/BTC": {
|
"XRP/BTC": {
|
||||||
1630454400000: 0.00049426,
|
1630454400: 0.00049426,
|
||||||
1630483200000: 0.00032715,
|
1630483200: 0.00032715,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mark_prices = {
|
mark_prices = {
|
||||||
"LTC/BTC": {
|
"LTC/BTC": {
|
||||||
1630454400000: 3.3,
|
1630454400: 3.3,
|
||||||
1630483200000: 3.2,
|
1630483200: 3.2,
|
||||||
},
|
},
|
||||||
"ETH/BTC": {
|
"ETH/BTC": {
|
||||||
1630454400000: 2.4,
|
1630454400: 2.4,
|
||||||
1630483200000: 2.5,
|
1630483200: 2.5,
|
||||||
},
|
},
|
||||||
"ETC/BTC": {
|
"ETC/BTC": {
|
||||||
1630454400000: 4.3,
|
1630454400: 4.3,
|
||||||
1630483200000: 4.1,
|
1630483200: 4.1,
|
||||||
},
|
},
|
||||||
"XRP/BTC": {
|
"XRP/BTC": {
|
||||||
1630454400000: 1.2,
|
1630454400: 1.2,
|
||||||
1630483200000: 1.2,
|
1630483200: 1.2,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user