Mọi bot đều cần dữ liệu trước khi quyết định bất cứ điều gì. Trong Deriv API với Python, yêu cầu ticks_history là trái tim của việc đó: nó cung cấp lịch sử giá của một tài sản — ở định dạng ticks hoặc candles (OHLC) — và cũng cho phép đăng ký nhận cập nhật trực tiếp. Hướng dẫn này là một tài liệu tham khảo trực tiếp: cú pháp, các trường quan trọng và code sẵn sàng để lấy lịch sử và nhận ticks theo thời gian thực. Trading ngắn hạn cực kỳ rủi ro — hãy kiểm thử mọi thứ trên tài khoản demo trước.

Muốn một bot Deriv sẵn sàng, đã thu thập dữ liệu, tính chỉ báo và quản lý rủi ro? Hãy xem giải pháp bằng Python và kiểm thử trên tài khoản demo.

Xem bot Deriv bằng Python →

Kết nối

Deriv dùng WebSocket với thông điệp JSON. Để chỉ đọc dữ liệu thị trường bạn thậm chí không cần token (nhưng để giao dịch thì có):

import json, asyncio, websockets APP_ID = “1089” # dùng app_id của bạn URL = f”wss://ws.derivws.com/websockets/v3?app_id={APP_ID}” async def send(ws, payload): await ws.send(json.dumps(payload)) return json.loads(await ws.recv())

ticks_history ở định dạng ticks

Để lấy N giá (ticks) gần nhất của một tài sản:

req = { “ticks_history”: “R_100”, “end”: “latest”, “count”: 10, “style”: “ticks” } resp = await send(ws, req) hist = resp[“history”] print(“Giá:”, hist[“prices”]) # danh sách giá print(“Thời gian:”, hist[“times”]) # danh sách timestamp (epoch)
Các trường then chốt: count xác định số điểm muốn lấy lùi lại; end nhận “latest” hoặc một timestamp; bạn cũng có thể dùng start cho một khoảng thời gian. Ở kiểu ticks, phản hồi trả về trong history.priceshistory.times (hai danh sách song song).

ticks_history ở định dạng candles (OHLC)

Để lấy nến (open/high/low/close), dùng style: "candles" và đặt granularity theo giây (60 = 1 phút, 300 = 5 phút, 3600 = 1 giờ):

req = { “ticks_history”: “R_100”, “end”: “latest”, “count”: 50, “style”: “candles”, “granularity”: 60 # 1 phút } resp = await send(ws, req) candles = resp[“candles”] ultima = candles[-1] print(“Open :”, ultima[“open”]) print(“High :”, ultima[“high”]) print(“Low :”, ultima[“low”]) print(“Close:”, ultima[“close”]) print(“Epoch:”, ultima[“epoch”])

Phản hồi trả về trong candles, một danh sách các đối tượng với open, high, low, closeepoch — sẵn sàng để nạp vào các chỉ báo (đường trung bình, RSI, ATR).

Ticks trực tiếp (subscribe)

Để nhận mỗi tick mới theo thời gian thực, thêm subscribe: 1 và tiếp tục đọc socket:

await ws.send(json.dumps({“ticks”: “R_100”, “subscribe”: 1})) while True: msg = json.loads(await ws.recv()) tick = msg.get(“tick”) if tick: print(tick[“epoch”], “->”, tick[“quote”])
Hủy đăng ký: hãy lưu subscription.id được trả về và gửi {"forget": "<id>"} để dừng nhận. Để dừng tất cả cùng lúc, dùng {"forget_all": "ticks"}.

Mẹo: kết hợp lịch sử + trực tiếp

Cách làm chuyên nghiệp rất đơn giản: lấy một khối candles để “làm nóng” các chỉ báo của bạn (warm-up), rồi từ đó cập nhật bằng ticks trực tiếp. Như vậy RSI/ATR của bạn đã được tính đúng ngay từ đầu thay vì phải chờ hàng chục thanh nến.

Câu hỏi thường gặp

Có cần token để đọc dữ liệu không?
Với ticks_historyticks thị trường thì thường không. Token cần cho việc giao dịch (proposal/buy) và cho dữ liệu tài khoản.

Có những giá trị granularity nào?
Các giá trị theo giây như 60, 120, 300, 600, 900, 1800, 3600, 7200, 14400, 28800 và 86400 (1 ngày), cùng nhiều giá trị khác.

Giới hạn của count là bao nhiêu?
Có một mức trần mỗi yêu cầu (cỡ hàng nghìn). Với lịch sử dài, hãy phân trang bằng startend.

Lấy danh sách tài sản thế nào?
Dùng yêu cầu active_symbols để khám phá các symbol khả dụng cho tài khoản/khu vực của bạn.

Lưu ý: trading các hợp đồng ngắn hạn và quyền chọn cực kỳ rủi ro và đa số nhà giao dịch cá nhân thua lỗ. Nội dung này mang tính giáo dục và kỹ thuật, không cấu thành khuyến nghị đầu tư, chào mời hay tư vấn tài chính. Kết quả quá khứ không đảm bảo kết quả tương lai. Hãy luôn kiểm thử trên tài khoản demo trước khi mạo hiểm vốn thật và đừng bao giờ đầu tư nhiều hơn số tiền bạn có thể mất.