Fix slow backtest due to protections
This commit is contained in:
parent
75a5161650
commit
bb51da8297
@ -173,6 +173,17 @@ class Backtesting:
|
|||||||
|
|
||||||
return data, timerange
|
return data, timerange
|
||||||
|
|
||||||
|
def prepare_backtest(self, enable_protections):
|
||||||
|
"""
|
||||||
|
Backtesting setup method - called once for every call to "backtest()".
|
||||||
|
"""
|
||||||
|
PairLocks.use_db = False
|
||||||
|
Trade.use_db = False
|
||||||
|
if enable_protections:
|
||||||
|
# Reset persisted data - used for protections only
|
||||||
|
PairLocks.reset_locks()
|
||||||
|
Trade.reset_trades()
|
||||||
|
|
||||||
def _get_ohlcv_as_lists(self, processed: Dict[str, DataFrame]) -> Dict[str, Tuple]:
|
def _get_ohlcv_as_lists(self, processed: Dict[str, DataFrame]) -> Dict[str, Tuple]:
|
||||||
"""
|
"""
|
||||||
Helper function to convert a processed dataframes into lists for performance reasons.
|
Helper function to convert a processed dataframes into lists for performance reasons.
|
||||||
@ -328,13 +339,7 @@ class Backtesting:
|
|||||||
f"max_open_trades: {max_open_trades}, position_stacking: {position_stacking}"
|
f"max_open_trades: {max_open_trades}, position_stacking: {position_stacking}"
|
||||||
)
|
)
|
||||||
trades = []
|
trades = []
|
||||||
PairLocks.use_db = False
|
self.prepare_backtest(enable_protections)
|
||||||
Trade.use_db = False
|
|
||||||
if enable_protections:
|
|
||||||
# Reset persisted data - used for protections only
|
|
||||||
|
|
||||||
PairLocks.reset_locks()
|
|
||||||
Trade.reset_trades()
|
|
||||||
|
|
||||||
# Use dict of lists with data for performance
|
# Use dict of lists with data for performance
|
||||||
# (looping lists is a lot faster than pandas DataFrames)
|
# (looping lists is a lot faster than pandas DataFrames)
|
||||||
@ -351,9 +356,6 @@ class Backtesting:
|
|||||||
while tmp <= end_date:
|
while tmp <= end_date:
|
||||||
open_trade_count_start = open_trade_count
|
open_trade_count_start = open_trade_count
|
||||||
|
|
||||||
if enable_protections:
|
|
||||||
self.protections.global_stop(tmp)
|
|
||||||
|
|
||||||
for i, pair in enumerate(data):
|
for i, pair in enumerate(data):
|
||||||
if pair not in indexes:
|
if pair not in indexes:
|
||||||
indexes[pair] = 0
|
indexes[pair] = 0
|
||||||
@ -410,6 +412,7 @@ class Backtesting:
|
|||||||
trades.append(trade_entry)
|
trades.append(trade_entry)
|
||||||
if enable_protections:
|
if enable_protections:
|
||||||
self.protections.stop_per_pair(pair, row[DATE_IDX])
|
self.protections.stop_per_pair(pair, row[DATE_IDX])
|
||||||
|
self.protections.global_stop(tmp)
|
||||||
|
|
||||||
# Move time one configured time_interval ahead.
|
# Move time one configured time_interval ahead.
|
||||||
tmp += timedelta(minutes=self.timeframe_min)
|
tmp += timedelta(minutes=self.timeframe_min)
|
||||||
|
Loading…
Reference in New Issue
Block a user