@@ -1164,7 +1164,11 @@ def create_dry_run_order(
11641164
11651165 if dry_order ["type" ] == "market" and not dry_order .get ("ft_order_type" ):
11661166 # Update market order pricing
1167- average = self .get_dry_market_fill_price (pair , side , amount , rate , orderbook )
1167+ slippage = 0.05
1168+ worst_rate = rate * ((1 + slippage ) if side == "buy" else (1 - slippage ))
1169+ average = self .get_dry_market_fill_price (
1170+ pair , side , amount , rate , worst_rate , orderbook
1171+ )
11681172 dry_order .update (
11691173 {
11701174 "average" : average ,
@@ -1204,7 +1208,13 @@ def add_dry_order_fee(
12041208 return dry_order
12051209
12061210 def get_dry_market_fill_price (
1207- self , pair : str , side : str , amount : float , rate : float , orderbook : OrderBook | None
1211+ self ,
1212+ pair : str ,
1213+ side : str ,
1214+ amount : float ,
1215+ rate : float ,
1216+ worst_rate : float ,
1217+ orderbook : OrderBook | None ,
12081218 ) -> float :
12091219 """
12101220 Get the market order fill price based on orderbook interpolation
@@ -1213,8 +1223,6 @@ def get_dry_market_fill_price(
12131223 if not orderbook :
12141224 orderbook = self .fetch_l2_order_book (pair , 20 )
12151225 ob_type : OBLiteral = "asks" if side == "buy" else "bids"
1216- slippage = 0.05
1217- max_slippage_val = rate * ((1 + slippage ) if side == "buy" else (1 - slippage ))
12181226
12191227 remaining_amount = amount
12201228 filled_value = 0.0
@@ -1238,11 +1246,10 @@ def get_dry_market_fill_price(
12381246 forecast_avg_filled_price = max (filled_value , 0 ) / amount
12391247 # Limit max. slippage to specified value
12401248 if side == "buy" :
1241- forecast_avg_filled_price = min (forecast_avg_filled_price , max_slippage_val )
1249+ forecast_avg_filled_price = min (forecast_avg_filled_price , worst_rate )
12421250
12431251 else :
1244- forecast_avg_filled_price = max (forecast_avg_filled_price , max_slippage_val )
1245-
1252+ forecast_avg_filled_price = max (forecast_avg_filled_price , worst_rate )
12461253 return self .price_to_precision (pair , forecast_avg_filled_price )
12471254
12481255 return rate
0 commit comments