Appendix C: Code Patterns Cheat SheetReusable code patterns for common trading workflows
1. Startup and Basic Subscriptions
def on_start(self):
# Instantiate InstrumentId object
self.instrument_id = InstrumentId.from_str("BTCUSDT.BINANCE")
# Subscribe to 1-minute bars
self.subscribe_bars(BarType.from_str("BTCUSDT.BINANCE-1-MINUTE-LAST"))
# Initialize technical indicators
self.ema = ExponentialMovingAverage(period=20)
2. Checking Positions and Submitting Market Orders
def handle_signal(self):
if self.portfolio.is_flat(self.instrument_id):
order = self.order_factory.market(
instrument_id=self.instrument_id,
order_side=OrderSide.BUY,
quantity=Quantity.from_str("0.01"),
)
self.submit_order(order)
3. Setting Stop-Loss Limit Orders (OCO Mode)
def on_position_opened(self, event):
# Automatically route stop-loss and take-profit orders when a new position is opened
# Note: Typically implemented using OCO (One-Cancels-the-Other) or Bracket Orders
pass
4. Iterating Over Open Orders
def cancel_stale_orders(self):
open_orders = self.cache.orders_open(self.instrument_id)
for order in open_orders:
if order.duration_seconds > 60:
self.cancel_order(order)
5. Custom Event Logging
def on_order_denied(self, event):
self.log.error(f"Order rejected! Reason: {event.reason}")