Skip to content

Key Concepts

Trang này giới thiệu các khái niệm cốt lõi bạn cần hiểu trước khi viết thuật toán QuantConnect đầu tiên.

Initialize() — Điểm Khởi Đầu

Phương thức chạy một lần duy nhất khi thuật toán bắt đầu. Đây là nơi bạn cấu hình:

python
def Initialize(self):
    self.SetStartDate(2023, 1, 1)    # Ngày bắt đầu
    self.SetEndDate(2024, 1, 1)      # Ngày kết thúc (bỏ qua = đến hiện tại)
    self.SetCash(100000)             # Vốn ban đầu
    self.SetWarmUp(100)              # Pre-load dữ liệu cho indicators

    # Thêm tài sản
    self.AddEquity("SPY", Resolution.Minute)
    self.AddCrypto("BTCUSDT", Resolution.Minute)

OnData(Slice) — Xử Lý Dữ Liệu

Được gọi mỗi khi có dữ liệu mới (mỗi bar mới). Slice chứa tất cả dữ liệu tại thời điểm đó:

python
def OnData(self, data: Slice):
    if data.ContainsKey("SPY"):
        price = data["SPY"].Close
        # Logic giao dịch tại đây

Symbol

Symbol là mã định danh duy nhất cho mỗi tài sản. QuantConnect tự động tạo Symbol khi bạn gọi AddEquity, AddCrypto, v.v.

Resolution (Phân Giải Dữ Liệu)

ResolutionMô tảDùng khi
TickTừng giao dịch riêng lẻHigh-frequency, market microstructure
SecondBar 1 giâyCần độ chính xác cao
MinuteBar 1 phútIntraday (phổ biến nhất)
HourBar 1 giờSwing trading
DailyBar 1 ngàyPosition trading

SetWarmUp()

Trước khi backtest bắt đầu, indicators cần dữ liệu để "làm nóng". SetWarmUp chỉ định bao nhiêu bars dữ liệu cần pre-load:

python
# Warm-up 100 bars cho SMA 50 và SMA 200
self.SetWarmUp(200)  # Số bars tối đa indicator cần

# Hoặc dùng timedelta
self.SetWarmUp(timedelta(days=365))

Luôn kiểm tra self.IsWarmingUp trong OnData để tránh giao dịch trong giai đoạn warm-up.

Powered by dautu.tech