Faithful translation of the open-source Hummingbot V2 directional controller 'MACDBBV1Controller' (controllers/directional_trading/macd_bb_v1.py, commit 9af100d, Apache-2.0, author: hummingbot — full credit to them). Any performance it claims is unverified; our fee-inclusive backtest decides. The controller is a two-sided reversal signal: go LONG when price closes below the lower Bollinger band (BBP < 0) while MACD is still negative but its histogram has turned positive (downside momentum fading); go SHORT when price closes above the upper band (BBP > 1) while MACD is still positive but its histogram has turned negative. It has NO signal-based exit: every position is a Hummingbot PositionExecutor closed only by the triple barrier inherited from DirectionalTradingControllerConfigBase defaults (take_profit 0.02, stop_loss 0.03, time_limit 2700 s, trailing_stop activation 0.015 / delta 0.003), with max_executors_per_side=2 and cooldown_time=300 s. INSTRUMENT/VENUE: the base config's default market is connector 'binance_perpetual', trading_pair 'WLD-USDT', so the port runs on WLDUSDT.BINANCE (Binance USD-M perp, catalog bar dir WLDUSDT.BINANCE-3-MINUTE-LAST-EXTERNAL, history 2023-07-24 to now, ~3.2 years) at the source's default interval '3m' — no timeframe substitution needed. That also keeps it off BTC (the concentrated series) and fills the under-represented long-short and short-horizon (1m-15m) buckets. Bar type: WLDUSDT.BINANCE-3-MINUTE-LAST-EXTERNAL. SIZING: Hummingbot's per-executor amount is total_amount_quote / max_executors_per_side as fixed quote notional, and its leverage=20 only sets margin, not notional. On our $100k account this maps to per-executor notional = executor_notional_pct x equity with executor_notional_pct = 0.5 (total_amount_quote = 100% of equity split over 2 executors per side), so max same-side exposure = 1.0x equity. config.leverage = 1.0 and the `leverage` parameter mirrors config.leverage.