|
22 | 22 | from freqtrade.enums import CandleType, ExitType, RunMode |
23 | 23 | from freqtrade.exceptions import DependencyException, OperationalException |
24 | 24 | from freqtrade.exchange import timeframe_to_next_date, timeframe_to_prev_date |
| 25 | +from freqtrade.exchange.exchange_utils import DECIMAL_PLACES, TICK_SIZE |
25 | 26 | from freqtrade.optimize.backtest_caching import get_backtest_metadata_filename, get_strategy_run_id |
26 | 27 | from freqtrade.optimize.backtesting import Backtesting |
27 | 28 | from freqtrade.persistence import LocalTrade, Trade |
@@ -348,6 +349,29 @@ def test_data_to_dataframe_bt(default_conf, mocker, testdatadir) -> None: |
348 | 349 | assert processed["UNITTEST/BTC"].equals(processed2["UNITTEST/BTC"]) |
349 | 350 |
|
350 | 351 |
|
| 352 | +def test_get_pair_precision_bt(default_conf, mocker) -> None: |
| 353 | + patch_exchange(mocker) |
| 354 | + default_conf["timeframe"] = "30m" |
| 355 | + backtesting = Backtesting(default_conf) |
| 356 | + backtesting._set_strategy(backtesting.strategylist[0]) |
| 357 | + pair = "UNITTEST/BTC" |
| 358 | + backtesting.pairlists._whitelist = [pair] |
| 359 | + ex_mock = mocker.patch(f"{EXMS}.get_precision_price", return_value=1e-5) |
| 360 | + data, timerange = backtesting.load_bt_data() |
| 361 | + assert data |
| 362 | + |
| 363 | + assert backtesting.get_pair_precision(pair, dt_utc(2018, 1, 1)) == (1e-8, TICK_SIZE) |
| 364 | + assert ex_mock.call_count == 0 |
| 365 | + assert backtesting.get_pair_precision(pair, dt_utc(2017, 12, 15)) == (1e-8, TICK_SIZE) |
| 366 | + assert ex_mock.call_count == 0 |
| 367 | + |
| 368 | + # Fallback to exchange logic |
| 369 | + assert backtesting.get_pair_precision(pair, dt_utc(2017, 1, 15)) == (1e-5, DECIMAL_PLACES) |
| 370 | + assert ex_mock.call_count == 1 |
| 371 | + assert backtesting.get_pair_precision("ETH/BTC", dt_utc(2017, 1, 15)) == (1e-5, DECIMAL_PLACES) |
| 372 | + assert ex_mock.call_count == 2 |
| 373 | + |
| 374 | + |
351 | 375 | def test_backtest_abort(default_conf, mocker, testdatadir) -> None: |
352 | 376 | patch_exchange(mocker) |
353 | 377 | backtesting = Backtesting(default_conf) |
|
0 commit comments