赌博什么限制都没有,真正干点活,七卡八卡
宇宙的尽头赌博
OKX USDT 永续合约列表 (instId):
BTC-USD_UM-SWAP
ETH-USD_UM-SWAP
SOL-USD_UM-SWAP
BTC-USDT-SWAP
ETH-USDT-SWAP
OKB-USDT-SWAP
SOL-USDT-SWAP
DOGE-USDT-SWAP
XRP-USDT-SWAP
BCH-USDT-SWAP
PUMP-USDT-SWAP
WLFI-USDT-SWAP
LINEA-USDT-SWAP
0G-USDT-SWAP
1INCH-USDT-SWAP
2Z-USDT-SWAP
A-USDT-SWAP
AAVE-USDT-SWAP
ACE-USDT-SWAP
ACH-USDT-SWAP
ACT-USDT-SWAP
ADA-USDT-SWAP
AERO-USDT-SWAP
AEVO-USDT-SWAP
AGLD-USDT-SWAP
AIXBT-USDT-SWAP
ALGO-USDT-SWAP
ANIME-USDT-SWAP
APE-USDT-SWAP
API3-USDT-SWAP
APR-USDT-SWAP
APT-USDT-SWAP
AR-USDT-SWAP
ARB-USDT-SWAP
ARKM-USDT-SWAP
ASTER-USDT-SWAP
AT-USDT-SWAP
ATH-USDT-SWAP
ATOM-USDT-SWAP
AUCTION-USDT-SWAP
AVAX-USDT-SWAP
AVNT-USDT-SWAP
AXS-USDT-SWAP
BABY-USDT-SWAP
BAND-USDT-SWAP
BARD-USDT-SWAP
BAT-USDT-SWAP
BERA-USDT-SWAP
BICO-USDT-SWAP
BIGTIME-USDT-SWAP
BIO-USDT-SWAP
BLUR-USDT-SWAP
BLUAI-USDT-SWAP
BNB-USDT-SWAP
BNT-USDT-SWAP
BOME-USDT-SWAP
BONK-USDT-SWAP
BRETT-USDT-SWAP
CAT-USDT-SWAP
CATI-USDT-SWAP
CC-USDT-SWAP
CELO-USDT-SWAP
CETUS-USDT-SWAP
CFX-USDT-SWAP
CHZ-USDT-SWAP
COAI-USDT-SWAP
COMP-USDT-SWAP
COOKIE-USDT-SWAP
CORE-USDT-SWAP
CRO-USDT-SWAP
CRV-USDT-SWAP
CTC-USDT-SWAP
CVC-USDT-SWAP
CVX-USDT-SWAP
DASH-USDT-SWAP
DEGEN-USDT-SWAP
DOOD-USDT-SWAP
DOT-USDT-SWAP
DYDX-USDT-SWAP
EDEN-USDT-SWAP
EGLD-USDT-SWAP
EIGEN-USDT-SWAP
ENA-USDT-SWAP
ENJ-USDT-SWAP
ENS-USDT-SWAP
ENSO-USDT-SWAP
ETC-USDT-SWAP
ETHW-USDT-SWAP
ETHFI-USDT-SWAP
F-USDT-SWAP
FARTCOIN-USDT-SWAP
FIL-USDT-SWAP
FLOKI-USDT-SWAP
FLOW-USDT-SWAP
FXS-USDT-SWAP
GALA-USDT-SWAP
GAS-USDT-SWAP
GIGGLE-USDT-SWAP
GLM-USDT-SWAP
GMT-USDT-SWAP
GMX-USDT-SWAP
GOAT-USDT-SWAP
GPS-USDT-SWAP
GRASS-USDT-SWAP
GRT-USDT-SWAP
H-USDT-SWAP
HBAR-USDT-SWAP
HMSTR-USDT-SWAP
HOME-USDT-SWAP
HUMA-USDT-SWAP
HYPE-USDT-SWAP
ICP-USDT-SWAP
ICX-USDT-SWAP
IMX-USDT-SWAP
INIT-USDT-SWAP
INJ-USDT-SWAP
IOST-USDT-SWAP
IOTA-USDT-SWAP
IP-USDT-SWAP
JELLYJELLY-USDT-SWAP
JOE-USDT-SWAP
JTO-USDT-SWAP
JUP-USDT-SWAP
KAITO-USDT-SWAP
KGEN-USDT-SWAP
KITE-USDT-SWAP
KMNO-USDT-SWAP
KSM-USDT-SWAP
LA-USDT-SWAP
LAB-USDT-SWAP
LAYER-USDT-SWAP
LDO-USDT-SWAP
LINK-USDT-SWAP
LPT-USDT-SWAP
LQTY-USDT-SWAP
LRC-USDT-SWAP
LTC-USDT-SWAP
LUNA-USDT-SWAP
MAGIC-USDT-SWAP
MANA-USDT-SWAP
MASK-USDT-SWAP
ME-USDT-SWAP
MEME-USDT-SWAP
MERL-USDT-SWAP
METIS-USDT-SWAP
MET-USDT-SWAP
MEW-USDT-SWAP
MINA-USDT-SWAP
MMT-USDT-SWAP
MOG-USDT-SWAP
MON-USDT-SWAP
MOODENG-USDT-SWAP
MORPHO-USDT-SWAP
MOVE-USDT-SWAP
MUBARAK-USDT-SWAP
NEAR-USDT-SWAP
NEIRO-USDT-SWAP
NEO-USDT-SWAP
NEWT-USDT-SWAP
NMR-USDT-SWAP
NOT-USDT-SWAP
OL-USDT-SWAP
OM-USDT-SWAP
ONDO-USDT-SWAP
ONE-USDT-SWAP
ONT-USDT-SWAP
OP-USDT-SWAP
ORDI-USDT-SWAP
ORDER-USDT-SWAP
PARTI-USDT-SWAP
PENGU-USDT-SWAP
PENDLE-USDT-SWAP
PEOPLE-USDT-SWAP
PEPE-USDT-SWAP
PI-USDT-SWAP
PIGGY-USDT-SWAP
PLUME-USDT-SWAP
PNUT-USDT-SWAP
POL-USDT-SWAP
POPCAT-USDT-SWAP
PRCL-USDT-SWAP
PROMPT-USDT-SWAP
PROVE-USDT-SWAP
PYTH-USDT-SWAP
QTUM-USDT-SWAP
RAY-USDT-SWAP
RECALL-USDT-SWAP
RENDER-USDT-SWAP
RESOLV-USDT-SWAP
RSR-USDT-SWAP
RVN-USDT-SWAP
S-USDT-SWAP
SAHARA-USDT-SWAP
SAND-USDT-SWAP
SAPIEN-USDT-SWAP
SATS-USDT-SWAP
SHELL-USDT-SWAP
SHIB-USDT-SWAP
SIGN-USDT-SWAP
SKY-USDT-SWAP
SNX-USDT-SWAP
SOLV-USDT-SWAP
SONIC-USDT-SWAP
SOON-USDT-SWAP
SOPH-USDT-SWAP
SPK-USDT-SWAP
SPX-USDT-SWAP
SSV-USDT-SWAP
STRK-USDT-SWAP
STX-USDT-SWAP
SUI-USDT-SWAP
SUSHI-USDT-SWAP
SYRUP-USDT-SWAP
TAO-USDT-SWAP
THETA-USDT-SWAP
TIA-USDT-SWAP
TON-USDT-SWAP
TRB-USDT-SWAP
TREE-USDT-SWAP
TRUMP-USDT-SWAP
TRUST-USDT-SWAP
TRX-USDT-SWAP
TURBO-USDT-SWAP
TURTLE-USDT-SWAP
UMA-USDT-SWAP
UNI-USDT-SWAP
USDC-USDT-SWAP
USELESS-USDT-SWAP
VANA-USDT-SWAP
VIRTUAL-USDT-SWAP
W-USDT-SWAP
WAL-USDT-SWAP
WCT-USDT-SWAP
WIF-USDT-SWAP
WLD-USDT-SWAP
WOO-USDT-SWAP
XAN-USDT-SWAP
XAUT-USDT-SWAP
XLM-USDT-SWAP
XPL-USDT-SWAP
XTZ-USDT-SWAP
YB-USDT-SWAP
YFI-USDT-SWAP
YGG-USDT-SWAP
ZBT-USDT-SWAP
ZEC-USDT-SWAP
ZENT-USDT-SWAP
ZEN-USDT-SWAP
ZETA-USDT-SWAP
ZIL-USDT-SWAP
ZK-USDT-SWAP
ZORA-USDT-SWAP
ZRO-USDT-SWAP
ZRX-USDT-SWAP
BTC-USDC-SWAP
ETH-USDC-SWAP
买定离手 永续合约交易所获利武器
——————– 2. 结构体 ——————–
type wsMessage struct {
Arg struct {
Channel string json:"channel"
InstId string json:"instId"
} json:"arg"
Data []struct {
InstId string json:"instId" // 订阅时会返回
Bids [][]string json:"bids"
Asks [][]string json:"asks"
} json:"data"
}
// ——————– 3. 主函数 ——————–
func main() {
// 捕获 Ctrl+C 退出
sigCh := make(chan os.Signal, 1)
signal.Notify(sigCh, os.Interrupt)
// 打印表头
fmt.Println("Time\t\tInstId\tMidPrice")
// 启动监听 goroutine
go listenOKX()
// 阻塞直到收到退出信号
<-sigCh
}
// ——————– 4. 监听 OKX ——————–
func listenOKX() {
// 1️⃣ 连接 OKX WebSocket
wsURL := “wss://ws.okx.com:8443/ws/v5/public”
c, _, err := websocket.DefaultDialer.Dial(wsURL, nil)
if err != nil {
log.Fatalf(“OKX connect error: %v”, err)
}
defer c.Close()
// 2️⃣ 订阅请求(一次性订阅所有交易对)
args := make([]map[string]string, 0, len(instruments))
for _, inst := range instruments {
args = append(args, map[string]string{
"channel": "books5",
"instId": inst,
})
}
subMsg := fmt.Sprintf(`{"op":"subscribe","args":%s}`, marshalJSON(args))
if err := c.WriteMessage(websocket.TextMessage, []byte(subMsg)); err != nil {
log.Fatalf("OKX subscribe error: %v", err)
}
// 3️⃣ 循环读取消息
for {
_, raw, err := c.ReadMessage()
if err != nil {
log.Printf("OKX read error: %v", err)
return
}
var msg wsMessage
if err := json.Unmarshal(raw, &msg); err != nil {
// 解析失败直接跳过
continue
}
// 只关注 books5 频道
if msg.Arg.Channel != "books5" {
continue
}
// 可能一次收到多种交易对的更新,遍历 data 数组
for _, d := range msg.Data {
if len(d.Bids) == 0 || len(d.Asks) == 0 {
continue // 没有买卖一报价,跳过
}
bidStr, askStr := d.Bids[0][0], d.Asks[0][0]
bid, _ := strconv.ParseFloat(bidStr, 64)
ask, _ := strconv.ParseFloat(askStr, 64)
mid := (bid + ask) / 2.0
// 连续打印
fmt.Printf("%s\t%s\t%.2f\n",
time.Now().Format("15:04:05.000"),
d.InstId,
mid,
)
}
}
}