"""Mirror the environment's idle penalty behaviour."""
idle_penalty_scale = _get_param_float(params, "idle_penalty_scale", 0.75)
idle_penalty_power = _get_param_float(params, "idle_penalty_power", 1.0)
- max_trade_duration_candles = params.get("max_trade_duration_candles", 128)
- max_idle_duration_candles = params.get("max_idle_duration_candles")
+ max_trade_duration_candles = params.get("max_trade_duration_candles")
try:
- max_idle_duration = (
- int(max_idle_duration_candles)
- if max_idle_duration_candles is not None
- else 2 * max_trade_duration_candles
- )
+ if max_trade_duration_candles is not None:
+ max_trade_duration_candles = int(max_trade_duration_candles)
+ else:
+ max_trade_duration_candles = int(context.max_trade_duration)
except (TypeError, ValueError):
- max_idle_duration = max_trade_duration_candles
- if max_idle_duration <= 0:
+ max_trade_duration_candles = int(context.max_trade_duration)
+
+ max_idle_duration_candles = params.get("max_idle_duration_candles")
+ if max_idle_duration_candles is None:
max_idle_duration = 2 * max_trade_duration_candles
+ else:
+ try:
+ max_idle_duration = int(max_idle_duration_candles)
+ except (TypeError, ValueError):
+ max_idle_duration = 2 * max_trade_duration_candles
+ if max_idle_duration <= 0:
+ max_idle_duration = 2 * max_trade_duration_candles
+
idle_duration_ratio = context.idle_duration / max(1, max_idle_duration)
return -idle_factor * idle_penalty_scale * idle_duration_ratio**idle_penalty_power