[TOC]
Baru-baru ini, platform FMZ telah menambahkan dukungan baru untuk pertukaran desentralisasi kinerja tinggi Hyperliquid DEX, yang memberikan lebih banyak pilihan bagi pengguna untuk berpartisipasi dalam perdagangan desentralisasi. Saat ini, fungsi administrator platform FMZ telah diperbarui secara lengkap untuk mendukung perdagangan langsung dan kontrak permanen Hyperliquid dan mencakup semua fungsi API DEX.
Hyperliquid Platform
Hyperliquid adalah sebuah blockchain L1 berkinerja tinggi yang dioptimalkan dari awal, dengan visi untuk membangun sistem keuangan terbuka yang benar-benar berantai. Pengguna dapat membuat aplikasi sendiri dengan berinteraksi dengan komponen asli yang efisien, sambil memastikan kelancaran pengalaman pengguna akhir.
Kinerja Hyperliquid L1 cukup untuk mendukung ekosistem aplikasi keuangan tanpa izin. Semua pesanan, penarikan, transaksi, dan liquidasi dilakukan di rantai dengan cara yang sepenuhnya transparan, dengan keterlambatan blok kurang dari 1 detik. Saat ini rantai mendukung kapasitas pemrosesan hingga 100.000 pesanan per detik.
Hyperliquid L1 menggunakan algoritma konsensus khusus yang disebut HyperBFT, yang terinspirasi dari Hotstuff dan algoritma berikutnya. Baik mekanisme konsensus maupun arsitektur jaringan dioptimalkan dari bawah untuk memenuhi kebutuhan blockchain berkinerja tinggi.
Dengan panduan ini, kami berharap dapat membantu Anda dengan cepat menguasai transaksi terprogram dan kuantitatif Hyperliquid DEX di platform FMZ dan mengeksplorasi lebih banyak peluang perdagangan.
Protokol REST - Praktik antarmuka komunikasi. - Praktek antarmuka transaksi (Pesenan, Pengunduran Diri) - Praktik pertanyaan terkait transaksi (akun, pesanan) - Fungsi lain (cash, contract transfer, cash deposit, asset transfer to wallet, dll.)
Protokol Websocket - Praktek berlangganan informasi pertukaran (tidak ada antarmuka Trades di antarmuka REST, ditambah dengan antarmuka Websocket)
Pada halaman menambahkan bursa di FMZ, Anda dapat mengkonfigurasi objek bursa spot dan futures Hyperliquid:
Pengelompokan lingkungan Seperti kebanyakan bursa, Hyperliquid juga memiliki lingkungan pengujian.
"Saya tidak tahu apa yang akan terjadi, tapi saya pikir itu akan menjadi lebih baik jika saya tidak melakukan hal yang sama", katanya.
Alamat node interface API REST protokol yang sesuai:https://api.hyperliquid.xyz
Saya tidak tahu.
Informasi yang terkait dengan tanda tangan juga berbeda:source == "a"
,chainId = 42161
Jaringan pengujian sering kali rusak, tetapi hanya digunakan sebagai antarmuka pengujian, untuk mengetahui fungsi transaksi di DEX.
Alamat node interface API REST protokol yang sesuai:https://api.hyperliquid-testnet.xyz
Saya tidak tahu.
Informasi yang terkait dengan tanda tangan juga berbeda:source == "b"
,chainId = 421614
Seperti halnya dengan sebagian besar DEX, Anda dapat menggunakan wallet APP untuk meng-scan kode dua dimensi untuk terhubung ke Hyperliquid (wallet beralih ke Arbitrum untuk meng-scan login, test net, dan home net dengan cara yang sama).
Jika Anda ingin mengetahui lebih lanjut tentang jaringan pengujian, Anda dapat menemukan keran langsung di halaman Hyperliquid setelah dompet Anda terhubung ke Hyperliquid.
Setelah mendapatkan aset uji coba dan USDC untuk uji coba, klik tombol "deposit" untuk menyimpan ke Hyperliquid (Arbitrum Testing Net, sebaiknya sedikit ETH).
Klik tombol "Deposit" untuk melakukan deposit, Anda memerlukan verifikasi dompet dan akan menghabiskan sedikit ETH di Arbitrum.
Ketika transaksi dilakukan secara manual di halaman Hyperliquid APP, halaman akan secara otomatis menghasilkan alamat dompet proxy dan kunci pribadi, yang tercatat di browser, untuk melakukan transaksi di halaman browser, bagaimana kita mendapatkan informasi konfigurasi ini jika kita ingin melakukan transaksi terprogram dan kuantitatif?
Anda dapat membuat alamat dompet proxy yang diperlukan dan kunci pribadi yang sesuai di halaman API Hyperliquid:
1, Sebutkan nama dompet agen yang akan dibuat.
2. Menghasilkan alamat dan kunci pribadi.
3. Menggunakan dompet yang terhubung ke Hyperliquid untuk mengizinkan dompet proxy.
Mengkonfigurasi alamat dompet agen, kunci pribadi di FMZ
Setelah itu, informasi tersebut dapat dikonfigurasi di platform FMZ (lihat antarmuka konfigurasi di atas).
Informasi yang dibutuhkan untuk mengkonfigurasi objek bursa:
Setelah konfigurasi selesai, kami dapat menguji penggunaannya di platform FMZ, dan kami langsung menggunakan "Debugging Tool" dari platform FMZ untuk melakukan praktik pengujian.
Jika Anda menggunakan objek Hyperliquid Exchange dengan konfigurasi informasi testnet, beberapa operasi switching perlu dilakukan saat digunakan, seperti:
function main() {
// REST协议API地址切换到测试网
exchange.SetBase("https://api.hyperliquid-testnet.xyz")
// source : a 主网 , b 测试网
exchange.IO("source", "b")
return exchange.GetAccount()
}
Konfigurasi jaringan utama tidak memerlukan operasi switching di atas, dan antarmuka API yang terkait dengan varietas spot dan futures di Hyperliquid DEX hampir sama, hanya dengan sedikit perbedaan detail, selanjutnya kita akan menggunakanInformasi konfigurasi jaringan utamadanInformasi konfigurasi test netPerbedaanHyperliquid Futures"Saya tidak tahu apa yang akan terjadi", katanya.
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 jawaban atas permintaan set lever:
{
status : ok , response :{ type : default }}
Karena parameter antarmuka pertukaran yang relatif rumit, tidak mungkin untuk menggunakan cara pengkodean url untuk mengirim data, maka penggunaanexchange.IO
Pada saat panggilan fungsi, hanya dapat menggunakan string JSON sebagai parameter input, berikut adalah contoh panggilan antarmuka masing-masing.
Hyperliquid Referensi: http://www.hyperliquid.com/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 {\fnCandara\fs60\b1\4cH000000\4aH80}Diperdagangkan:174.57424.”}: err , response : Tidak dapat mengatur waktu pembatalan yang dijadwalkan sampai volume yang cukup diperdagangkan.
Fungsi ini terbatas: akun mencapai tingkat transaksi untuk menggunakan fitur 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))
}
TWAP telah membatalkan pesanan mereka.
function main() {
var params = {
"type": "twapCancel",
"a": 0,
"t": 3805
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
Perangkat lunak ini juga dapat digunakan untuk mengaktifkan dan mengaktifkan perangkat lunak lain.
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))
}
Permit berhasil kembali:
{
status : ok , response :{ type : default }}
https://app.hyperliquid-testnet.xyz/API
Di tengah-tengah."Saya tidak tahu apa yang akan terjadi", katanya.
function main() {
var params = {
"type": "vaultTransfer",
"vaultAddress": "0xAAA",
"isDeposit": true,
"usd": 5000000
}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
"Saya tidak tahu apa yang akan terjadi di masa depan, tapi saya pikir itu akan menjadi masalah besar", katanya.
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))
}
Pembagian aset antara spot/future (kontrak permanen)
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))
}
false
Fitur yang digunakan untuk menandai arah perputaran: futures -> spot.true
Ini menunjukkan arah perputaran: spot -> futures.Situs web ini memiliki alamat antarmuka WS:
Mainnet: wss://api.hyperliquid.xyz/ws
Karena antarmuka API REST tidak mendapatkan antarmuka data transaksi terbaru, antarmuka Websocket memiliki saluran yang dapat Anda berlangganan.
Struktur Pendaftaran
{
"method": "subscribe",
"subscription": {
"type": "trades",
"coin": "SOL"
}
}
Contoh-contoh pengujian yang dilakukan dalam alat debugging:
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("测试结束")
}
Tes di atas, berdasarkan pengelola terbaru, membutuhkan pengelola terbaru untuk mendukung bursa Hyperliquid DEX.
Terima kasih atas dukungannya dan terima kasih telah membaca.