stable/tests/optimize/conftest.py

72 lines
2.0 KiB
Python
Raw Normal View History

2020-10-28 13:36:19 +00:00
from copy import deepcopy
from datetime import datetime
from pathlib import Path
import pandas as pd
import pytest
2022-03-25 07:36:03 +00:00
from freqtrade.enums import ExitType, RunMode
2022-09-26 08:11:00 +00:00
from freqtrade.optimize.backtesting import Backtesting
2020-10-28 13:36:19 +00:00
from freqtrade.optimize.hyperopt import Hyperopt
from tests.conftest import patch_exchange
@pytest.fixture(scope='function')
def hyperopt_conf(default_conf):
hyperconf = deepcopy(default_conf)
hyperconf.update({
2021-03-29 17:27:19 +00:00
'datadir': Path(default_conf['datadir']),
2021-04-24 05:18:35 +00:00
'runmode': RunMode.HYPEROPT,
'strategy': 'HyperoptableStrategy',
2020-10-28 13:36:19 +00:00
'hyperopt_loss': 'ShortTradeDurHyperOptLoss',
'hyperopt_path': str(Path(__file__).parent / 'hyperopts'),
'epochs': 1,
'timerange': None,
'spaces': ['default'],
'hyperopt_jobs': 1,
2021-03-29 17:27:19 +00:00
'hyperopt_min_trades': 1,
2020-10-28 13:36:19 +00:00
})
return hyperconf
2022-09-26 08:11:00 +00:00
@pytest.fixture(autouse=True)
def backtesting_cleanup() -> None:
yield None
Backtesting.cleanup()
2020-10-28 13:36:19 +00:00
@pytest.fixture(scope='function')
def hyperopt(hyperopt_conf, mocker):
patch_exchange(mocker)
return Hyperopt(hyperopt_conf)
@pytest.fixture(scope='function')
def hyperopt_results():
return pd.DataFrame(
{
'pair': ['ETH/USDT', 'ETH/USDT', 'ETH/USDT', 'ETH/USDT'],
2023-01-08 09:08:54 +00:00
'profit_ratio': [-0.1, 0.2, -0.12, 0.3],
'profit_abs': [-0.2, 0.4, -0.21, 0.6],
'trade_duration': [10, 30, 10, 10],
'amount': [0.1, 0.1, 0.1, 0.1],
2022-04-03 08:44:21 +00:00
'exit_reason': [ExitType.STOP_LOSS, ExitType.ROI, ExitType.STOP_LOSS, ExitType.ROI],
'open_date':
[
datetime(2019, 1, 1, 9, 15, 0),
2021-10-02 13:36:51 +00:00
datetime(2019, 1, 2, 8, 55, 0),
datetime(2019, 1, 3, 9, 15, 0),
datetime(2019, 1, 4, 9, 15, 0),
],
2020-10-28 13:36:19 +00:00
'close_date':
[
datetime(2019, 1, 1, 9, 25, 0),
2021-10-02 13:36:51 +00:00
datetime(2019, 1, 2, 9, 25, 0),
datetime(2019, 1, 3, 9, 25, 0),
datetime(2019, 1, 4, 9, 25, 0),
],
2020-10-28 13:36:19 +00:00
}
)