Trading & Orders
QuantConnect hỗ trợ đầy đủ các loại lệnh giao dịch và fill models mô phỏng cách lệnh được khớp.
Đặt Lệnh Cơ Bản
python
# Market Order — khớp ngay
self.MarketOrder("SPY", 100)
# Market Order theo % vốn
self.SetHoldings("SPY", 0.5) # 50% danh mục
# Limit Order — chỉ khớp ở giá limit hoặc tốt hơn
self.LimitOrder("SPY", 100, 450.50)
# Stop Market Order — kích hoạt khi giá chạm stop
self.StopMarketOrder("SPY", -100, 440.00) # Stop-loss
# Stop Limit Order — kết hợp stop + limit
self.StopLimitOrder("SPY", 100, 460.00, 461.00)Quản Lý Lệnh
text
transaction = self.Transactions
# Kiểm tra lệnh đang pending
pending = transaction.GetOpenOrders()
# Hủy lệnh
transaction.CancelOpenOrders("SPY")
# Cập nhật lệnh
ticket = self.LimitOrder("SPY", 100, 450.50)
ticket.Update(LimitOrderUpdateFields(452.00)) # Sửa giáFill Models
Mỗi loại tài sản có fill model mặc định khác nhau. Bạn có thể customize:
python
# Equity fill model (mặc định)
self.Securities["SPY"].SetFillModel(EquityFillModel())
# Custom fill model cho slippage
class MyFillModel(FillModel):
def MarketFill(self, asset, order):
fill = super().MarketFill(asset, order)
fill.FillPrice *= 1.001 # 0.1% slippage
return fill
self.Securities["BTCUSDT"].SetFillModel(MyFillModel())Order Events
Theo dõi trạng thái lệnh qua OnOrderEvent:
python
def OnOrderEvent(self, orderEvent: OrderEvent):
self.Debug(f"Lệnh {orderEvent.OrderId}: {orderEvent.Status}")
if orderEvent.Status == OrderStatus.Filled:
self.Debug(f"Fill giá: {orderEvent.FillPrice}, SL: {orderEvent.FillQuantity}")