MINTING-MONEY / DATAHUB · 全市场 #94 · 实时 #95 · IBKR #68 · 飞书通知 #223 · 交易 #228 · 策略平台与控制台 #274

datahub 功能地图

这一波 56 个开发任务和 3 轮上线全部完成以后,datahub 能做什么。三家交易所、9 个市场,每个标的都有小时级历史;Binance 和 Hyperliquid 的标的另有实时数据。另外两件后加的事在下面单独讲:通知改发飞书,以及正在施工的交易模块。

截至北京时间 10 月 30 日 22:19,这一波(交易):已上线 22 / 28,进行中 1(TR-8g 开发中)。另有:IBKR 已上线 10、进行中 1、未开始 7(IB-7-1 主会话在做);全市场 已上线 25、进行中 3、观察中 1、未开始 9(AM-19-CAP 主会话在做;PR-71 等放行;PR-ADSN 等放行);实时 已上线 29、进行中 4、未开始 15(PR-PROM 等放行;PR-GRAND 等放行;PR-PUP 等放行;PR-PLAN 等放行);策略平台与控制台 已上线 3、已合并,待上线 20、等依赖 1、计划中 2;旧域名下线 进行中 1(DH-RET 主会话在做);飞书通知 已全部上线 1 / 1。看施工进度图
交易所3今天 2:Binance、Hyperliquid
市场9今天 2 个,U 本位里只有 TradFi
在交易的标的≈ 5,350今天 ≈ 480
实时数据Binance + HL 全部今天没有,只有每小时拉取

交易所 → 市场 → 标的

行情页和 API 都按这三层来选。市场的名称和分组跟各交易所 App 里一样,上线后你可以在运行中的页面上直接改名。

Binance

≈ 3,720 个
U 本位合约usdm795

永续 566(加密)+ 225(TradFi 股票类,今天已有);交割 4

永续TradFi交割TradFi 已有
币本位合约coinm30

永续 20 + 季度交割 10,比如 BTCUSD_PERP、BTCUSD_270326

永续交割新增
现货spot1,383

按计价币分组,USDT、USDC、FDUSD、TRY、BTC 等各自分开,不合并

按计价币新增
期权options1,514

含黄金、白银期权 88 个。每天有新行权价上市,在 08:00Z 和 21:00Z 到期

按标的分组新增

Hyperliquid

≈ 1,430 个
永续主盘perp178

HL 自己的主永续盘,BTC、ETH 等

永续新增
HIP-3hip3≈ 250

10 个第三方 dex:xyz、flx、vntl、hyna、km、abcd、cash、para、mkts、io

按 dex 分组今天已有
现货spot347

PURR/USDC 和 @编号 交易对;暂时没有报价的 43 对先进目录,有成交才有 K 线

按计价币新增
预测市场 HIP-4outcome658

658 个市场,每个分两边,各算一个标的;按类别分组,到期结算后保存结算结果

按类别新增

IBKR

≈ 195 个
美股usequity≈ 195

Binance 或 HL 永续合约对应的美股、ETF、ADR。只有正常交易时段(每个交易日 7 根,提前收盘日 4 根),数据有延迟

股票ETF新增

只给开通了 IBKR 的账户看。没开通的账户完全看不到 IBKR;没有任何账户开通时,系统也不去拉 IBKR 的数据。

每个市场有哪些数据

全部是 1 小时 K 线,4 小时和日线由行情页从 1 小时聚合。交易所不提供的数据,API 会明确标为“来源不提供”,不会填 0。已下架的标的保留,历史不删。

市场1h K 线溢价 K 线资金费率其他实时历史从哪开始
Binance U 本位永续有有有1h / 4h / 8h 结算保证金档位有上市第一根,BTCUSDT 从 2019-09-08
Binance U 本位交割有——交割价有上市到交割
Binance 币本位永续有有有8h 结算合约面值按版本记有BTCUSD_PERP 从 2020-08-11
Binance 币本位交割有——交割价有上市到交割
Binance 现货有———有盘口在这个市场最后上上市第一根,BTCUSDT 从 2017-08-17
Binance 期权有——每小时标记价、隐含波动率、希腊值交易所不留历史,从上线起存;行权结果也存有不含盘口只在挂牌期间,已到期的拿不到
HL 永续主盘有有只有均值有1h—有K 线约 208 天(HL 只留 5000 根)加上已抓的存档;资金费率全量,BTC 从 2023-05-12
HL HIP-3有今天已有有只有均值,今天已有有今天已有—有最先上不变
HL 现货有———有每对最近 5000 根,加上已抓的存档
HL 预测市场 HIP-4有两边都有——结算结果有最后上挂牌期间从第一笔成交起;结算后交易所就删了,这段时间靠开发机上的采集程序先存着
IBKR 美股有只有交易时段,延迟数据———没有这一期只有历史从 2026-01-01
实时 = 成交、盘口(前 20 档)、价格、正在形成的 1 小时 K 线,每个都在两台不同的机器上各采一份 定稿时间:Binance 和 HL 的小时 K 线在整点后 60 秒内定稿;IBKR 在整点后 25–50 分钟

对外接口(API v1)

接口只加不改,老客户端照常能用。每个标的多了三个字段:属于哪个市场、市场下的哪一组、在交易所下单用的代码。

今天已有

  • /v1/instruments标的列表,以后可以按市场筛选
  • /v1/instruments/{id}单个标的
  • /v1/klinesK 线
  • /v1/funding资金费率

这一波新增

  • /v1/markets市场目录:中英文名、分组、每组有哪些数据、从哪天开始采、各状态的标的数
  • /v1/option-marks期权每小时的标记价、隐含波动率、希腊值
  • /v1/ws实时推送:订阅、断线续传、补发错过的数据,以及正在形成的 K 线
  • /v1/latest/*每个标的最新的成交、盘口、价格
  • /v1/history/*逐笔成交、盘口快照、价格的历史;较早的盘口从冷存储读
  • /v1/status · /v1/gaps采集状态,以及哪些数据缺了、在补
  • 按账户开通API key 看到什么取决于账户开通了什么,第一个用上的是 IBKR
  • Python 客户端(SDK)跟上新字段;新增实时订阅,并自带“先订阅、再拉历史、按序号拼接、断线续传”,策略调用一个函数就拿到完整的 K 线流

行情页

  • 交易所 → 市场 → 标的三级选择,覆盖上面全部 9 个市场
  • 最后一根 K 线实时跳动(Binance、HL),指标照旧
  • IBKR 只在开通的账户里出现,图上标“延迟行情 · 每小时更新”,刷新后出现新的 K 线
  • 后台可以给任意账户(客户也行)打开或关掉 IBKR 开关
  • 浏览器拿不到任何 API key,页面经过服务端转发

底座(用户看不到,但决定扛不扛得住)

  • 水平扩展:标的再多,加机器、加 IP 就行,不用改代码。交易所的限额按 IP 算,系统自动把采集任务分到各个 IP
  • 每份实时数据采两份,放在两台不同的机器上;挂一台不断流,换机器时先接上再断开
  • 每小时拉取分到所有拉取机上同时跑,每台 12 个 IP,HIP-4 需要第三台拉取机
  • 新的逐笔数据库专门存成交、盘口、价格;旧盘口定期归档到冷存储
  • 检查和告警按市场来:每小时和交易所对账、登记缺口、按市场审计,实时部分单独告警,上线前做拔线演练

通知:从 Slack 改到飞书这一波新增

datahub 发出的通知全部改发飞书:监控告警发到“datahub 告警”群,每天的 v7 资金费率信号发到“v7 资金费率信号”群。告警的走法不变,只换最后一步发到哪里;改完以后 datahub 不再往 Slack 发任何通知。

告警发到“datahub 告警”群以前发到 Slack
v7 信号发到“v7 资金费率信号”群以前发到 Slack
消息样式飞书卡片按级别分颜色,见下面
告警的走法不变只换最后发到哪里

卡片怎么分

  • 最紧急的告警(P1)红色,开头直接 @所有人
  • 次要告警(P2)橙色
  • 已恢复绿色
  • 每日摘要蓝色
  • 每次告警通知发一张卡片,同一批告警合在一起;列出的条数和长度有上限,两次发送之间至少隔 1 秒

谁来发

  • 监控告警:监控把告警交给告警管理,告警管理旁边的转发程序把它做成卡片发出去
  • 监控的监控:看门狗发现两个告警管理都联系不上时,自己直接发到同一个群
  • v7 信号:门户每天算出来,直接发到信号群;内容和以前一样,只是排版换成卡片
  • 各自直发,不经过缓存层中转:告警的路不能依赖被告警的东西,缓存层本身就是被监控的对象之一
  • 没变的:门户的“用 Slack 登录”是身份登录,不是通知,保留

交易:程序和人在三家交易所下单施工中

在 datahub 行情旁边新增一个独立的交易模块:程序和人都能在 Binance、Hyperliquid、IBKR 下单、改单、撤单,也能读回订单、成交、余额和持仓,每一次变化都会实时推过来。第一批用户是套利策略程序,所以一次可以同时发多条腿,延迟要低。账户都是公司自己的账户。

交易所3Binance、Hyperliquid、IBKR
交易服务放在 A、B 上和采集共用这两台机器,但出口 IP 是交易自己的 4 个;两台都能接单,挂一台程序自动切到另一台
下单入口2 种程序用 API key,人用行情页
依赖行情库不依赖行情的存储和接口都挂了,Binance 和 HL 照常下单

Binance

施工中
现货spot

限价、市价、止损止盈;没有“只减仓”。改单只能改小数量,其他改动是撤了重下

U 本位合约usdm

含 TradFi 永续。可以设杠杆和保证金模式。止损止盈走交易所的条件单服务,不能改,只能撤了重下

永续交割TradFi
币本位合约coinm

永续和交割,同样可以设杠杆和保证金模式

接入时自动检查

账户要是经典账户(不是组合保证金),合约用单向持仓;不符合时会明确报出是哪一项,由你决定要不要改账户

Hyperliquid

施工中
现货spot

下单、改单、撤单

永续主盘和 HIP-3perp · hip3

主盘和每个第三方 dex 的永续都能下单。每个 dex 有自己的保证金币种,账户内部可以在现货、主盘、各 dex 之间挪保证金,钱不会离开账户

市价单怎么做

HL 没有真正的市价单,用带滑点上限的限价单代替,上限默认 5%,下单时可以改

接入时自动检查

用主账户,账户模式是标准模式;密钥只收“代理钱包”,主钱包的私钥永远不进系统

IBKR

施工中
美股、ETFusequity

下单、改单、撤单;没有“只减仓”。期货这一期不做

和拉历史共用一个网关

IBKR 只有一个网关会话,拉历史和下单共用。网关前面加一层“保护代理”:每个下单步骤不会被别的请求打断,下单优先、拉历史让路,总请求数不超限

不能下单的时间

网关每天有一段重置时间,周六还有维护。这些时候下单会被明确拒绝,并说明是因为休市

程序怎么用

  • 同一个 API key,默认就有全部交易权限;Go 和 Python 客户端新增下单方法
  • 一次发多条腿,每条单独回结果,不是全成或全败
  • 每个请求的结果有三种:已接受、被拒绝、不知道。网络断了、不知道结果时,客户端先按订单编号查一遍,再决定要不要重发,交易所那边不会留下两单
  • 订单、成交、余额、持仓、杠杆等设置的每一次变化,都实时推给订阅的程序
  • 交易服务自己加的延迟:99% 的情况下不超过 5 毫秒(上线前实测)

人怎么用

  • 在控制台的交易页里下单、改单、撤单,看每个交易所对象的订单、持仓和余额;第一期只有管理员能用(现在就是老板一人)
  • 交易所对象 = 一个交易所 + 一组密钥,在控制台里管理;只有管理员能新增、修改、停用、更换密钥
  • 密钥在浏览器里加密后才送出,控制台只认内置的交易主机公钥,中间的网关只转发密文;保存后谁也看不到明文,也不会出现在日志和页面里
  • 停用的对象不能再开仓,但仍然可以撤单和减仓
  • 同一个交易所账户只能建一个对象

它管什么,不管什么

  • 只提供“能交易”的能力。限额、仓位大小、防手滑、一键停,都是策略自己的事,不在交易模块里
  • 密钥只能交易,不能提现或转账;带提现权限的密钥会被拒绝
  • 不做期权、Hyperliquid 预测市场、IBKR 期货,也不做冰山、TWAP 这类算法单
  • 这一期只有一个区域,交易装在现有的 A、B 两台机器上;IBKR 的单点网关是接受的
  • 行情接口(API v1)不变,下单是单独的新接口

出问题怎么办

  • A、B 挂了一台:程序在 10 秒内连上另一台,读回自己的挂单和持仓
  • 请求发出去时机器挂了:结果是“已接受”或“不知道”,查过再决定,不会重复下单
  • 对象正在重新同步:读到的是“不知道”,不会给出空的“没有挂单”
  • 交易所限流:快要超过硬上限的请求在本地就被拒绝并说明是哪条限额,不会被交易所封 IP 或账户
  • 每个请求和每次成交都留记录,数据库挂了也不丢;交易通路中断会发最紧急告警到飞书告警群
开工顺序
T1 · 施工中底座:在 A、B 上装交易服务、交易数据库、接口约定
T2Binance 和 HL 先在测试环境跑通,再用公司账户小额下真单
T3IBKR:先把拉历史的程序挪到保护代理后面,再小额下单、撤单
T4控制台:datahub 接口里加一个只给管理员用的交易网关,控制台做交易所对象页和交易页
T5验收上线:用一个替身套利程序走通全流程,做故障演练和延迟测量,之后再写真正的套利程序

策略平台与控制台:第一期计划中,还没开工

在 datahub 之外新建一个团队共用的控制台,用飞书登录一次,就能看各个策略跑得怎么样。第一个搬进来的是 v7 资金费率信号:它现在跑在 datahub 的门户里,以后改由新的策略平台来跑、来发。搬完以后,datahub 里的 v7 代码删掉,datahub 自己多一个新名字。

登录方式飞书登一次,团队里的人都能进
第一个策略v7资金费率信号,从 datahub 门户搬过来
新增机器2 台基建一台(配置很低)、策略一台;控制台网页放在 Cloudflare 上
历史至少 30 个交易日补算出来给你看,不会发到群里

做完以后,团队能做什么

  • 用飞书登录 console.aurabitcapital.space,刚进来默认只能看
  • 看 v7 的总览:现在是否在跑、上一次结果、下一次什么时候跑
  • 看今天的排名:Binance 和 Hyperliquid 两家各自的前 10 名,以及发出去的那张卡片
  • 翻历史:至少 30 个过去的交易日,每天的结果和有没有发出
  • 看运行记录和参数:每次几点开始、几点结束、成功还是失败;参数只能看,不能改
  • 暂停、恢复、重算(重算不发送)和紧急全停:只有操作员有这些按钮,点之前先确认一次
  • 每个操作都留记录:谁、什么时候、做了什么
  • 每日卡片照旧发到飞书群“v7 资金费率信号”,内容和今天一样
  • datahub 多一个新名字 datahub.aurabitcapital.space,老名字继续能用

这一期不做

  • 回测:放第二期(你 10 月 29 日定的)。这一期的接口给它留好了位置
  • 在控制台里改参数:v7 的参数本来就是固定的,这一期只读
  • 交易页和策略下单:以后再搬进控制台,现在“交易”入口灰着,写“即将迁入”;v7 只发信号,不下单
  • datahub 门户的行情页、密钥页:不搬,控制台里放一个链接跳过去(这两页仍用 Slack 登录)
切换顺序
第 1 步 · 计划中搭好登录、发消息的基建服务、策略平台和控制台
第 2 步v7 先试运行:每天照算、存下卡片但不发,连续 2 个交易日和 datahub 发的一字不差才过关
第 3 步切换:datahub 门户停发,新平台开始发;当天不漏发、不重发
第 4 步连续 3 个交易日没问题,删掉 datahub 里的 v7 代码

上线顺序

代码合并后默认关着,按下面的顺序一段段打开。每段打开后观察 24 小时,没问题再开下一段。每个市场先上小时历史,再上实时,这样实时图表打开时就有历史可看。

历史和目录
P0 · 进行中底座
P1市场目录 + 行情页三级选择
P2Binance 合约
P3HL 主盘
P4Binance 期权
P5现货
P6补已下架、暂停标的的历史
P7HL 预测市场
实时
R0 · 已完成底座(不对外),10 月 30 日验收
R1 · 等 11-01 修复今天这批标的开始实时采集;实时分配器有个缺陷要先修(#303),最早 11-01 11:16 开始
R2实时推送 + 行情页实时跳动
R3每小时拉取分到多台机器
R4–R8依次跟上 P2、P3、P4、P5、P7
IBKR
上线前从机房连网关试通、测 3 个以上交易日(含一个冬令时日)
2026-11-06 之后录下冬令时第一周的数据做测试
IB-7IBKR 上线
要补的代码
今晚 · 已审过断流告警只看连续行情(#288)
今晚之后 · 施工中恢复第三台拉取机 P(#293)、实时采集加 4 个出口 IP(#294)、恢复演练机带云权限(#295)、运维命令支持全部分组(#297)
11-01 09:00 一起合 · 施工中原始数据上传云存储(#290)、数据库自检工具入口(#291)、拉取超载一律停下(#296)、拉取服务自报缓存连通(#298)、实时排班不等拉取机(#303)
11-03 · 施工中新机器 P、F、G 纳入监控(#292)

这一波不包括

  • IBKR 的实时数据;美股以外的 IBKR 市场(港股、韩股、日股、商品、指数、外汇约 41 个),以及 A 股
  • 期权盘口;1 小时以外的原始周期;标记价和指数 K 线;交割基差
  • datahub 开始采集之前就已下架或到期的标的(例如 LUNAUSDT);这些标的的 Binance K 线以后还能按代码补,需要的话单独决定
  • 第三方历史数据源(data.binance.vision、HL 的 S3、Hypurrscan)
  • 加密标的跨交易所的对应关系(同一个底层资产)
  • Binance 的杠杆、Alpha、理财;交易、下单和账户数据不进 datahub 的行情库(下单由上面新增的交易模块负责)