[TOC]

Baru-baru ini, platform FMZ telah menambah sokongan untuk Hyperliquid DEX, pertukaran terdesentralisasi berprestasi tinggi, memberikan pengguna lebih banyak pilihan untuk mengambil bahagian dalam transaksi terdesentralisasi. Pada masa ini, fungsi penjaga platform FMZ telah dikemas kini sepenuhnya untuk menyokong urus niaga kontrak segera dan kontrak kekal Hyperliquid dan meliputi semua fungsi API DEX.
Gambaran Keseluruhan Platform Hyperliquid
Hyperliquid ialah blok blok L1 berprestasi tinggi yang dioptimumkan dari awal dengan visi membina sistem kewangan terbuka dalam rantaian sepenuhnya. Pengguna boleh mencipta aplikasi secara bebas dengan berinteraksi dengan komponen asli yang cekap sambil memastikan pengalaman pengguna akhir yang lancar.
Prestasi Hyperliquid L1 mencukupi untuk menyokong ekosistem aplikasi kewangan tanpa kebenaran. Semua pesanan, pengeluaran pesanan, urus niaga dan pembubaran diselesaikan dalam rantaian dengan cara yang telus sepenuhnya, dengan kelewatan blok kurang daripada 1 saat. Pada masa ini, rantaian itu menyokong kapasiti pemprosesan sehingga 100,000 pesanan sesaat.
Hyperliquid L1 menggunakan algoritma konsensus tersuai yang dipanggil HyperBFT, yang diilhamkan oleh Hotstuff dan penggantinya. Kedua-dua mekanisme konsensus dan seni bina rangkaian dioptimumkan dari bawah ke atas untuk memenuhi keperluan blockchain berprestasi tinggi.
Melalui panduan ini, kami berharap dapat membantu anda memulakan dengan cepat dengan perdagangan terprogram dan kuantitatif Hyperliquid DEX pada platform FMZ dan menemui lebih banyak peluang perdagangan.
Protokol REST
Protokol Websocket
Pada halaman Add Exchange platform FMZ, anda boleh mengkonfigurasi objek pertukaran tempat dan niaga hadapan Hyperliquid:

Pembahagian alam sekitar Seperti kebanyakan bursa, Hyperliquid mempunyai persekitaran ujian.
Dari pengalaman penggunaan sebenar, rangkaian utama adalah agak stabil dan kelajuannya juga baik.
Alamat nod antara muka API protokol REST yang sepadan:https://api.hyperliquid.xyz。
Maklumat yang berkaitan dengan menandatangani mesej juga berbeza:source == "a",chainId = 42161
Rangkaian ujian sering ranap, tetapi ia hanya digunakan sebagai antara muka ujian dan untuk membiasakan diri anda dengan fungsi dagangan di DEX.
Alamat nod antara muka API protokol REST yang sepadan:https://api.hyperliquid-testnet.xyz。
Maklumat yang berkaitan dengan menandatangani mesej juga berbeza:source == "b",chainId = 421614
Sama seperti kaedah sambungan dompet kebanyakan pertukaran DEX, anda boleh menggunakan APP dompet untuk mengimbas kod QR untuk menyambung ke Hyperliquid (tukar dompet kepada Arbitrum dan imbas kod untuk log masuk, rangkaian ujian dan rangkaian utama adalah sama) .

Jika anda ingin membiasakan diri dengan testnet terlebih dahulu, anda boleh mencari faucet terus pada halaman Hyperliquid selepas menyambungkan dompet anda ke Hyperliquid.

Anda boleh menuntut aset ujian Selepas menerima USDC untuk ujian, klik butang “Deposit” untuk mendepositkannya ke dalam Hyperliquid (sebaik-baiknya mempunyai beberapa ETH untuk rangkaian ujian Arbitrum).
Klik butang “Deposit” untuk mendeposit, yang memerlukan pengesahan dompet dan akan menggunakan sedikit ETH pada Arbitrum.
Apabila melakukan transaksi manual pada halaman APP Hyperliquid, halaman tersebut akan menjana alamat dompet proksi dan kunci persendirian secara automatik, yang direkodkan dalam penyemak imbas dan digunakan untuk operasi seperti membuat pesanan pada halaman penyemak imbas Jika kita ingin melakukan pemprograman dan kuantitatif Bagaimanakah urus niaga perlu mendapatkan maklumat konfigurasi ini?
Anda boleh membuat alamat dompet proksi yang diperlukan dan kunci peribadi yang sepadan pada halaman API Hyperliquid:


1. Berikan nama kepada dompet proksi yang akan dibuat.
2. Jana alamat dan kunci peribadi.
Konfigurasikan alamat dompet proksi dan kunci peribadi di FMZ
Kemudian anda boleh mengkonfigurasi maklumat ini pada platform FMZ (antara muka konfigurasi disebutkan di atas).
Maklumat yang diperlukan untuk mengkonfigurasi objek pertukaran:
Setelah konfigurasi selesai, kami boleh mengujinya pada platform FMZ Kami terus menggunakan “alat nyahpepijat” platform FMZ untuk latihan ujian.
Jika anda menggunakan objek pertukaran Hyperliquid yang dikonfigurasikan dengan maklumat testnet, anda perlu melakukan beberapa operasi penukaran apabila menggunakannya, contohnya:
function main() {
// REST协议API地址切换到测试网
exchange.SetBase("https://api.hyperliquid-testnet.xyz")
// source : a 主网 , b 测试网
exchange.IO("source", "b")
return exchange.GetAccount()
}
Konfigurasi mainnet tidak memerlukan operasi pensuisan di atas Antara muka API yang berkaitan dengan produk spot dan niaga hadapan dalam pertukaran Hyperliquid DEX adalah hampir sama, dengan hanya sedikit perbezaan dalam butiran Seterusnya, kami gunakanMaklumat konfigurasi mainnetdanMaklumat konfigurasi TestnetdaripadaNiaga Hadapan HipercecairTukar objek untuk diuji.
function main() {
var markets = exchange.GetMarkets()
if (!markets) {
throw "get markets error"
}
var tbl = {
type: "table",
title: "test markets",
cols: [
"key", "Symbol", "BaseAsset", "QuoteAsset", "TickSize", "AmountSize", "PricePrecision", "AmountPrecision", "MinQty",
"MaxQty", "MinNotional", "MaxNotional", "CtVal", "CtValCcy"
],
rows: []
}
for (var symbol in markets) {
var market = markets[symbol]
tbl.rows.push([
symbol, market.Symbol, market.BaseAsset, market.QuoteAsset, market.TickSize, market.AmountSize,
market.PricePrecision, market.AmountPrecision, market.MinQty, market.MaxQty, market.MinNotional, market.MaxNotional, market.CtVal, market.CtValCcy
])
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}

function main() {
var depth = exchange.GetDepth("ETH_USD.swap")
var asks = depth.Asks
var bids = depth.Bids
Log("买3", bids[2])
Log("买2", bids[1])
Log("买1", bids[0])
Log("卖1", asks[0])
Log("卖2", asks[1])
Log("卖3", asks[2])
}

function main() {
var account = exchange.GetAccount()
return account
}

function main() {
var symbols = ["ETH_USD.swap", "XRP_USD.swap", "HYPE_USD.swap"]
var arrDir = ["market_buy", "sell", "buy"]
var markets = exchange.GetMarkets()
var ids = []
for (var i in symbols) {
var symbol = symbols[i]
var side = arrDir[i]
var ticker = exchange.GetTicker(symbol)
var info = markets[symbol]
exchange.SetPrecision(info.PricePrecision, info.AmountPrecision)
// USDC
var qty = 15
var price = null
var amount = null
if (side == "market_buy") {
price = -1
side = "buy"
amount = qty / ticker.Last
} else {
price = side == "buy" ? ticker.Last * 0.9 : ticker.Last * 1.1
amount = qty / price
}
var id = exchange.CreateOrder(symbol, side, price, amount)
ids.push(id)
}
var tbl = {type: "table", title: "test", cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
for (var id of ids) {
var order = exchange.GetOrder(id)
tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
Sleep(500)
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}

function main() {
var orders = exchange.GetOrders("USD.swap")
for (var order of orders) {
exchange.CancelOrder(order.Id, order)
Sleep(1000)
}
var tbl = {type: "table", title: "test", cols: ["Symbol", "Id", "Price", "Amount", "DealAmount", "AvgPrice", "Status", "Type", "Offset", "ContractType"], rows: []}
for (var order of orders) {
tbl.rows.push([order.Symbol, order.Id, order.Price, order.Amount, order.DealAmount, order.AvgPrice, order.Status, order.Type, order.Offset, order.ContractType])
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}

function main() {
// 设置当前为全仓
exchange.IO("cross", true)
// 设置杠杆
exchange.SetMarginLevel("ETH_USD.swap", 10)
return exchange.GetRawJSON()
}

exchange.GetRawJSON() mengembalikan maklumat respons permintaan tetapan leverage:
{“status”:“ok”,“response”:{“type”:“default”}}
Memandangkan parameter antara muka pertukaran adalah kompleks, kaedah pengekodan URL tidak boleh digunakan untuk lulus parameter.exchange.IOApabila memanggil fungsi, hanya rentetan JSON boleh dihantar sebagai parameter Berikut ialah contoh panggilan setiap antara muka.
Dokumentasi rujukan Hyperliquid: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint#place-an-order
var params = {"type": "scheduleCancel", "time": new Date().getTime()}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
{“status”:“err”,“response”:“Cannot set scheduled cancel time until enough volume traded. Required: \(1000000. Traded: \)174.57424.”}
Fungsi ini mempunyai sekatan: akaun mesti mencapai tahap dagangan untuk menggunakan fungsi ini.
Buat pesanan TWAP.
function main() {
var params = {
"type": "twapOrder",
"twap": {
"a": 0,
"b": true,
"s": "1",
"r": false,
"m": 10,
"t": false
}
}
// SOL_USDT.swap , 订单量 : 1 , twapOrder 订单有头寸要求,最少100美元价值
// a : 0 , 即 SOL_USDT.swap 这个品种
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Batalkan pesanan TWAP.
function main() {
var params = {
"type": "twapCancel",
"a": 0,
"t": 3805
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Testnet, benarkan dompet proksi baharu.
function main() {
var params = {
"type": "approveAgent",
"hyperliquidChain": "Testnet",
"signatureChainId": "0x66eee",
"agentAddress": "0xAAAA",
"agentName": "test02",
"nonce": new Date().getTime()
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Keizinan berjaya dikembalikan:
{“status”:“ok”,“response”:{“type”:“default”}}
https://app.hyperliquid-testnet.xyz/APItengah.Tarik balik aset dari bilik kebal.
function main() {
var params = {
"type": "vaultTransfer",
"vaultAddress": "0xAAA",
"isDeposit": true,
"usd": 5000000
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Testnet, keluarkan aset ke dompet.
function main() {
var params = {
"type": "withdraw3",
"hyperliquidChain": "Testnet",
"signatureChainId": "0x66eee",
"amount": "5",
"time": new Date().getTime(),
"destination": "0xAAA"
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Pemindahan aset antara spot/futures (kontrak kekal).
function main() {
var params = {
"type": "usdClassTransfer",
"hyperliquidChain": "Testnet",
"signatureChainId": "0x66eee",
"amount": "5",
"toPerp": false,
"nonce": new Date().getTime()
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
falseMenunjukkan arah putaran: niaga hadapan -> spot.trueMenunjukkan arah pemindahan: spot -> futures .Alamat antara muka WS rangkaian utama:
Mainnet: wss://api.hyperliquid.xyz/ws
Memandangkan antara muka API protokol REST tidak mempunyai antara muka untuk mendapatkan data transaksi terkini, antara muka Websocket mempunyai saluran ini yang boleh dilanggan.
Struktur mesej langganan
{
"method": "subscribe",
"subscription": {
"type": "trades",
"coin": "SOL"
}
}
Contoh ujian yang dilaksanakan dalam penyahpepijat:
function main() {
var loopCount = 20
var subMsg = {
"method": "subscribe",
"subscription": {
"type": "trades",
"coin": "SOL"
}
}
var conn = Dial("wss://api.hyperliquid.xyz/ws")
conn.write(JSON.stringify(subMsg))
if (conn) {
for (var i = 0; i < loopCount; i++) {
var msg = conn.read(1000)
if (msg) {
Log(msg)
}
}
}
conn.close()
Log("测试结束")
}

Ujian di atas adalah berdasarkan kustodian terkini Anda perlu memuat turun kustodian terkini untuk menyokong pertukaran Hyperliquid DEX.
Terima kasih atas sokongan anda dan terima kasih kerana membaca.