mirror of
https://github.com/freqtrade/freqtrade.git
synced 2025-11-29 08:33:07 +00:00
Improve backtest test
This commit is contained in:
@@ -9,7 +9,7 @@ import pytest
|
|||||||
from freqtrade.configuration import TimeRange
|
from freqtrade.configuration import TimeRange
|
||||||
from freqtrade.data import history
|
from freqtrade.data import history
|
||||||
from freqtrade.data.history import get_timerange
|
from freqtrade.data.history import get_timerange
|
||||||
from freqtrade.enums import ExitType, TradingMode
|
from freqtrade.enums import ExitType
|
||||||
from freqtrade.optimize.backtesting import Backtesting
|
from freqtrade.optimize.backtesting import Backtesting
|
||||||
from freqtrade.util.datetime_helpers import dt_utc
|
from freqtrade.util.datetime_helpers import dt_utc
|
||||||
from tests.conftest import EXMS, patch_exchange
|
from tests.conftest import EXMS, patch_exchange
|
||||||
@@ -103,18 +103,21 @@ def test_backtest_position_adjustment_detailed(default_conf, fee, mocker, levera
|
|||||||
mocker.patch(f"{EXMS}.get_min_pair_stake_amount", return_value=10)
|
mocker.patch(f"{EXMS}.get_min_pair_stake_amount", return_value=10)
|
||||||
mocker.patch(f"{EXMS}.get_max_pair_stake_amount", return_value=float('inf'))
|
mocker.patch(f"{EXMS}.get_max_pair_stake_amount", return_value=float('inf'))
|
||||||
mocker.patch(f"{EXMS}.get_max_leverage", return_value=10)
|
mocker.patch(f"{EXMS}.get_max_leverage", return_value=10)
|
||||||
|
mocker.patch(f"{EXMS}.get_maintenance_ratio_and_amt", return_value=(0.1, 0.1))
|
||||||
|
|
||||||
patch_exchange(mocker)
|
patch_exchange(mocker)
|
||||||
default_conf.update({
|
default_conf.update({
|
||||||
"stake_amount": 100.0,
|
"stake_amount": 100.0,
|
||||||
"dry_run_wallet": 1000.0,
|
"dry_run_wallet": 1000.0,
|
||||||
"strategy": "StrategyTestV3",
|
"strategy": "StrategyTestV3",
|
||||||
|
"trading_mode": "futures",
|
||||||
|
"margin_mode": "isolated",
|
||||||
})
|
})
|
||||||
|
default_conf['pairlists'] = [{'method': 'StaticPairList', 'allow_inactive': True}]
|
||||||
backtesting = Backtesting(default_conf)
|
backtesting = Backtesting(default_conf)
|
||||||
backtesting.trading_mode = TradingMode.FUTURES
|
|
||||||
backtesting._can_short = True
|
backtesting._can_short = True
|
||||||
backtesting._set_strategy(backtesting.strategylist[0])
|
backtesting._set_strategy(backtesting.strategylist[0])
|
||||||
pair = 'XRP/USDT'
|
pair = 'XRP/USDT:USDT'
|
||||||
row = [
|
row = [
|
||||||
pd.Timestamp(year=2020, month=1, day=1, hour=5, minute=0),
|
pd.Timestamp(year=2020, month=1, day=1, hour=5, minute=0),
|
||||||
2.1, # Open
|
2.1, # Open
|
||||||
@@ -130,7 +133,6 @@ def test_backtest_position_adjustment_detailed(default_conf, fee, mocker, levera
|
|||||||
]
|
]
|
||||||
backtesting.strategy.leverage = MagicMock(return_value=leverage)
|
backtesting.strategy.leverage = MagicMock(return_value=leverage)
|
||||||
trade = backtesting._enter_trade(pair, row=row, direction='long')
|
trade = backtesting._enter_trade(pair, row=row, direction='long')
|
||||||
trade.orders[0].close_bt_order(row[0], trade)
|
|
||||||
assert trade
|
assert trade
|
||||||
assert pytest.approx(trade.stake_amount) == 100.0
|
assert pytest.approx(trade.stake_amount) == 100.0
|
||||||
assert pytest.approx(trade.amount) == 47.61904762 * leverage
|
assert pytest.approx(trade.amount) == 47.61904762 * leverage
|
||||||
|
|||||||
Reference in New Issue
Block a user