Type/to search
8
Follow
1364
Followers
Praktik Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hyperliquid
Discussions
Created 2025-01-15 13:43:15  Updated 2025-01-16 09:52:43
 2
 4152

img

Kata pengantar

Baru-baru ini, platform FMZ telah menambahkan dukungan untuk Hyperliquid DEX, bursa terdesentralisasi berkinerja tinggi, yang menyediakan pengguna lebih banyak pilihan untuk berpartisipasi dalam transaksi terdesentralisasi. Saat ini, fungsi kustodian platform FMZ telah sepenuhnya diperbarui untuk mendukung transaksi kontrak spot dan perpetual Hyperliquid dan mencakup semua fungsi API DEX.

Tinjauan Umum Platform Hyperliquid

Hyperliquid adalah blockchain L1 berkinerja tinggi yang dioptimalkan dari awal dengan visi membangun sistem keuangan terbuka yang sepenuhnya on-chain. Pengguna dapat membuat aplikasi secara mandiri dengan berinteraksi dengan komponen asli yang efisien sambil memastikan pengalaman pengguna akhir yang lancar.

Kinerja Hyperliquid L1 cukup untuk mendukung ekosistem aplikasi keuangan tanpa izin. Semua pesanan, penarikan pesanan, transaksi dan likuidasi diselesaikan secara on-chain dengan cara yang sepenuhnya transparan, dengan penundaan blok kurang dari 1 detik. Saat ini, rantai tersebut mendukung kapasitas pemrosesan hingga 100.000 pesanan per detik.

Hyperliquid L1 menggunakan algoritma konsensus khusus yang disebut HyperBFT, yang terinspirasi oleh Hotstuff dan penerusnya. Baik mekanisme konsensus maupun arsitektur jaringan dioptimalkan dari bawah ke atas untuk memenuhi kebutuhan blockchain berkinerja tinggi.

Melalui panduan ini, kami berharap dapat membantu Anda dengan cepat memulai perdagangan terprogram dan kuantitatif Hyperliquid DEX pada platform FMZ dan menemukan lebih banyak peluang perdagangan.

Konten praktik

Protokol REST

  • Praktik antarmuka pasar.
  • Praktik antarmuka perdagangan (menempatkan pesanan, membatalkan pesanan).
  • Praktik kueri terkait transaksi (akun, pesanan).
  • Fungsi lainnya (spot, transfer kontrak, penarikan brankas, transfer aset ke dompet, dll.).

Protokol Websocket

  • Praktik berlangganan informasi pertukaran (tidak ada antarmuka Perdagangan di antarmuka REST, yang dilengkapi dengan antarmuka Websocket)

Hyperliquid

  • Jenis Perdagangan
    Hyperliquid dibagi menjadi kontrak spot dan kontrak berjangka berdasarkan jenis perdagangannya. Berdasarkan arsitektur platform FMZ, Hyperliquid juga dibagi menjadi objek bursa spot Hyperliquid dan objek bursa berjangka Hyperliquid pada platform FMZ. Mereka masing-masing sesuai dengan varietas yang berbeda dalam Hyperliquid DEX.

    Pada halaman Tambah Bursa di platform FMZ, Anda dapat mengonfigurasi objek bursa spot dan berjangka Hyperliquid:

    https://www.fmz.com/m/platforms/add

    img

  • Divisi Lingkungan Hidup
    Seperti kebanyakan bursa, Hyperliquid memiliki lingkungan pengujian.

    • Alamat APP Mainnet:

      https://app.hyperliquid.xyz

      Dari pengalaman penggunaan aktual, jaringan utama relatif stabil dan kecepatannya juga bagus.
      Alamat node antarmuka API protokol REST yang sesuai:https://api.hyperliquid.xyz
      Informasi yang terkait dengan penandatanganan pesan juga berbeda:source == "a"chainId = 42161

    • Alamat APP jaringan uji:

      https://app.hyperliquid-testnet.xyz

      Jaringan pengujian sering kali macet, tetapi hanya digunakan sebagai antarmuka pengujian dan untuk membiasakan diri dengan fungsi perdagangan di DEX.
      Alamat node antarmuka API protokol REST yang sesuai:https://api.hyperliquid-testnet.xyz
      Informasi yang terkait dengan penandatanganan pesan juga berbeda:source == "b"chainId = 421614

Informasi koneksi dompet, login dan konfigurasi

Sama seperti metode koneksi dompet di sebagian besar bursa DEX, Anda dapat menggunakan aplikasi dompet untuk memindai kode QR untuk terhubung ke Hyperliquid (alihkan dompet ke Arbitrum dan pindai kode untuk masuk, jaringan uji dan jaringan utama sama) .

  • Koneksi dompet ke Hyperliquid

    img

  • Faucet Testnet (uji setoran aset USDC)

    Jika Anda ingin mengenali testnet terlebih dahulu, Anda dapat menemukan faucet langsung di halaman Hyperliquid setelah menghubungkan dompet Anda ke Hyperliquid.

    img

    Anda dapat mengklaim aset uji. Setelah menerima USDC untuk pengujian, klik tombol "Deposit" untuk menyetorkannya ke Hyperliquid (sebaiknya Anda memiliki sejumlah ETH untuk jaringan uji Arbitrum).

  • Setor aset USDC di mainnet

    Klik tombol "Deposit" untuk menyetor, yang memerlukan verifikasi dompet dan akan menghabiskan sedikit ETH di Arbitrum.

  • Buat konfigurasi dompet proxy

    Saat melakukan transaksi manual di halaman Hyperliquid APP, halaman tersebut akan secara otomatis membuat alamat dompet proxy dan kunci pribadi, yang direkam di browser dan digunakan untuk operasi seperti melakukan pemesanan di halaman browser. Jika kita ingin melakukan transaksi terprogram dan kuantitatif Bagaimana transaksi perlu memperoleh informasi konfigurasi ini?

    Anda dapat membuat alamat dompet proxy yang diperlukan dan kunci pribadi yang sesuai di halaman API Hyperliquid:

    img

    img

      1. Berikan nama pada dompet proxy yang akan dibuat.
      1. Hasilkan alamat dan kunci pribadi.
      1. Otorisasi dompet proxy menggunakan dompet yang terhubung ke Hyperliquid.
  • Konfigurasikan alamat dompet proxy dan kunci pribadi di FMZ

    Kemudian Anda dapat mengonfigurasi informasi ini pada platform FMZ (antarmuka konfigurasi disebutkan di atas).

    https://www.fmz.com/m/platforms/add

    • Alamat Dompet: Alamat dompet yang terhubung ke Hyperliquid (perhatikan, bukan alamat dompet proksi).
    • Wallet PrivateKey: Kunci pribadi dompet yang terhubung ke Hyperliquid (opsional, hanya diperlukan saat memanggil API seperti transfer, dapat dikosongkan).
    • Kunci Rahasia: Kunci pribadi dompet proksi (dibuat pada langkah sebelumnya, kunci pribadi ditampilkan setelah otorisasi).

Praktik Hyperliquid di FMZ

Informasi yang diperlukan untuk mengonfigurasi objek pertukaran:

  • Alamat Dompet digunakan untuk menanyakan informasi transaksi pengguna
  • Dompet PrivateKey digunakan untuk transfer, transfer, dan operasi lainnya
  • Kunci Rahasia digunakan untuk operasi terkait transaksi

Setelah konfigurasi selesai, kita dapat mengujinya pada platform FMZ. Kita langsung menggunakan "alat debugging" dari platform FMZ untuk praktik pengujian.

https://www.fmz.com/m/debug

Jika Anda menggunakan objek pertukaran Hyperliquid yang dikonfigurasi dengan informasi testnet, Anda perlu melakukan beberapa operasi peralihan saat menggunakannya, misalnya:

javascript
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 pengalihan di atas. Antarmuka API yang terkait dengan produk spot dan futures di bursa DEX Hyperliquid hampir sama, hanya dengan sedikit perbedaan dalam detailnya. Selanjutnya, kami menggunakanInformasi konfigurasi mainnetDanInformasi konfigurasi testnetdari Kontrak Berjangka HiperlikuidTukar objek untuk diuji.

Informasi Varietas

javascript
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) + "`") }

img

Data buku pesanan

javascript
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]) }

img

Aset akun

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

img

Pesan dan periksa

javascript
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) + "`") }

img

Batalkan semua pesanan

javascript
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) + "`") }

img

Ganti leverage, ganti margin silang/margin terisolasi

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

img

exchange.GetRawJSON() mengembalikan informasi respons dari permintaan pengaturan leverage:

{"status":"ok","response":{"type":"default"}}

Antarmuka lainnya

Karena parameter antarmuka pertukaran itu rumit, tidak mungkin menggunakan metode penyandian URL untuk meneruskan parameter.exchange.IOSaat memanggil suatu fungsi, hanya string JSON yang dapat dimasukkan sebagai parameter. Berikut ini adalah contoh pemanggilan setiap antarmuka.

Dokumentasi referensi Hyperliquid: https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint#place-an-order

Schedule Cancel (dead man's switch)

javascript
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 memiliki batasan: akun harus mencapai level perdagangan untuk menggunakan fungsi ini.

twapOrder

Buat pesanan TWAP.

javascript
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)) }

twapCancel

Batalkan pesanan TWAP.

javascript
function main() { var params = { "type": "twapCancel", "a": 0, "t": 3805 } return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params)) }

approveAgent

Testnet, otorisasi dompet proksi baru.

javascript
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)) }

Otorisasi berhasil mengembalikan:

{"status":"ok","response":{"type":"default"}}

  • Buat dompet proksi API. 0xAAAA adalah alamat dompet yang dihasilkan (hanya contoh). Simpan kunci privat terkait saat membuatnya.
  • "test02" adalah nama dompet proxy API. Pasangan kunci yang dihasilkan akan ditampilkan pada halaman APP hyperliquid.https://app.hyperliquid-testnet.xyz/APItengah.

vaultTransfer

Tarik aset dari brankas.

javascript
function main() { var params = { "type": "vaultTransfer", "vaultAddress": "0xAAA", "isDeposit": true, "usd": 5000000 } return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params)) }
  • "usd": 5000000 berarti 5 USDC.
  • "0xAAA": adalah alamat brankas.
  • "isDeposit": benar, mengontrol penyetoran dan deposit.

withdraw3

Testnet, menarik aset ke dompet.

javascript
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)) }
  • Tarik uang ke alamat dompet Anda saat ini: "0xAAA".

usdClassTransfer

Transfer aset antar spot/future (kontrak abadi).

javascript
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)) }
  • Parameter "toPerp" diatur kefalseMenunjukkan arah rotasi: futures -> spot.
  • Parameter "toPerp" diatur ketrueMenunjukkan arah transfer: spot -> futures.

Penggunaan antarmuka Websocket

Alamat antarmuka WS jaringan utama:

Mainnet: wss://api.hyperliquid.xyz/ws

Karena antarmuka API protokol REST tidak memiliki antarmuka untuk memperoleh data transaksi terkini, antarmuka Websocket memiliki saluran ini yang dapat berlangganan.

Struktur pesan berlangganan

{ "method": "subscribe", "subscription": { "type": "trades", "coin": "SOL" } }

Contoh pengujian yang dijalankan dalam debugger:

javascript
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("测试结束") }

img

END

Pengujian di atas didasarkan pada kustodian terbaru. Anda perlu mengunduh kustodian terbaru untuk mendukung bursa DEX Hyperliquid.

Terima kasih atas dukungan Anda dan terima kasih telah membaca.

Comment
All comments (2)

    服务器租个地区的

    8 months ago

    日本、新加坡、香港,都可以,具体看使用需求。

    8 months ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)