mirror of
https://github.com/freqtrade/freqtrade.git
synced 2026-05-04 23:52:14 +00:00
Merge pull request #9057 from freqtrade/feat/stoploss_adjust
"After order" stoploss adjustment
This commit is contained in:
@@ -77,18 +77,28 @@ def test_set_stop_loss_liquidation(fee):
|
||||
assert trade.liquidation_price == 0.11
|
||||
# Stoploss does not change from liquidation price
|
||||
assert trade.stop_loss == 1.8
|
||||
assert trade.stop_loss_pct == -0.2
|
||||
assert trade.initial_stop_loss == 1.8
|
||||
|
||||
# lower stop doesn't move stoploss
|
||||
trade.adjust_stop_loss(1.8, 0.2)
|
||||
assert trade.liquidation_price == 0.11
|
||||
assert trade.stop_loss == 1.8
|
||||
assert trade.stop_loss_pct == -0.2
|
||||
assert trade.initial_stop_loss == 1.8
|
||||
|
||||
# Lower stop with "allow_refresh" does move stoploss
|
||||
trade.adjust_stop_loss(1.8, 0.22, allow_refresh=True)
|
||||
assert trade.liquidation_price == 0.11
|
||||
assert trade.stop_loss == 1.602
|
||||
assert trade.stop_loss_pct == -0.22
|
||||
assert trade.initial_stop_loss == 1.8
|
||||
|
||||
# higher stop does move stoploss
|
||||
trade.adjust_stop_loss(2.1, 0.1)
|
||||
assert trade.liquidation_price == 0.11
|
||||
assert pytest.approx(trade.stop_loss) == 1.994999
|
||||
assert trade.stop_loss_pct == -0.1
|
||||
assert trade.initial_stop_loss == 1.8
|
||||
assert trade.stoploss_or_liquidation == trade.stop_loss
|
||||
|
||||
@@ -130,12 +140,21 @@ def test_set_stop_loss_liquidation(fee):
|
||||
assert trade.liquidation_price == 3.8
|
||||
# Stoploss does not change from liquidation price
|
||||
assert trade.stop_loss == 2.2
|
||||
assert trade.stop_loss_pct == -0.2
|
||||
assert trade.initial_stop_loss == 2.2
|
||||
|
||||
# Stop doesn't move stop higher
|
||||
trade.adjust_stop_loss(2.0, 0.3)
|
||||
assert trade.liquidation_price == 3.8
|
||||
assert trade.stop_loss == 2.2
|
||||
assert trade.stop_loss_pct == -0.2
|
||||
assert trade.initial_stop_loss == 2.2
|
||||
|
||||
# Stop does move stop higher with "allow_refresh"
|
||||
trade.adjust_stop_loss(2.0, 0.3, allow_refresh=True)
|
||||
assert trade.liquidation_price == 3.8
|
||||
assert trade.stop_loss == 2.3
|
||||
assert trade.stop_loss_pct == -0.3
|
||||
assert trade.initial_stop_loss == 2.2
|
||||
|
||||
# Stoploss does move lower
|
||||
@@ -143,6 +162,7 @@ def test_set_stop_loss_liquidation(fee):
|
||||
trade.adjust_stop_loss(1.8, 0.1)
|
||||
assert trade.liquidation_price == 1.5
|
||||
assert pytest.approx(trade.stop_loss) == 1.89
|
||||
assert trade.stop_loss_pct == -0.1
|
||||
assert trade.initial_stop_loss == 2.2
|
||||
assert trade.stoploss_or_liquidation == 1.5
|
||||
|
||||
|
||||
@@ -52,4 +52,5 @@ def test_strategy_test_v3(dataframe_1m, fee, is_short, side):
|
||||
side=side) is True
|
||||
|
||||
assert strategy.custom_stoploss(pair='ETH/BTC', trade=trade, current_time=datetime.now(),
|
||||
current_rate=20_000, current_profit=0.05) == strategy.stoploss
|
||||
current_rate=20_000, current_profit=0.05, after_fill=False
|
||||
) == strategy.stoploss
|
||||
|
||||
Reference in New Issue
Block a user