Skip to content

Commit f63484d

Browse files
committed
feat: add dry-limit check for stoploss orders
1 parent 3543e96 commit f63484d

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

freqtrade/exchange/exchange.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1288,6 +1288,38 @@ def check_dry_limit_order_filled(
12881288
"""
12891289
Check dry-run limit order fill and update fee (if it filled).
12901290
"""
1291+
if order["status"] != "closed" and order.get("ft_order_type") == "stoploss":
1292+
pair = order["symbol"]
1293+
if not orderbook and self.exchange_has("fetchL2OrderBook"):
1294+
orderbook = self.fetch_l2_order_book(pair, 20)
1295+
price = order[self._ft_has["stop_price_prop"]]
1296+
crossed = self._dry_is_price_crossed(
1297+
pair, order["side"], price, orderbook, is_stop=True
1298+
)
1299+
if crossed:
1300+
average = self.get_dry_market_fill_price(
1301+
pair,
1302+
order["side"],
1303+
order["amount"],
1304+
price,
1305+
worst_rate=order["price"],
1306+
orderbook=orderbook,
1307+
)
1308+
order.update(
1309+
{
1310+
"status": "closed",
1311+
"filled": order["amount"],
1312+
"remaining": 0,
1313+
"average": average,
1314+
"cost": order["amount"] * average,
1315+
}
1316+
)
1317+
self.add_dry_order_fee(
1318+
pair,
1319+
order,
1320+
"taker" if immediate else "maker",
1321+
)
1322+
return order
12911323
if (
12921324
order["status"] != "closed"
12931325
and order["type"] in ["limit"]

0 commit comments

Comments
 (0)