mirror of
https://github.com/freqtrade/freqtrade.git
synced 2025-11-29 08:33:07 +00:00
refactor: strip fast download logic into a method
This commit is contained in:
@@ -110,11 +110,13 @@ class Binance(Exchange):
|
|||||||
candle_type: CandleType,
|
candle_type: CandleType,
|
||||||
is_new_pair: bool = False,
|
is_new_pair: bool = False,
|
||||||
until_ms: Optional[int] = None,
|
until_ms: Optional[int] = None,
|
||||||
|
only_from_ccxt: bool = False,
|
||||||
) -> DataFrame:
|
) -> DataFrame:
|
||||||
"""
|
"""
|
||||||
Overwrite to introduce "fast new pair" functionality by detecting the pair's listing date
|
Overwrite to introduce "fast new pair" functionality by detecting the pair's listing date
|
||||||
Does not work for other exchanges, which don't return the earliest data when called with "0"
|
Does not work for other exchanges, which don't return the earliest data when called with "0"
|
||||||
:param candle_type: Any of the enum CandleType (must match trading mode!)
|
:param candle_type: Any of the enum CandleType (must match trading mode!)
|
||||||
|
:param only_from_ccxt: Only download data using the API provided by CCXT
|
||||||
"""
|
"""
|
||||||
if is_new_pair:
|
if is_new_pair:
|
||||||
x = self.loop.run_until_complete(
|
x = self.loop.run_until_complete(
|
||||||
@@ -134,6 +136,37 @@ class Binance(Exchange):
|
|||||||
)
|
)
|
||||||
return DataFrame(columns=DEFAULT_DATAFRAME_COLUMNS)
|
return DataFrame(columns=DEFAULT_DATAFRAME_COLUMNS)
|
||||||
|
|
||||||
|
if only_from_ccxt:
|
||||||
|
return super().get_historic_ohlcv(
|
||||||
|
pair=pair,
|
||||||
|
timeframe=timeframe,
|
||||||
|
since_ms=since_ms,
|
||||||
|
candle_type=candle_type,
|
||||||
|
is_new_pair=is_new_pair,
|
||||||
|
until_ms=until_ms,
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
return self.get_historic_ohlcv_fast(
|
||||||
|
pair=pair,
|
||||||
|
timeframe=timeframe,
|
||||||
|
since_ms=since_ms,
|
||||||
|
candle_type=candle_type,
|
||||||
|
is_new_pair=is_new_pair,
|
||||||
|
until_ms=until_ms,
|
||||||
|
)
|
||||||
|
|
||||||
|
def get_historic_ohlcv_fast(
|
||||||
|
self,
|
||||||
|
pair: str,
|
||||||
|
timeframe: str,
|
||||||
|
since_ms: int,
|
||||||
|
candle_type: CandleType,
|
||||||
|
is_new_pair: bool = False,
|
||||||
|
until_ms: Optional[int] = None,
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
Fetch ohlcv fast by utilizing https://data.binance.vision
|
||||||
|
"""
|
||||||
if (candle_type == CandleType.SPOT and timeframe in ["1s", "1m", "3m", "5m"]) or (
|
if (candle_type == CandleType.SPOT and timeframe in ["1s", "1m", "3m", "5m"]) or (
|
||||||
candle_type == CandleType.FUTURES and timeframe in ["1m", "3m", "5m", "15m", "30m"]
|
candle_type == CandleType.FUTURES and timeframe in ["1m", "3m", "5m", "15m", "30m"]
|
||||||
):
|
):
|
||||||
@@ -163,15 +196,16 @@ class Binance(Exchange):
|
|||||||
until_ms=until_ms,
|
until_ms=until_ms,
|
||||||
)
|
)
|
||||||
all_df = concat([df, rest_df])
|
all_df = concat([df, rest_df])
|
||||||
return all_df
|
else:
|
||||||
return super().get_historic_ohlcv(
|
return super().get_historic_ohlcv(
|
||||||
pair=pair,
|
pair=pair,
|
||||||
timeframe=timeframe,
|
timeframe=timeframe,
|
||||||
since_ms=since_ms,
|
since_ms=since_ms,
|
||||||
candle_type=candle_type,
|
candle_type=candle_type,
|
||||||
is_new_pair=is_new_pair,
|
is_new_pair=is_new_pair,
|
||||||
until_ms=until_ms,
|
until_ms=until_ms,
|
||||||
)
|
)
|
||||||
|
return all_df
|
||||||
|
|
||||||
def funding_fee_cutoff(self, open_date: datetime):
|
def funding_fee_cutoff(self, open_date: datetime):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -2224,6 +2224,7 @@ class Exchange:
|
|||||||
candle_type: CandleType,
|
candle_type: CandleType,
|
||||||
is_new_pair: bool = False,
|
is_new_pair: bool = False,
|
||||||
until_ms: Optional[int] = None,
|
until_ms: Optional[int] = None,
|
||||||
|
only_from_ccxt: bool = False,
|
||||||
) -> DataFrame:
|
) -> DataFrame:
|
||||||
"""
|
"""
|
||||||
Get candle history using asyncio and returns the list of candles.
|
Get candle history using asyncio and returns the list of candles.
|
||||||
@@ -2232,8 +2233,10 @@ class Exchange:
|
|||||||
:param pair: Pair to download
|
:param pair: Pair to download
|
||||||
:param timeframe: Timeframe to get data for
|
:param timeframe: Timeframe to get data for
|
||||||
:param since_ms: Timestamp in milliseconds to get history from
|
:param since_ms: Timestamp in milliseconds to get history from
|
||||||
:param until_ms: Timestamp in milliseconds to get history up to
|
|
||||||
:param candle_type: '', mark, index, premiumIndex, or funding_rate
|
:param candle_type: '', mark, index, premiumIndex, or funding_rate
|
||||||
|
:param is_new_pair: used by binance subclass to allow "fast" new pair downloading
|
||||||
|
:param until_ms: Timestamp in milliseconds to get history up to
|
||||||
|
:param only_from_ccxt: Only download data using the API provided by CCXT
|
||||||
:return: Dataframe with candle (OHLCV) data
|
:return: Dataframe with candle (OHLCV) data
|
||||||
"""
|
"""
|
||||||
pair, _, _, data, _ = self.loop.run_until_complete(
|
pair, _, _, data, _ = self.loop.run_until_complete(
|
||||||
@@ -2242,7 +2245,6 @@ class Exchange:
|
|||||||
timeframe=timeframe,
|
timeframe=timeframe,
|
||||||
since_ms=since_ms,
|
since_ms=since_ms,
|
||||||
until_ms=until_ms,
|
until_ms=until_ms,
|
||||||
is_new_pair=is_new_pair,
|
|
||||||
candle_type=candle_type,
|
candle_type=candle_type,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@@ -2255,13 +2257,11 @@ class Exchange:
|
|||||||
timeframe: str,
|
timeframe: str,
|
||||||
since_ms: int,
|
since_ms: int,
|
||||||
candle_type: CandleType,
|
candle_type: CandleType,
|
||||||
is_new_pair: bool = False,
|
|
||||||
raise_: bool = False,
|
raise_: bool = False,
|
||||||
until_ms: Optional[int] = None,
|
until_ms: Optional[int] = None,
|
||||||
) -> OHLCVResponse:
|
) -> OHLCVResponse:
|
||||||
"""
|
"""
|
||||||
Download historic ohlcv
|
Download historic ohlcv
|
||||||
:param is_new_pair: used by binance subclass to allow "fast" new pair downloading
|
|
||||||
:param candle_type: Any of the enum CandleType (must match trading mode!)
|
:param candle_type: Any of the enum CandleType (must match trading mode!)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user