OwlX · Signals API
把 OwlX 的结构信号接进你自己的交易机器人。这份文件写清楚怎麽拿 key、怎麽呼叫、每次扣多少、以及哪些事这支 API 不做。
它只回传信号资料。它不连接你的交易所、不持有你的 API key、不下任何单、也不碰你的钱。
要自动交易,是你自己写程式:读我们的信号 → 用你自己的交易所 API key 送单。下单的决定与执行全部在你那一侧,风险与责任也是。
OwlX 提供的是市场结构的教育性资讯,不是投资建议,也不代客操作。
目前只开放给节点/创始席。
| 项目 | 内容 |
|---|---|
| 开放对象 | 节点/创始席(founding seat)。其他方案呼叫会收到 403 node_tier_required。 |
| 计费 | 1 Token /次呼叫。一次最多带 8 个币,所以把币合在一起打比较省。 |
| 节点内含 | 10,000 次/月(节点月配 10,000 Token)。用完可到账户页加购 Token 包。 |
| 呼叫上限 | 2,000 次/天,MYT 午夜重置。超过回 429。这只是防滥用的保险丝 —— 真正会先用完的是 Token。 |
| 其他端点 | news · movers · derivatives · macro · fundamentals · track-record 全部免费,不扣 Token。 |
用量参考:8 个币每 5 分钟轮询一次 = 8,640 次/月,约当月配的 86%。要盯更多币或打更密,就要加购。
Key 放伺服器端的环境变数,绝对不要写进前端网页或公开的 repo —— 任何人拿到它就能花你的 Token。
GET https://owlx.app/api/v1/signals Header: x-api-key: owlx_live_xxxxxxxx
| 参数 | 预设 | 说明 |
|---|---|---|
symbols | BTC,ETH,SOL,BNB,XRP | 逗号分隔的币种,一次最多 8 个,超过的会被忽略。只写主体代号(BTC,不是 BTCUSDT)。 |
tf | 4h | 周期:15m 30m 1h 4h 1d。填错会退回 4h,不会报错。 |
{
"ok": true, "tf": "4h", "ts": 1756540000000,
"signals": [
{
"symbol": "BTC", "tf": "4h", "ok": true,
"price": 111234.5,
"signal": "LONG",
"confirmed": true,
"defense": 108900,
"arming": { "dir": 1, "score": 7, "trigger": 112000, "invalidation": 108900 },
"atr_pct": 1.8
}
],
"tier": "node",
"billing": "1 energy credit per call (node / founding seats only)",
"credits_left": 9834
}
| 栏位 | 意思 |
|---|---|
signal | STRONG_LONG · LONG · SHORT · STRONG_SHORT · NONE已经触发的信号。跟会员收到的 Telegram 提醒是同一个、同一时刻。 |
confirmed | 信号是否已在 K 线收盘确认。只在 true 时才该动作 —— 未收盘的信号会变。 |
defense | 防守位。信号失效的价格,一般拿来当止损。 |
arming | 还在酝酿中、尚未触发的那一笔:dir 方向、score 结构分 0–10、trigger 触发价、invalidation 失效价。用来提前布局,不是进场讯号。 |
atr_pct | 波动度(ATR 占价格的百分比)。常拿来算仓位大小。 |
credits_left | 这次扣完之後你还剩多少 Token。建议把它记进 log,快见底时才不会突然断线。 |
ok(单币) | false 代表那个币这次读不到资料(新币、下架、上游暂时没回)。不要当成 NONE,跳过就好。 |
API 只提供「现在」。历史信号列表、胜率、回测结果不会经由 API 提供 —— 那些请在网站的图表页看。这是刻意的产品决定,不是漏了。
| HTTP | error | 怎麽处理 |
|---|---|---|
| 401 | api_key_requiredinvalid_api_key | Header 没带 key,或 key 已被重新生成作废。重拿一把。 |
| 403 | node_tier_required | 这个帐号不是节点/创始席。重试没有用。 |
| 402 | insufficient_credits | Token 用完了。重试没有用 —— 要加购或等每月 1 号发放。程式该停下来并通知你,不要空转重打。 |
| 429 | rate_limited | 超过每日呼叫上限,MYT 午夜重置。降低轮询频率或把币合批。 |
| 403 | subscription_inactive | 订阅过期了,续订後 key 立刻恢复,不用重拿。 |
curl -H "x-api-key: $OWLX_KEY" \ "https://owlx.app/api/v1/signals?symbols=BTC,ETH,SOL,BNB,XRP,DOGE,ADA,LINK&tf=4h" # 8 个币写在同一次 = 扣 1 Token # 分成 8 次打 = 扣 8 Token
import os, requests
r = requests.get(
"https://owlx.app/api/v1/signals",
headers={"x-api-key": os.environ["OWLX_KEY"]},
params={"symbols": "BTC,ETH,SOL", "tf": "4h"},
timeout=20,
)
if r.status_code in (402, 403):
# 重试没有用 —— 停下来通知自己
raise SystemExit(r.json().get("message"))
r.raise_for_status()
d = r.json()
for s in d["signals"]:
if not s.get("ok"):
continue # 这个币这次没资料,跳过
if s["signal"] != "NONE" and s["confirmed"]:
print(s["symbol"], s["signal"], "stop:", s["defense"])
# ↓ 这里换成【你自己的】交易所 API 下单
print("credits left:", d.get("credits_left"))const r = await fetch(
"https://owlx.app/api/v1/signals?symbols=BTC,ETH,SOL&tf=4h",
{ headers: { "x-api-key": process.env.OWLX_KEY } }
);
if (r.status === 402 || r.status === 403) {
// 重试没有用 —— 停下来通知自己
throw new Error((await r.json()).message);
}
const d = await r.json();
for (const s of d.signals) {
if (!s.ok) continue; // 这个币这次没资料
if (s.signal !== "NONE" && s.confirmed) {
console.log(s.symbol, s.signal, "stop:", s.defense);
// ↓ 这里换成【你自己的】交易所 API 下单
}
}
console.log("credits left:", d.credits_left);ok:false)。你的机器人要能处理「这一轮没拿到信号」,而不是把它当成平仓讯号。