Sumber daya yang dimuat... Pemuatan...

Praktik Kuantitatif Bursa DEX (2) -- Panduan Pengguna Hyperliquid

Penulis:FMZ~Lydia, Dibuat: 2025-01-16 10:57:22, Diperbarui: 2025-01-16 10:59:23

Pengantar

Baru-baru ini, platform FMZ telah menambahkan dukungan untuk Hyperliquid DEX, pertukaran terdesentralisasi berkinerja tinggi, memberikan pengguna lebih banyak pilihan untuk berpartisipasi dalam perdagangan terdesentralisasi.

Gambaran umum platform hipercairan

Hyperliquid adalah blockchain L1 berkinerja tinggi yang dioptimalkan dari awal, dengan visi membangun sistem keuangan terbuka sepenuhnya on-chain.

Kinerja Hyperliquid L1 cukup untuk mendukung ekosistem aplikasi keuangan tanpa izin. Semua pesanan, penarikan, transaksi, dan likuidasi diselesaikan di rantai dengan cara yang benar-benar transparan, dengan latensi 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 oleh Hotstuff dan algoritmanya berikutnya.

Melalui panduan ini, kami berharap untuk membantu Anda memulai dengan programmatic dan kuantitative trading dengan cepat di Hyperliquid DEX di platform FMZ dan menemukan lebih banyak peluang trading.

Isi Latihan

Protokol REST

  • Latihan antarmuka pasar.
  • Praktik antarmuka perdagangan (penempatan pesanan, penarikan pesanan).
  • Praktik kueri yang terkait dengan transaksi (posisi, pesanan).
  • Fungsi lain (spot, transfer kontrak, penarikan dari brankas, transfer aset ke dompet, dll.).

Protokol Websocket

  • Praktek langganan pertukaran informasi (tidak ada antarmuka Trades dalam antarmuka REST, yang dilengkapi dengan antarmuka Websocket)

Hipercairan

  • Varietas perdagangan Hyperliquid dibagi menjadi kontrak spot dan kontrak perpetual berdasarkan varietas perdagangan. Berdasarkan arsitektur platform FMZ, itu juga dibagi menjadi objek pertukaran spot Hyperliquid dan objek pertukaran futures Hyperliquid di platform FMZ, yang sesuai dengan varietas yang berbeda di Hyperliquid DEX masing-masing.

Pada halaman Tambahkan platform dari platform FMZ, Anda dapat mengkonfigurasi objek pertukaran spot dan futures Hyperliquid:

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

Quantitative Practice of DEX Exchanges (2) – Hyperliquid User Guide

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

Alamat aplikasi utama:

https://app.hyperliquid.xyz

Dalam penggunaan yang sebenarnya, jaringan utama relatif stabil dan memiliki kecepatan yang baik. Alamat node antarmuka API protokol REST yang sesuai adalah:https://api.hyperliquid.xyzAku tidak tahu. Informasi yang berhubungan dengan tanda tangan pesan juga berbeda:source == "a",chainId = 42161.

Alamat APP jaringan uji:

https://app.hyperliquid-testnet.xyz

Jaringan uji sering crash, tetapi hanya digunakan sebagai antarmuka uji dan untuk membiasakan diri dengan fungsi perdagangan di DEX. Alamat node antarmuka API protokol REST yang sesuai adalah:https://api.hyperliquid-testnet.xyzAku tidak tahu. Informasi yang berhubungan dengan tanda tangan pesan juga berbeda:source == "b",chainId = 421614.

Koneksi dompet, informasi login dan konfigurasi

Sama seperti metode koneksi dompet dari sebagian besar bursa DEX, Anda dapat menggunakan dompet APP untuk memindai kode QR untuk terhubung ke Hyperliquid (mengubah dompet ke Arbitrum dan memindai kode untuk masuk, jaringan uji dan jaringan utama adalah sama).

  • Dompet yang terhubung ke Hyperliquid

Quantitative Practice of DEX Exchanges (2) – Hyperliquid User Guide

  • Testnet Leaderboard (deposit test aset USDC) Jika Anda ingin membiasakan diri dengan testnet pertama, Anda dapat menemukan leaderboard langsung di halaman Hyperliquid setelah menghubungkan dompet Anda ke Hyperliquid.

Quantitative Practice of DEX Exchanges (2) – Hyperliquid User Guide

Setelah menerima USDC untuk pengujian, klik tombol Deposit untuk mendepositkannya ke Hyperliquid (yang terbaik adalah memiliki beberapa ETH untuk jaringan pengujian Arbitrum).

  • Deposit aset USDC di jaringan utama

Klik tombol Deposit untuk menyetor, yang membutuhkan verifikasi dompet dan akan mengkonsumsi sedikit ETH di Arbitrum.

  • Buat konfigurasi dompet proxy

Ketika melakukan transaksi manual di halaman Hyperliquid APP, halaman akan secara otomatis menghasilkan alamat dompet proxy dan kunci pribadi, yang tercatat di browser dan digunakan untuk operasi seperti menempatkan pesanan di halaman browser.

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

Quantitative Practice of DEX Exchanges (2) – Hyperliquid User Guide

  1. Berikan nama untuk dompet proxy yang akan dibuat.
  2. Menghasilkan alamat dan kunci pribadi.
  3. Otorisasi dompet proxy menggunakan dompet yang terhubung ke Hyperliquid.
  • Mengkonfigurasi alamat dompet proxy dan kunci pribadi di FMZ

Kemudian Anda dapat mengkonfigurasi informasi ini pada platform FMZ (interface konfigurasi disebutkan di atas).

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

Alamat dompet: Alamat dompet yang terhubung ke Hyperliquid (catatan, bukan alamat dompet proxy). Wallet PrivateKey: Kunci pribadi dompet yang terhubung ke Hyperliquid (opsional, hanya diperlukan saat memanggil API seperti transfer, dapat dibiarkan kosong). Kunci Rahasia: Kunci pribadi dompet proxy (digenerasi pada langkah sebelumnya, kunci pribadi ditampilkan setelah otorisasi).


Praktek Hyperliquid di FMZ

Informasi yang diperlukan untuk mengkonfigurasi objek pertukaran:

  • Alamat dompet digunakan untuk menanyakan informasi transaksi pengguna
  • Dompet PrivateKey digunakan untuk transfer dan operasi lainnya
  • Kunci Rahasia digunakan untuk operasi yang berhubungan dengan transaksi

Setelah konfigurasi selesai, kita dapat mengujinya di platform FMZ. Kami langsung menggunakan debugging tool dari platform FMZ untuk latihan pengujian.

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

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

function main() {
    // REST protocol API address switched to testnet
    exchange.SetBase("https://api.hyperliquid-testnet.xyz")

    // source : a Mainnet, b Testnet
    exchange.IO("source", "b")

    return exchange.GetAccount()
}

Konfigurasi mainnet tidak memerlukan operasi switching di atas. antarmuka API yang berkaitan dengan produk spot dan futures di bursa Hyperliquid DEX hampir sama, dengan hanya sedikit perbedaan dalam detail. Selanjutnya kita menggunakanFutures HyperliquidTujuan pertukaraninformasi konfigurasi mainnetdanInformasi konfigurasi testnetuntuk pengujian.

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

Quantitative Practice of DEX Exchanges (2) – Hyperliquid User Guide

Data Buku Pemesanan

function main() {
    var depth = exchange.GetDepth("ETH_USD.swap")
    var asks = depth.Asks
    var bids = depth.Bids

    Log("asks 3", bids[2])
    Log("asks 2", bids[1])
    Log("asks 1", bids[0])

    Log("bids 1", asks[0])
    Log("bids 2", asks[1])
    Log("bids 3", asks[2])
}

Aktif Rekening

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

Hasil fungsi:

Quantitative Practice of DEX Exchanges (2) – Hyperliquid User Guide

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

Quantitative Practice of DEX Exchanges (2) – Hyperliquid User Guide

Batalkan Semua Pemesanan

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

Quantitative Practice of DEX Exchanges (2) – Hyperliquid User Guide

Switch Leverage, Switch Cross/Isolated Position

function main() {
    // Set the current position to cross position
    exchange.IO("cross", true)

    // Set leverage
    exchange.SetMarginLevel("ETH_USD.swap", 10)

    return exchange.GetRawJSON()
}

Hasil fungsi:

Quantitative Practice of DEX Exchanges (2) – Hyperliquid User Guide

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

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

Antarmuka Lainnya

Karena parameter antarmuka pertukaran relatif kompleks dan tidak dapat diteruskan menggunakan metode pengkodean URL, ketika menggunakanexchange.IOfunctionBerikut adalah contoh dari berbagai panggilan antarmuka.

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

Jadwal Batalkan

var params = {"type": "scheduleCancel", "time": new Date().getTime()}
return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))

{status:err,response:Tidak dapat mengatur waktu pembatalan yang dijadwalkan sampai volume yang cukup diperdagangkan.{\fnCandara\fs60\b1\4cH000000\4aH80}Diperdagangkan:174.57424.”}

Fungsi ini memiliki batasan: akun harus mencapai tingkat perdagangan untuk menggunakan fungsi ini.

Perintah dua

Buat perintah TWAP.

function main() {
    var params = {
        "type": "twapOrder",
        "twap": {
            "a": 0,
            "b": true,
            "s": "1",
            "r": false,
            "m": 10,
            "t": false
        }
    }

    // SOL_USDT.swap , Order Quantity: 1 , twapOrder order has position requirement, minimum value of 100 USD
    // a: 0, i.e. SOL_USDT.swap
    return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}

twap Batalkan

Batalkan perintah TWAP.

function main() {
    var params = {
        "type": "twapCancel",
        "a": 0,
        "t": 3805
    }

    return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}

menyetujuiAgen

Testnet, izinkan dompet proxy 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, kembali:

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

  • Buat dompet proxy API. 0xAAAA adalah alamat dompet yang dihasilkan (hanya contoh). Simpan kunci pribadi yang sesuai saat membuatnya.
  • test02 adalah nama dompet proxy API. Pasangan kunci yang dihasilkan akan ditampilkan di halaman APP hyperliquidhttps://app.hyperliquid-testnet.xyz/API.

VaultTransfer

Mengambil 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 deposit dan deposit.

menarik diri

Testnet, tarik 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 antara 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 menjadifalse, menunjukkan arah rotasi: berjangka -> spot.
  • Parameter toPerp diatur menjaditrue, yang menunjukkan arah rotasi: spot -> futures.

Penggunaan Websocket Interface

Alamat antarmuka WS jaringan utama:

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

Karena antarmuka API protokol REST tidak memiliki antarmuka untuk mendapatkan data transaksi baru-baru ini, antarmuka Websocket memiliki saluran ini yang dapat berlangganan.

Struktur pesan langganan

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

Contoh pengujian yang dijalankan 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("End of test")
}

Quantitative Practice of DEX Exchanges (2) – Hyperliquid User Guide

Penghentian

Tes di atas didasarkan pada docker terbaru. Anda perlu mengunduh docker terbaru untuk mendukung pertukaran Hyperliquid DEX.

Terima kasih atas dukungannya dan terima kasih sudah membaca.


Lebih banyak