凤凰山港美股分析系统
香港--:--:--
美东--:--:--
开发者

外部 API 与接口文档

为你的自有系统签发密钥、订阅事件推送,并按标准化接口读取本系统的衍生分析与交易信号。系统不直接执行交易。

演示数据

API 客户端

每个客户端持有独立的权限范围、IP 白名单与限流额度;密钥可随时轮换与吊销。

演示数据

接入概览

最近 30 天的外部接入使用情况。

演示数据

数据许可边界

对外 API 输出的是系统生成的衍生分析,不是行情供应商的原始数据。

  • 对外 API 默认只输出系统生成的衍生分析与信号:评分、结论、风险提示、板块蓄水池指标、标准化交易信号等。
  • 不默认转售或批量分发行情供应商的原始实时数据。响应中出现的价格字段(如 entryZone、stopLevels)是分析结论的组成部分,不能当作行情源使用。
  • 逐笔成交、盘口深度、完整历史 K 线等原始数据不在默认授权范围内;确有落地需求需单独与供应商签署再分发协议,并由平台开通专项授权。
  • 违反该政策批量抓取行情字段的客户端会被限流并停用密钥,相关操作全部写入审计日志。
  • 演示环境返回的数据 provenance.isDemoData=true 且 freshnessStatus=MOCK,严禁按实时行情使用或对外分发。

本系统输出为基于数据与规则的研究辅助信息,不构成投资建议,亦不保证收益。

Webhook 订阅

事件发生时由平台主动推送,避免轮询;推送体与 API 响应结构一致。

演示数据

调用日志

记录每次外部调用的客户端、接口、状态码、耗时与来源 IP,可用于排障与审计。

演示数据

接口文档

对外 API 的完整清单,可直接下载 OpenAPI 3.1 JSON 导入你的代码生成器。

演示数据

认证与签名

所有对外接口都要求 API Key 定位 + HMAC-SHA256 签名,Secret 只用于本地计算,不随请求传输。

待签名字符串

signing string
METHOD\nPATH_WITH_QUERY\nX-PM-Timestamp\nX-PM-Nonce\nSHA256_HEX(body)

换行符为 \n;PATH_WITH_QUERY 含查询串且保持发送时的原始顺序;请求体为空时取空字符串的 SHA-256。

API Key
请求头 X-PM-Key 携带密钥前缀(形如 pmk_live_7f3a2c),用于定位客户端与密钥。
Secret 签名
明文 Secret 只在创建密钥时返回一次,服务端只保存哈希与遮罩值。Secret 永不出现在请求头或 URL 中,只用于本地计算签名。
HMAC 时间戳
请求头 X-PM-Timestamp 为 Unix 秒级时间戳,与服务端偏差超过 ±300 秒返回 401 TIMESTAMP_SKEW。
防重放 Nonce
请求头 X-PM-Nonce 为 32 位随机串,5 分钟内不可重复,重复返回 401 NONCE_REPLAYED。
Scope 最小权限
接口按最小权限校验,密钥权限是所属客户端 scope 集合的子集,缺少 scope 返回 403 SCOPE_DENIED。
IP 白名单
客户端可配置来源 IP / CIDR 白名单,白名单外的来源直接返回 403 IP_NOT_ALLOWED。
限流
按客户端计数,响应头返回 X-PM-RateLimit-Limit / Remaining / Reset;超限返回 429 RATE_LIMITED 并带 Retry-After,建议指数退避(首次 2 秒,上限 60 秒)。

签名示例

python
import hashlib
import hmac
import os
import time
import uuid

import requests

BASE_URL = "https://api.phoenix-mountain.example"
# 凭证一律从环境变量读取,严禁写进代码或提交进仓库
API_KEY = os.environ["PM_API_KEY"]        # 密钥前缀,形如 pmk_live_7f3a2c
API_SECRET = os.environ["PM_API_SECRET"]  # 创建密钥时一次性返回的明文 Secret


def signed_headers(method: str, path_with_query: str, body: bytes = b"") -> dict:
    timestamp = str(int(time.time()))
    nonce = uuid.uuid4().hex  # 32 位随机串,5 分钟内不可重复
    body_hash = hashlib.sha256(body).hexdigest()
    payload = "\n".join([method.upper(), path_with_query, timestamp, nonce, body_hash])
    signature = hmac.new(API_SECRET.encode(), payload.encode(), hashlib.sha256).hexdigest()
    return {
        "X-PM-Key": API_KEY,
        "X-PM-Timestamp": timestamp,
        "X-PM-Nonce": nonce,
        "X-PM-Signature": signature,
        "Content-Type": "application/json",
    }


path = "/v1/signals?market=HK&status=ACTIVE"
resp = requests.get(BASE_URL + path, headers=signed_headers("GET", path), timeout=10)
if resp.status_code == 429:
    raise RuntimeError("触发限流,请按 Retry-After 指数退避后重试")
resp.raise_for_status()

# 过期信号必须视为无效,不得继续按有效信号处理
now = time.time()
usable = [
    s for s in resp.json()["items"]
    if s["status"] == "ACTIVE" and time.mktime(time.strptime(s["expiresAt"][:19], "%Y-%m-%dT%H:%M:%S")) > now
]

示例中的凭证一律从环境变量读取。请勿把 Secret 写入前端代码、日志或代码仓库;泄露后请立即在上方吊销该密钥并轮换。

标准化交易信号

对外输出的信号结构固定,字段语义与本页文档一致;系统不直接下单。

演示数据

过期信号必须视为无效

信号带 expiresAt、marketDataTimestamp、ruleVersion 与 invalidationConditions 四项约束。 调用方必须在本地再校验一次有效期与失效条件,不得因缓存继续按有效信号处理。 本系统只输出分析与标准化交易信号,不直接执行交易, 下单、仓位与风控由调用方自行负责。

  • 信号带有效期:expiresAt 之前有效,超过即为 EXPIRED,调用方必须在本地再校验一次,不得因缓存继续使用。
  • 信号绑定行情时间:marketDataTimestamp 说明依据的是哪一刻的行情;行情已明显变化时应重新拉取而非沿用。
  • 信号绑定规则版本:ruleVersion 变更后同一标的的结论可能不同,回测与复盘必须带上该版本号。
  • 失效条件优先:invalidationConditions 中任一条件成立时,即使未到期也必须视为失效。
  • 本系统不直接执行交易:只输出标准化信号,是否下单、下单数量、滑点与风控完全由调用方负责。
  • 概率类字段(confidence、各类风险概率)均为模型判断,不构成对结果的确定性承诺,也不承诺收益。

字段表

字段类型说明
signalIdstring信号唯一 ID,用于去重与回溯
market / symbol'HK' | 'US' / string市场与标的代码,首期只覆盖普通股票与 ETF
action'WATCH' | 'BUY' | 'ADD' | 'HOLD' | 'REDUCE' | 'EXIT'标准化动作,不含下单指令
strategyTypestring对应的策略周期类型(波段、中线、高股息等)
targetWeightnumber建议目标仓位权重(0–1),最终仓位由调用方风控决定
entryZone / addZone / reduceZone{ min, max } | null建仓、加仓与减仓的价格区间
stopLevels / takeProfitLevelsnumber[]分档止损位与分档止盈位
confidencenumber (0–1)模型判断的把握程度,不是结果确定性
riskLevel'LOW' | 'MEDIUM' | 'HIGH'风险等级
validFromISO 8601信号生效时间关键约束
expiresAtISO 8601信号有效期截止时间,超过即失效关键约束
marketDataTimestampISO 8601信号所依据的行情时间,用于判断数据新鲜度关键约束
ruleVersionstring产出该信号的规则版本,用于复现与追责关键约束
analysisIdstring关联的分析产物 ID,可回查完整依据
rationaleSummarystring结论摘要,属于模型判断而非事实陈述
invalidationConditionsstring[]失效条件,任一命中即应作废该信号关键约束
status'ACTIVE' | 'EXPIRED' | 'INVALIDATED'信号状态,非 ACTIVE 一律不得执行关键约束

真实示例

免责声明

  • 本系统输出为基于数据和规则的研究辅助信息,不构成保证收益或代替持牌专业人士的承诺。
  • 历史表现不代表未来。
  • 行情、财报和新闻可能存在延迟或缺失。
  • 用户应结合自身风险承受能力独立决策。