Skip to content

Commit 73b4273

Browse files
committed
test: add tests for dry crossed stoploss
1 parent ca7234e commit 73b4273

File tree

1 file changed

+21
-13
lines changed

1 file changed

+21
-13
lines changed

tests/exchange/test_exchange.py

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1111,21 +1111,29 @@ def test_create_dry_run_order_fees(
11111111

11121112

11131113
@pytest.mark.parametrize(
1114-
"side,limit,offset,expected",
1114+
"side,limit,offset,is_stop,expected",
11151115
[
1116-
("buy", 46.0, 0.0, True),
1117-
("buy", 26.0, 0.0, True),
1118-
("buy", 25.55, 0.0, False),
1119-
("buy", 1, 0.0, False), # Very far away
1120-
("sell", 25.5, 0.0, True),
1121-
("sell", 50, 0.0, False), # Very far away
1122-
("sell", 25.58, 0.0, False),
1123-
("sell", 25.563, 0.01, False),
1124-
("sell", 5.563, 0.01, True),
1116+
("buy", 46.0, 0.0, False, True),
1117+
("buy", 46.0, 0.0, True, False),
1118+
("buy", 26.0, 0.0, False, True),
1119+
("buy", 26.0, 0.0, True, False), # Stop - didn't trigger
1120+
("buy", 25.55, 0.0, False, False),
1121+
("buy", 25.55, 0.0, True, True), # Stop - triggered
1122+
("buy", 1, 0.0, False, False), # Very far away
1123+
("buy", 1, 0.0, True, True), # Current price is above stop - triggered
1124+
("sell", 25.5, 0.0, False, True),
1125+
("sell", 50, 0.0, False, False), # Very far away
1126+
("sell", 25.58, 0.0, False, False),
1127+
("sell", 25.563, 0.01, False, False),
1128+
("sell", 25.563, 0.0, True, False), # stop order - Not triggered, best bid
1129+
("sell", 25.566, 0.0, True, True), # stop order - triggered
1130+
("sell", 26, 0.01, True, True), # stop order - triggered
1131+
("sell", 5.563, 0.01, False, True),
1132+
("sell", 5.563, 0.0, True, False), # stop order - not triggered
11251133
],
11261134
)
11271135
def test__dry_is_price_crossed_with_orderbook(
1128-
default_conf, mocker, order_book_l2_usd, side, limit, offset, expected
1136+
default_conf, mocker, order_book_l2_usd, side, limit, offset, is_stop, expected
11291137
):
11301138
# Best bid 25.563
11311139
# Best ask 25.566
@@ -1134,14 +1142,14 @@ def test__dry_is_price_crossed_with_orderbook(
11341142
exchange.fetch_l2_order_book = order_book_l2_usd
11351143
orderbook = order_book_l2_usd.return_value
11361144
result = exchange._dry_is_price_crossed(
1137-
"LTC/USDT", side, limit, orderbook=orderbook, offset=offset
1145+
"LTC/USDT", side, limit, orderbook=orderbook, offset=offset, is_stop=is_stop
11381146
)
11391147
assert result is expected
11401148
assert order_book_l2_usd.call_count == 0
11411149

11421150
# Test without passing orderbook
11431151
order_book_l2_usd.reset_mock()
1144-
result = exchange._dry_is_price_crossed("LTC/USDT", side, limit, offset=offset)
1152+
result = exchange._dry_is_price_crossed("LTC/USDT", side, limit, offset=offset, is_stop=is_stop)
11451153
assert result is expected
11461154

11471155

0 commit comments

Comments
 (0)