Don't use arrow objects for backtesting
This commit is contained in:
parent
23278e52db
commit
2591a34db4
@ -9,7 +9,6 @@ from copy import deepcopy
|
|||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from typing import Any, Dict, List, NamedTuple, Optional, Tuple
|
from typing import Any, Dict, List, NamedTuple, Optional, Tuple
|
||||||
|
|
||||||
import arrow
|
|
||||||
from pandas import DataFrame
|
from pandas import DataFrame
|
||||||
|
|
||||||
from freqtrade.configuration import TimeRange, remove_credentials, validate_config_consistency
|
from freqtrade.configuration import TimeRange, remove_credentials, validate_config_consistency
|
||||||
@ -173,7 +172,7 @@ class Backtesting:
|
|||||||
|
|
||||||
# Convert from Pandas to list for performance reasons
|
# Convert from Pandas to list for performance reasons
|
||||||
# (Looping Pandas is slow.)
|
# (Looping Pandas is slow.)
|
||||||
data[pair] = [x for x in df_analyzed.itertuples()]
|
data[pair] = [x for x in df_analyzed.itertuples(index=False)]
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def _get_close_rate(self, sell_row, trade: Trade, sell: SellCheckTuple,
|
def _get_close_rate(self, sell_row, trade: Trade, sell: SellCheckTuple,
|
||||||
@ -271,7 +270,7 @@ class Backtesting:
|
|||||||
return trades
|
return trades
|
||||||
|
|
||||||
def backtest(self, processed: Dict, stake_amount: float,
|
def backtest(self, processed: Dict, stake_amount: float,
|
||||||
start_date: arrow.Arrow, end_date: arrow.Arrow,
|
start_date: datetime, end_date: datetime,
|
||||||
max_open_trades: int = 0, position_stacking: bool = False) -> DataFrame:
|
max_open_trades: int = 0, position_stacking: bool = False) -> DataFrame:
|
||||||
"""
|
"""
|
||||||
Implement backtesting functionality
|
Implement backtesting functionality
|
||||||
@ -321,7 +320,7 @@ class Backtesting:
|
|||||||
continue
|
continue
|
||||||
|
|
||||||
# Waits until the time-counter reaches the start of the data for this pair.
|
# Waits until the time-counter reaches the start of the data for this pair.
|
||||||
if row.date > tmp.datetime:
|
if row.date > tmp:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
indexes[pair] += 1
|
indexes[pair] += 1
|
||||||
@ -413,8 +412,8 @@ class Backtesting:
|
|||||||
results = self.backtest(
|
results = self.backtest(
|
||||||
processed=preprocessed,
|
processed=preprocessed,
|
||||||
stake_amount=self.config['stake_amount'],
|
stake_amount=self.config['stake_amount'],
|
||||||
start_date=min_date,
|
start_date=min_date.datetime,
|
||||||
end_date=max_date,
|
end_date=max_date.datetime,
|
||||||
max_open_trades=max_open_trades,
|
max_open_trades=max_open_trades,
|
||||||
position_stacking=position_stacking,
|
position_stacking=position_stacking,
|
||||||
)
|
)
|
||||||
|
@ -538,8 +538,8 @@ class Hyperopt:
|
|||||||
backtesting_results = self.backtesting.backtest(
|
backtesting_results = self.backtesting.backtest(
|
||||||
processed=processed,
|
processed=processed,
|
||||||
stake_amount=self.config['stake_amount'],
|
stake_amount=self.config['stake_amount'],
|
||||||
start_date=min_date,
|
start_date=min_date.datetime,
|
||||||
end_date=max_date,
|
end_date=max_date.datetime,
|
||||||
max_open_trades=self.max_open_trades,
|
max_open_trades=self.max_open_trades,
|
||||||
position_stacking=self.position_stacking,
|
position_stacking=self.position_stacking,
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user