Skip to content

Commit 53ba3ce

Browse files
committed
test: add test for backtest "get price precision" logic
1 parent 081fa22 commit 53ba3ce

File tree

1 file changed

+24
-0
lines changed

1 file changed

+24
-0
lines changed

tests/optimize/test_backtesting.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from freqtrade.enums import CandleType, ExitType, RunMode
2323
from freqtrade.exceptions import DependencyException, OperationalException
2424
from freqtrade.exchange import timeframe_to_next_date, timeframe_to_prev_date
25+
from freqtrade.exchange.exchange_utils import DECIMAL_PLACES, TICK_SIZE
2526
from freqtrade.optimize.backtest_caching import get_backtest_metadata_filename, get_strategy_run_id
2627
from freqtrade.optimize.backtesting import Backtesting
2728
from freqtrade.persistence import LocalTrade, Trade
@@ -348,6 +349,29 @@ def test_data_to_dataframe_bt(default_conf, mocker, testdatadir) -> None:
348349
assert processed["UNITTEST/BTC"].equals(processed2["UNITTEST/BTC"])
349350

350351

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+
351375
def test_backtest_abort(default_conf, mocker, testdatadir) -> None:
352376
patch_exchange(mocker)
353377
backtesting = Backtesting(default_conf)

0 commit comments

Comments
 (0)