Sumber dimuat naik... memuat...

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

Penulis:FMZ~Lydia, Dicipta: 2025-01-16 10:57:22, Dikemas kini: 2025-01-16 10:59:23

Pengantar

Baru-baru ini, platform FMZ telah menambah sokongan untuk Hyperliquid DEX, pertukaran terdesentralisasi berprestasi tinggi, memberikan pengguna lebih banyak pilihan untuk mengambil bahagian dalam perdagangan terdesentralisasi.

Gambaran keseluruhan platform hipercairan

Hyperliquid adalah blockchain L1 berprestasi tinggi yang dioptimumkan dari awal, dengan visi membina sistem kewangan terbuka sepenuhnya.

Kinerja Hyperliquid L1 mencukupi untuk menyokong ekosistem aplikasi kewangan tanpa kebenaran. Semua pesanan, pengeluaran, transaksi, dan pembubaran diselesaikan di rantaian dengan cara yang sepenuhnya telus, dengan latensi blok kurang dari 1 saat. Pada masa ini, rantaian menyokong kapasiti pemprosesan sehingga 100,000 pesanan sesaat.

Hyperliquid L1 menggunakan algoritma konsensus tersuai yang dipanggil HyperBFT, yang diilhamkan oleh Hotstuff dan algoritma berikutnya.

Melalui panduan ini, kami berharap dapat membantu anda memulakan perdagangan programatik dan kuantitatif dengan cepat di Hyperliquid DEX di platform FMZ dan menemui lebih banyak peluang perdagangan.

Kandungan Latihan

Protokol REST

  • Latihan antara muka pasaran.
  • Amalan antara muka dagangan (penempatan pesanan, penarikan balik pesanan).
  • Amalan pertanyaan yang berkaitan dengan transaksi (posisi, pesanan).
  • Fungsi lain (spot, pemindahan kontrak, pengeluaran peti besi, pemindahan aset ke dompet, dll.).

Protokol Websocket

  • Praktik langganan pertukaran maklumat (tidak ada antara muka Perdagangan dalam antara muka REST, yang dilengkapi dengan antara muka Websocket)

Hipercairan

  • Varieti Dagangan Hyperliquid dibahagikan kepada kontrak spot dan kontrak kekal berdasarkan jenis dagangan. Berdasarkan seni bina platform FMZ, ia juga dibahagikan kepada objek pertukaran spot Hyperliquid dan objek pertukaran niaga hadapan Hyperliquid di platform FMZ, yang sepadan dengan pelbagai jenis dalam Hyperliquid DEX masing-masing.

Pada halaman Tambah platform platform FMZ, anda boleh mengkonfigurasi objek pertukaran spot dan niaga hadapan Hyperliquid:

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

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

  • Bahagian Alam Sekitar Seperti kebanyakan pertukaran, Hyperliquid juga mempunyai persekitaran ujian.

Alamat APP utama:

https://app.hyperliquid.xyz

Dalam penggunaan sebenar, rangkaian utama agak stabil dan mempunyai kelajuan yang baik. Alamat nod antara muka API protokol REST yang sepadan adalah:https://api.hyperliquid.xyz. Maklumat yang berkaitan dengan tandatangan mesej juga berbeza:source == "a",chainId = 42161.

Alamat APP rangkaian ujian:

https://app.hyperliquid-testnet.xyz

Rangkaian ujian sering terhempas, tetapi ia hanya digunakan sebagai antara muka ujian dan untuk membiasakan diri dengan fungsi perdagangan pada DEX. Alamat nod antara muka API protokol REST yang sepadan adalah:https://api.hyperliquid-testnet.xyz. Maklumat yang berkaitan dengan tandatangan mesej juga berbeza:source == "b",chainId = 421614.

Sambungan dompet, log masuk dan maklumat konfigurasi

Sama seperti kaedah sambungan dompet kebanyakan pertukaran DEX, anda boleh menggunakan APP dompet untuk mengimbas kod QR untuk menyambung ke Hyperliquid (tukar dompet ke Arbitrum dan imbas kod untuk log masuk, rangkaian ujian dan rangkaian utama adalah sama).

  • Dompet disambungkan ke Hyperliquid

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

  • Tabel Pimpinan Testnet (aset USDC ujian deposit) Jika anda ingin membiasakan diri dengan testnet terlebih dahulu, anda boleh mencari leaderboard terus di halaman Hyperliquid selepas menyambungkan dompet anda ke Hyperliquid.

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

Anda boleh menuntut aset ujian. Selepas menerima USDC untuk ujian, klik butang Deposit untuk mendepositkannya ke Hyperliquid (yang terbaik adalah mempunyai beberapa ETH untuk rangkaian ujian Arbitrum).

  • Simpan aset USDC di rangkaian utama

Klik butang Deposit untuk deposit, yang memerlukan pengesahan dompet dan akan memakan sedikit ETH di Arbitrum.

  • Buat konfigurasi dompet proksi

Apabila melakukan transaksi manual di halaman Hyperliquid APP, halaman akan secara automatik menjana alamat dompet proksi dan kunci peribadi, yang direkodkan di penyemak imbas dan digunakan untuk operasi seperti meletakkan pesanan di halaman penyemak imbas.

Anda boleh membuat alamat dompet proksi yang diperlukan dan kunci peribadi yang sepadan di halaman Hyperliquid API:

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

  1. Berikan nama dompet proksi yang akan dicipta.
  2. Membuat alamat dan kunci peribadi.
  3. Mengizinkan dompet proksi menggunakan dompet yang disambungkan ke Hyperliquid.
  • Mengatur alamat dompet proksi dan kunci peribadi di FMZ

Kemudian anda boleh mengkonfigurasi maklumat ini di platform FMZ (sambungan konfigurasi disebutkan di atas).

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

Alamat dompet: Alamat dompet yang disambungkan ke Hyperliquid (catatan, bukan alamat dompet proksi). Wallet PrivateKey: Kunci peribadi dompet yang disambungkan ke Hyperliquid (pilihan, hanya diperlukan apabila memanggil API seperti pemindahan, ia boleh dibiarkan kosong). Kunci Rahsia: Kunci peribadi dompet proksi (dijana dalam langkah sebelumnya, kunci peribadi yang dipaparkan selepas pengesahan).


Latihan Hyperliquid di FMZ

Maklumat yang diperlukan untuk mengkonfigurasi objek pertukaran:

  • Alamat dompet digunakan untuk menanyakan maklumat transaksi pengguna
  • Dompet PrivateKey digunakan untuk pemindahan dan operasi lain
  • Kunci Rahsia digunakan untuk operasi yang berkaitan dengan transaksi

Setelah konfigurasi selesai, kita boleh menguji ia di platform FMZ. Kami secara langsung menggunakan debugging tool dari platform FMZ untuk latihan ujian.

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

Jika anda menggunakan objek pertukaran Hyperliquid yang dikonfigurasikan dengan maklumat testnet, anda perlu melakukan beberapa operasi beralih semasa menggunakannya, contohnya:

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 beralih di atas. Antara muka API yang berkaitan dengan produk spot dan niaga hadapan dalam pertukaran Hyperliquid DEX hampir sama, dengan hanya sedikit perbezaan dalam butiran. Seterusnya kita menggunakanMasa Depan HyperliquidObjek pertukaranMaklumat konfigurasi mainnetdanMaklumat konfigurasi testnetuntuk ujian.

Maklumat Varieti

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 Perintah

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 Akaun

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

Hasil fungsi:

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

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

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

Pengubah 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 maklumat tindak balas permintaan tetapan leverage:

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

Antara muka lain

Memandangkan parameter antara muka pertukaran agak kompleks dan tidak boleh dihantar menggunakan kaedah pengekodan URL, apabila menggunakanexchange.IOfunctionpanggilan, hanya rentetan JSON boleh dihantar sebagai parameter. Berikut adalah contoh pelbagai panggilan antara muka.

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

Jadual Batalkan

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

{status:err,response:Tidak boleh menetapkan masa pembatalan yang dijadualkan sehingga jumlah yang mencukupi didagangkan.Perdagangan:174.57424.”}

Fungsi ini mempunyai sekatan: akaun mesti mencapai tahap perdagangan untuk menggunakan fungsi ini.

Perintah

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

meluluskanAgen

Testnet, membenarkan 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))
}

Pengesahan berjaya, kembali:

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

  • Buat dompet proksi API. 0xAAAA adalah alamat dompet yang dijana (hanya contoh). Simpan kunci peribadi yang sepadan semasa menjana.
  • test02 adalah nama dompet proksi API. Pasangan kunci yang dihasilkan akan dipaparkan pada halaman APP hyperliquidhttps://app.hyperliquid-testnet.xyz/API.

VaultTransfer

Keluarkan aset dari peti besi.

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

menarik diri3

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 wang ke alamat dompet anda sekarang: 0xAAA.

usdClassTransfer

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))
}
  • Parameter toPerp ditetapkan kepadafalse, yang menunjukkan arah putaran: niaga hadapan -> spot.
  • Parameter toPerp ditetapkan kepadatrue, yang menunjukkan arah putaran: spot -> niaga hadapan.

Penggunaan Antara muka Websocket

Alamat antara muka WS rangkaian utama:

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

Oleh kerana antara muka API protokol REST tidak mempunyai antara muka untuk mendapatkan data transaksi baru-baru ini, antara muka Websocket mempunyai saluran ini yang boleh dilabel.

Struktur mesej langganan

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

Contoh ujian 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

END

Ujian di atas adalah berdasarkan docker terkini. Anda perlu memuat turun docker terkini untuk menyokong pertukaran Hyperliquid DEX.

Terima kasih atas sokongan anda dan terima kasih kerana membaca.


Lebih lanjut