Order Heartbeat
Order WS messages must be drained regularly to keep broker state up to date.
Recommended Pattern
Call broker.dispatch_order_notifications() on a timer even when market data is quiet.
import backtrader as bt
class HeartbeatStrategy(bt.Strategy):
def __init__(self) -> None:
self.add_timer(
when=bt.Timer.SESSION_START,
interval=10.0,
repeat=True,
)
def notify_timer(self, timer, when, *args, **kwargs) -> None:
self.broker.dispatch_order_notifications(max_messages=200)
What NOT To Do
- Do not wait for market ticks to process orders if your strategy is order-heavy.
Scenario Example
Scenario: Orders appear stuck in Submitted status. - Ensure the heartbeat is running. - Confirm the Order WS is connected and draining.