Skip to content

Đăng ký SSE phân tích thị trường mới

URL kết nối: https://stream.valuescan.ai/stream/market/analysis/subscribe


1. Tổng quan

Phân tích thị trường tổng thể là kết quả ValueAgent tổng hợp đa chiều dữ liệu về diễn biến BTC/ETH/SOL. API này là đăng ký SSE phiên bản enum mới: mỗi 5 phút tạo kết quả phân tích mới rồi đẩy. Trường signal dùng thuật ngữ giao dịch quốc tế (LONG / SHORT / SIDEWAYS), kèm tổng hợp phân bố tín hiệu trong ngày (h24Summary) và xác minh tín hiệu (verdict).

Khác biệt so với /stream/market/subscribe cũ:

So sánhĐăng ký phân tích thị trường cũĐăng ký SSE phân tích thị trường mới (API này)
URL đăng ký/stream/market/subscribe/stream/market/analysis/subscribe
Tên sự kiệnmarketmarket-analysis
contentVăn bản phân tích thị trường thuầnChuỗi JSON có cấu trúc, cần parse lần hai
signalKhông trả về riêngLONG / SHORT / SIDEWAYS
Trường mở rộngKhông có trường mở rộng có cấu trúcTrả về h24Summary, verdict, verdictDesc và các trường khác
Cách cập nhậtĐẩy khi thị trường thay đổiĐẩy sau khi tạo kết quả phân tích mới mỗi 5 phút

signal biểu thị hướng được xác định trong chu kỳ phân tích 5 phút hiện tại. Mỗi chu kỳ trực tiếp trả về LONG, SHORT hoặc SIDEWAYS. Nếu hướng giống chu kỳ trước, vẫn trả về giá trị enum cơ bản tương ứng; không sử dụng LONG_CONTINUE, SHORT_CONTINUE hoặc SIDEWAYS_CONTINUE.


2. URL đăng ký

GET https://stream.valuescan.ai/stream/market/analysis/subscribe

Tham số xác thực (Query String):

Tham sốKiểuBắt buộcMô tả
apiKeystringValueScan Access Key
signstringChữ ký HMAC-SHA256
timestamplongUnix timestamp tính bằng mili giây
noncestringChuỗi ngẫu nhiên (chống replay)

Thuật toán ký:

sign = HMAC-SHA256(SK, timestampMs + nonce)

Credits

  • Chi phí: 50 credits mỗi 30 phút

3. Định dạng sự kiện SSE

Kết nối thành công

event: connected
data: subscribed

Heartbeat (duy trì kết nối)

: heartbeat

event: heartbeat
data: ping

Máy chủ gửi heartbeat mỗi 20 giây.

Push phân tích thị trường

event: market-analysis
data: {"ts":1775604300144,"uniqueId":"大盘分析_20260408103000","content":"{\"vsTokenId\":\"1\",\"symbol\":\"BTC\",\"signal\":\"SIDEWAYS\",\"price\":\"80573.75\",\"klineDiff\":\"-0.00298373\",\"supports\":[\"80434.275\",\"79980.475\"],\"resistances\":[\"80776.78\",\"81208.86\"],\"analysis\":\"📊 BTC 日内主力资金趋势分析(ValueScan)...\",\"analysisTime\":1778837430000,\"verdict\":0,\"verdictDesc\":\"待验证\",\"h24Summary\":{\"buyCount\":12,\"sellCount\":5,\"holdCount\":7,\"total\":24,\"buyRatio\":50.0,\"sellRatio\":20.8,\"holdRatio\":29.2,\"conclusion\":\"LONG_BIASED_SIDEWAYS\"}}"}

Các trường payload sự kiện market-analysis:

TrườngKiểuMô tả
tslongThời gian push (timestamp mili giây)
uniqueIdstringĐịnh danh duy nhất (dùng để khử trùng)
contentstringChuỗi JSON chi tiết phân tích thị trường, cần parse lần hai

Cấu trúc trường sau khi parse content:

TrườngKiểuMô tả
vsTokenIdstringToken ID
symbolstringKý hiệu token (ví dụ BTC, ETH)
iconstringURL biểu tượng token
pricestringGiá tại thời điểm phân tích
signalstringTín hiệu tổng hợp AI trong chu kỳ phân tích 5 phút hiện tại: LONG (tăng giá) / SHORT (giảm giá) / SIDEWAYS (sideway)
klineDiffstringBiến động K-line (số thập phân)
supportsarray<string>Danh sách giá hỗ trợ
resistancesarray<string>Danh sách giá kháng cự
analysisstringKết luận phân tích AI theo ngôn ngữ yêu cầu
analysisTimelongThời gian phân tích (timestamp mili giây)
verdictintegerXác minh tín hiệu: 0=chờ, 1=khớp, 2=không khớp
verdictDescstringMô tả xác minh tín hiệu
h24SummaryobjectTổng hợp phân bố tín hiệu trong ngày
h24Summary.buyCountintegerSố lần tăng giá
h24Summary.sellCountintegerSố lần giảm giá
h24Summary.holdCountintegerSố lần sideway
h24Summary.totalintegerTổng số lần
h24Summary.buyRationumberTỷ lệ tăng giá (%)
h24Summary.sellRationumberTỷ lệ giảm giá (%)
h24Summary.holdRationumberTỷ lệ sideway (%)
h24Summary.conclusionstringKết luận tổng hợp trong ngày: LONG (thị trường tăng giá) / SHORT (thị trường giảm giá) / SIDEWAYS (sideway) / LONG_BIASED_SIDEWAYS (sideway thiên tăng) / SHORT_BIASED_SIDEWAYS (sideway thiên giảm)

4. Đối chiếu enum cũ và mới

Giá trị cũ (SSE cũ)Giá trị mới (API này)Ý nghĩa
BUYLONGTăng giá
SELLSHORTGiảm giá
HOLDSIDEWAYSSideway
BULLISHLONGThị trường tăng giá
BEARISHSHORTThị trường giảm giá
OSCILLATESIDEWAYSSideway
OSCILLATE_BULLISHLONG_BIASED_SIDEWAYSSideway thiên tăng
OSCILLATE_BEARISHSHORT_BIASED_SIDEWAYSSideway thiên giảm

5. Ví dụ đăng ký

Python

python
import hashlib
import hmac
import json
import time
import uuid
import urllib.request
from urllib.parse import urlencode

AK = "your-access-key"
SK = "your-secret-key"

ts = int(time.time() * 1000)
nonce = uuid.uuid4().hex
sign = hmac.new(
    SK.encode(),
    (str(ts) + nonce).encode(),
    hashlib.sha256,
).hexdigest()

params = urlencode({
    "apiKey": AK,
    "sign": sign,
    "timestamp": ts,
    "nonce": nonce,
})

url = f"https://stream.valuescan.ai/stream/market/analysis/subscribe?{params}"
req = urllib.request.Request(url, headers={"Accept": "text/event-stream"})

with urllib.request.urlopen(req, timeout=300) as resp:
    event_name = ""
    data_str = ""
    for raw in resp:
        line = raw.decode("utf-8").rstrip("\r\n")

        if line.startswith(":"):
            print("♥ heartbeat")
            continue

        if line == "":
            if data_str:
                handle_event(event_name, data_str)
            event_name = ""
            data_str = ""
        elif line.startswith("event:"):
            event_name = line[6:].strip()
        elif line.startswith("data:"):
            data_str = line[5:].strip()


def handle_event(event_name: str, data_str: str) -> None:
    if event_name == "connected":
        print(f"[connected] {data_str}")
    elif event_name == "market-analysis":
        payload = json.loads(data_str)
        content = json.loads(payload["content"])
        print(f"[market analysis] {content['symbol']} signal={content['signal']} "
              f"price={content['price']} conclusion={content['h24Summary']['conclusion']}")

cURL (kiểm tra nhanh)

bash
python3 -c "
import hashlib, hmac, time, uuid, urllib.parse
SK='your-secret-key'
ts=int(time.time()*1000)
nonce=uuid.uuid4().hex
sign=hmac.new(SK.encode(), (str(ts)+nonce).encode(), hashlib.sha256).hexdigest()
params=urllib.parse.urlencode({'apiKey':'your-access-key','sign':sign,'timestamp':ts,'nonce':nonce})
print(f\"curl -N 'https://stream.valuescan.ai/stream/market/analysis/subscribe?{params}' -H 'Accept: text/event-stream'\")
'"

6. Kết nối lại

Giống đăng ký thị trường cũ, nên dùng exponential backoff:

python
def listen_with_retry(url: str, max_retries: int = 10) -> None:
    retries = 0
    while retries <= max_retries:
        try:
            req = urllib.request.Request(url, headers={"Accept": "text/event-stream"})
            with urllib.request.urlopen(req, timeout=300) as resp:
                _read_sse(resp)
                break
        except KeyboardInterrupt:
            print("Người dùng ngắt, thoát.")
            break
        except Exception as e:
            retries += 1
            wait = min(2 ** retries, 60)
            print(f"Mất kết nối ({e}), thử lại sau {wait}s (lần {retries})...")
            time.sleep(wait)
    else:
        print("Đã hết số lần thử, thoát.")

7. Mã lỗi

Trong giai đoạn thiết lập kết nối, lỗi xác thực, tham số và hạn mức có thể trả về HTTP 200 kèm JSON nghiệp vụ. Trường code trong response cho biết lỗi thực tế.

Ví dụ:

json
{
    "code": 20021,
    "message": "Signature verification failed",
    "data": null,
    "requestId": "a7d7ce3053e140dca91d93df173648f8"
}

Mã lỗi thường gặp:

codeMô tả
20001Thiếu API Key
20002API Key không hợp lệ, bị vô hiệu, hết hạn hoặc chưa được duyệt
20010Thiếu timestamp
20011Định dạng timestamp không hợp lệ
20012Timestamp hết hạn
20020Thiếu chữ ký
20021Xác minh chữ ký thất bại
40001Thiếu tham số bắt buộc
40002Định dạng hoặc giá trị tham số không hợp lệ
60001Vượt giới hạn tần suất
70001Không đủ credits OpenApi

Sau khi kết nối được thiết lập, nếu không đủ credits sẽ nhận sự kiện credit-exhausted rồi kết nối đóng:

event: credit-exhausted
data: {"message":"额度已耗尽,请充值"}