avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada Pesan pribadi
4
fokus pada
1271
Pengikut

Praktik Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hyperliquid

Dibuat di: 2025-01-15 13:43:15, diperbarui pada: 2025-01-16 09:52:43
comments   2
hits   3114

[TOC]

Praktik Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hyperliquid

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

Praktik Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hyperliquid

  • 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

Praktik Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hyperliquid

  • 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.

Praktik Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hyperliquid

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:

Praktik Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hyperliquid

Praktik Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hyperliquid

  • 1. Berikan nama pada dompet proxy yang akan dibuat.

  • 2. 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:

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

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

Praktik Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hyperliquid

Data buku pesanan

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

Praktik Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hyperliquid

Aset akun

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

Praktik Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hyperliquid

Pesan dan periksa

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

Praktik Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hyperliquid

Batalkan semua pesanan

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

Praktik Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hyperliquid

Ganti leverage, ganti margin silang/margin terisolasi

function main() {
    // 设置当前为全仓
    exchange.IO("cross", true)

    // 设置杠杆
    exchange.SetMarginLevel("ETH_USD.swap", 10)

    return exchange.GetRawJSON()
}

Praktik Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hyperliquid

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)

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.

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.

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.

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.

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.

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).

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:

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

Praktik Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hyperliquid

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.