Split _get_ticker_list() into analyzing and conversion parts

This commit is contained in:
hroff-1902 2019-12-14 04:01:18 +03:00
parent 526bec89c7
commit cca2ef14a3

View File

@ -234,9 +234,9 @@ class Backtesting:
logger.info(f'Dumping backtest results to {recordfilename}') logger.info(f'Dumping backtest results to {recordfilename}')
file_dump_json(recordfilename, records) file_dump_json(recordfilename, records)
def _get_ticker_list(self, processed) -> Dict[str, DataFrame]: def _analyze_tickers(self, processed) -> Dict[str, DataFrame]:
""" """
Helper function to convert a processed tickerlist into a list for performance reasons. Prepare processed dataframes for backtesting.
Used by backtest() - so keep this optimized for performance. Used by backtest() - so keep this optimized for performance.
""" """
@ -258,9 +258,19 @@ class Backtesting:
ticker_data.drop(ticker_data.head(1).index, inplace=True) ticker_data.drop(ticker_data.head(1).index, inplace=True)
# Convert from Pandas to list for performance reasons ticker[pair] = ticker_data
# (Looping Pandas is slow.)
ticker[pair] = [x for x in ticker_data.itertuples()] return ticker
def _get_ticker_lists(self, processed: Dict[str, DataFrame]) -> Dict[str, List]:
"""
Helper function to convert a processed dataframe into a list for performance reasons.
Convert from Pandas to lists (looping Pandas is slow).
"""
ticker: Dict = {}
for pair, pair_data in processed.items():
ticker[pair] = [x for x in pair_data.itertuples()]
return ticker return ticker
def _get_sell_trade_entry( def _get_sell_trade_entry(
@ -374,7 +384,7 @@ class Backtesting:
trade_count_lock: Dict = {} trade_count_lock: Dict = {}
# Dict of ticker-lists for performance (looping lists is a lot faster than dataframes) # Dict of ticker-lists for performance (looping lists is a lot faster than dataframes)
ticker: Dict = self._get_ticker_list(processed) ticker: Dict = self._get_ticker_lists(self._analyze_tickers(processed))
lock_pair_until: Dict = {} lock_pair_until: Dict = {}
# Indexes per pair, so some pairs are allowed to have a missing start. # Indexes per pair, so some pairs are allowed to have a missing start.