Skip to content

Snapshot dòng vốn

Mô tả API

Truy vấn snapshot dòng vốn của token tại một thời điểm cụ thể. Phản hồi gồm dữ liệu snapshot trên nhiều chu kỳ thống kê (5 phút, 15 phút, 30 phút, … 24 giờ) tại thời điểm đó.

Quy tắc lưu trữ dữ liệu (rất quan trọng)

Hệ thống lưu 100 mốc thời gian gần nhất riêng cho từng chu kỳ thống kê (ví dụ 5 phút, 15 phút, 24 giờ, v.v.).

  • Chu kỳ 5 phút: 100 mốc tròn 5 phút gần nhất (khoảng 8,33 giờ)
  • Chu kỳ 24 giờ: 100 ngày gần nhất (mỗi ngày một mốc)
  • Các chu kỳ khác áp dụng tương tự.

Ý nghĩa:

  • Nếu thời điểm truy vấn vượt ngoài phạm vi 100 mốc của chu kỳ đó (ví dụ dùng chu kỳ 5 phút để hỏi mốc 9:50 cách đây hơn ~8,33 giờ, hoặc ngày cách đây hơn 100 ngày trên chu kỳ ngày), API không thể trả về dữ liệu chính xác.
  • Khi đó hệ thống trả về mốc hợp lệ gần nhất trước thời điểm đó (ví dụ không có 9:50 thì trả 9:45) và không ép trả về tổng lũy kế 08:00 cùng ngày.

Vì sao thiết kế như vậy?
Để đảm bảo hiệu năng và khả năng truy vết lịch sử, chúng tôi chỉ giữ chi tiết 100 mốc gần nhất cho mỗi chu kỳ. Nếu cần dữ liệu xa hơn, hãy dùng chu kỳ lớn hơn (ví dụ dữ liệu theo ngày).

URL yêu cầu

  • Phương thức: POST
  • Đường dẫn: /open/v1/trade/getCoinTradeSnapshot

Điểm tín phí

  • Điểm tín phí mỗi lần gọi: 3

Điều kiện tiên quyết

Lấy vsTokenId

Trường hợpMô tảCách lấy
Đã có vsTokenIdDùng id đã cache, không cần truy vấn lạiTự động từ ngữ cảnh
Chưa có vsTokenIdGọi POST /vs-token/listGọi API tiên quyết

Tham số yêu cầu

Tham số gửi trong body dạng JSON.

Tên tham sốKiểuBắt buộcMô tả
vsTokenIdintegerID token
datelongNgày chỉ định (mốc thời gian ms)

Trường phản hồi

Chỉ liệt kê cấu trúc trong đối tượng data:

TrườngKiểuKiểu thực tế trả vềMô tả
updateTimeintegerlongThời điểm cập nhật (ms)
vsTokenIdintegerstringID token
symbolstringstringKý hiệu
namestringstringTên
hasSpotGoodsbooleanbooleanCó dữ liệu giao ngay
spotMaxInflownumberstringTích lũy dòng vốn chủ lực (giao ngay)
spotGoodsListarrayarrayDữ liệu giao ngay
    timeRangestringstringKhung thời gian
    timeParticleEnumintegerintegerĐộ mịn thống kê
    tradeInflownumberstringDòng vào ròng (USD)
    tradeAmountnumberstringKhối lượng (USD)
hasContractbooleanbooleanCó dữ liệu hợp đồng
contractMaxInflownumberstringTích lũy dòng vốn chủ lực (hợp đồng)
contractListarrayarrayDữ liệu hợp đồng
    timeRangestringstringKhung thời gian
    timeParticleEnumintegerintegerĐộ mịn thống kê
    tradeInflownumberstringDòng vào ròng (USD)
    tradeAmountnumberstringKhối lượng (USD)

Ý nghĩa nghiệp vụ

TrườngÝ nghĩaGợi ý
spotMaxInflowTích lũy chủ lực giao ngayDòng chủ lực = dòng vào ròng lớn nhất trên mọi cửa sổ giao ngay; tích lũy = chuỗi theo từng cửa sổ
contractMaxInflowTích lũy chủ lực hợp đồngDòng chủ lực = dòng vào ròng lớn nhất trên mọi cửa sổ giao ngay; tích lũy = chuỗi theo từng cửa sổ
dateNgày snapshotMốc lịch sử truy vấn; bước tối thiểu 5 phút

Ví dụ yêu cầu

json
{
  "vsTokenId": 1,
  // ID token
  "date": 1773654600000
  // Ngày chỉ định (mốc thời gian)
}

Ví dụ cURL (Linux/macOS)

bash
curl --location --request POST 'http://${host}/api/open/v1/trade/getCoinTradeSnapshot' \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: xxxxx' \
--header 'X-TIMESTAMP: xxxxx' \
--header 'X-SIGN: xxxxx' \
--header 'Accept: */*' \
--data-raw '{
    "vsTokenId": 1,
    "date": 1773654600000
}'

Ví dụ cURL (Windows CMD)

cmd
curl --location --request POST "http://${host}/api/open/v1/trade/getCoinTradeSnapshot" ^
--header "Content-Type: application/json" ^
--header "X-API-KEY: xxxxx" ^
--header "X-TIMESTAMP: xxxxx" ^
--header "X-SIGN: xxxxx" ^
--header "Accept: */*" ^
--data-raw "{    \"vsTokenId\": 1,    \"date\": 1773654600000}"

Ví dụ phản hồi thành công

json
{
  "code": 200,
  "message": "success",
  "data": {
    "updateTime": 1773654600000,
    // Thời điểm cập nhật
    "vsTokenId": "1",
    // ID token
    "symbol": "BTC",
    // Ký hiệu
    "name": "Bitcoin",
    // Tên
    "hasSpotGoods": true,
    // Có dữ liệu giao ngay
    "spotMaxInflow": "173206257.989364",
    // Tích lũy dòng vốn chủ lực (giao ngay)
    "spotGoodsList": [
      {
        "timeRange": "m5",
        // Khung thời gian
        "timeParticleEnum": 5,
        // Độ mịn thống kê
        "tradeInflow": "973669.0454980996",
        // Dòng vào ròng (USD)
        "tradeAmount": "4176136.897351299"
        // Khối lượng (USD)
      },
      {
        "timeRange": "m15",
        "timeParticleEnum": 15,
        "tradeInflow": "1531287.2033347988",
        "tradeAmount": "11822696.069185598"
      },
      {
        "timeRange": "m30",
        "timeParticleEnum": 30,
        "tradeInflow": "2668474.962980899",
        "tradeAmount": "25890934.620040294"
      }
      // ... bỏ qua thêm dòng
    ],
    "hasContract": true,
    // Có dữ liệu hợp đồng
    "contractMaxInflow": "5115857220.793299",
    // Tích lũy dòng vốn chủ lực (hợp đồng)
    "contractList": [
      {
        "timeRange": "m5",
        // Khung thời gian
        "timeParticleEnum": 5,
        // Độ mịn thống kê
        "tradeInflow": "7412113.461600001",
        // Dòng vào ròng (USD)
        "tradeAmount": "33097685.519799992"
        // Khối lượng (USD)
      },
      {
        "timeRange": "m15",
        "timeParticleEnum": 15,
        "tradeInflow": "5682104.7779",
        "tradeAmount": "69809754.7091"
      },
      {
        "timeRange": "m30",
        "timeParticleEnum": 30,
        "tradeInflow": "-6355722.267499994",
        "tradeAmount": "183233913.60549998"
      }
      // ... bỏ qua thêm dòng
    ]
  },
  "requestId": "xxx-xxx-xxx"
}

Lưu ý quan trọng

  1. Phạm vi lưu trữ

    • Mỗi chu kỳ chỉ giữ 100 mốc gần nhất.
    • Truy vấn ngoài phạm vi (ví dụ quá 100 ngày trên chu kỳ ngày), hệ thống trả về mốc hợp lệ gần nhất trước đó.
  2. Căn chỉnh thời gian

    date được làm tròn xuống mốc 5 phút gần nhất (ví dụ 15:16 → 15:15).

  3. Múi giờ

    Mọi thời gian theo UTC+8.

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

H: Tôi truy vấn 1/4 lúc 18:16, vì sao nhận 1/4 lúc 18:15?

Đ: Thời gian căn theo bội 5 phút (18:16 → 18:15). Nếu 18:15 còn trong phạm vi lưu trữ, mốc đó được trả về.

H: Truy vấn dữ liệu 100 ngày trước thì kết quả là gì?

Đ: Nếu mốc vượt ngoài 100 điểm của chu kỳ, hệ thống trả về mốc hợp lệ gần nhất trước thời điểm đó. Ví dụ chu kỳ 5 phút chỉ giữ ~8,33 giờ gần nhất; truy vấn sớm hơn sẽ trả về mốc tại ranh giới 8,33 giờ; chu kỳ 24 giờ giữ 100 ngày — ngày thứ 101 có thể trả rỗng.

H: Tại sao truy vấn 1/4 18:16 lại nhận 08:00 cùng ngày?

Đ: Nếu mốc nằm ngoài 100 điểm của chu kỳ, hệ thống trả mốc hợp lệ gần nhất trước đó, trong phạm vi còn lại của ngày đó.