Updated exchange._get_funding_fee_dates to use new method funding_fee_cutoff

This commit is contained in:
Sam Germain 2021-11-01 01:09:11 -06:00
parent 77d247e179
commit edfc3377c5
2 changed files with 20 additions and 4 deletions

View File

@ -1,6 +1,7 @@
""" Binance exchange subclass """ """ Binance exchange subclass """
import json import json
import logging import logging
from datetime import datetime
from pathlib import Path from pathlib import Path
from typing import Dict, List, Optional, Tuple from typing import Dict, List, Optional, Tuple
@ -227,3 +228,11 @@ class Binance(Exchange):
f"{arrow.get(since_ms // 1000).isoformat()}.") f"{arrow.get(since_ms // 1000).isoformat()}.")
return await super()._async_get_historic_ohlcv( return await super()._async_get_historic_ohlcv(
pair=pair, timeframe=timeframe, since_ms=since_ms, is_new_pair=is_new_pair) pair=pair, timeframe=timeframe, since_ms=since_ms, is_new_pair=is_new_pair)
def funding_fee_cutoff(self, d: datetime):
'''
# TODO-lev: Double check that gateio, ftx, and kraken don't also have this
:param d: The open date for a trade
:return: The cutoff open time for when a funding fee is charged
'''
return d.minute > 0 or (d.minute == 0 and d.second > 15)

View File

@ -1702,17 +1702,24 @@ class Exchange:
except ccxt.BaseError as e: except ccxt.BaseError as e:
raise OperationalException(e) from e raise OperationalException(e) from e
def _get_funding_fee_dates(self, d1, d2): def funding_fee_cutoff(self, d: datetime):
d1_hours = d1.hour + 1 if d1.minute > 0 or (d1.minute == 0 and d1.second > 15) else d1.hour '''
:param d: The open date for a trade
:return: The cutoff open time for when a funding fee is charged
'''
return d.minute > 0 or d.second > 0
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_hours) d1 = datetime(d1.year, d1.month, d1.day, d1_hours)
d2 = datetime(d2.year, d2.month, d2.day, d2.hour) d2 = datetime(d2.year, d2.month, d2.day, d2.hour)
results = [] results = []
d3 = d1 d3 = d1
while d3 < d2: while d3 <= d2:
d3 += timedelta(hours=1)
if d3.hour in self.funding_fee_times: if d3.hour in self.funding_fee_times:
results.append(d3) results.append(d3)
d3 += timedelta(hours=1)
return results return results