Sumber dimuat naik... memuat...

DEX Exchange Quantitative Practice ((2) -- Panduan Penggunaan Hyperliquid

Penulis:Pencipta Kuantiti - Impian Kecil, Dicipta pada: 2025-01-15 13:43:15, Dikemas kini pada: 2025-01-15 17:08:49

[TOC]

DEX交易所量化实践(2)– Hyperliquid 使用指南

Pengantar

Baru-baru ini, FMZ platform telah menambah sokongan untuk pertukaran terdesentralisasi berprestasi tinggi Hyperliquid DEX, yang memberikan lebih banyak pilihan kepada pengguna untuk terlibat dalam dagangan terdesentralisasi. Pada masa ini, fungsi pengurus FMZ platform telah diperbaharui sepenuhnya untuk menyokong dagangan langsung dan kontrak kekal Hyperliquid dan merangkumi semua fungsi API DEX.

Hyperliquid platform ringkasan

Hyperliquid adalah blockchain L1 berprestasi tinggi yang dioptimumkan dari awal, dengan visi untuk membina sistem kewangan terbuka yang berantai sepenuhnya. Pengguna boleh mencipta aplikasi secara bebas dengan berinteraksi dengan komponen asli yang cekap, sambil memastikan kelancaran pengalaman pengguna akhir.

Hyperliquid L1 mempunyai keupayaan yang mencukupi untuk menyokong ekosistem aplikasi kewangan tanpa izin. Semua pesanan, pengeluaran, transaksi dan penyelesaian dilakukan di rantaian dengan cara yang sepenuhnya telus, dengan kelewatan blok kurang daripada 1 saat. Pada masa ini, rantaian ini menyokong pemprosesan sehingga 100,000 pesanan sesaat.

Hyperliquid L1 menggunakan algoritma konsensus khusus yang dikenali sebagai HyperBFT, yang diilhamkan oleh Hotstuff dan algoritma berikutnya. Kedua-dua mekanisme konsensus dan seni bina rangkaian dioptimumkan dari bawah untuk memenuhi keperluan blockchain berprestasi tinggi.

Dengan panduan ini, kami berharap dapat membantu anda dengan cepat menguasai perdagangan terprogram dan kuantitatif Hyperliquid DEX di platform FMZ dan mengeksplorasi lebih banyak peluang dagangan.

Kandungan Latihan

Protokol REST - Latihan antarmuka komunikasi. - Latihan antarmuka transaksi (memesan, menarik) - Praktik pertanyaan berkaitan transaksi (akaun, pesanan) - Fungsi lain ((Kadar tunai, pemindahan kontrak, pemindahan dana, pemindahan aset ke dompet dan lain-lain)).

Protokol Websocket - Latihan langganan maklumat pertukaran (tidak ada antarmuka Trades dalam antara muka REST, ditambah dengan antara muka Websocket)


Hipercairan

  • Perbezaan jenis dagangan Hyperliquid dibahagikan kepada jenis dagangan yang berasaskan FMZ, iaitu barang dagangan langsung, kontrak kekal, dan objek dagangan langsung Hyperliquid, dan objek dagangan hadapan Hyperliquid; masing-masing sesuai dengan pelbagai jenis dalam Hyperliquid DEX.

Pada halaman tambah bursa di platform FMZ, anda boleh mengkonfigurasi objek bursa tunai dan niaga hadapan Hyperliquid:

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

DEX交易所量化实践(2)– Hyperliquid 使用指南

  • Perbezaan alam sekitar Seperti kebanyakan bursa, Hyperliquid juga mempunyai persekitaran ujian.

    • Alamat APP:

    https://app.hyperliquid.xyz

    Di samping itu, ia juga mempunyai ciri-ciri yang berbeza, seperti penggunaan mudah alih, penggunaan mudah alih, dan sebagainya. Alamat nod API REST yang sepadan:https://api.hyperliquid.xyzSaya tidak tahu apa yang berlaku. Maklumat yang berkaitan dengan tandatangan mesej juga berbeza:source == "a"chainId = 42161

    • Alamat APP:

    https://app.hyperliquid-testnet.xyz

    Rangkaian ujian sering dipadamkan, tetapi hanya digunakan sebagai antara muka ujian, yang biasa digunakan untuk fungsi dagangan di DEX. Alamat nod API REST yang sepadan:https://api.hyperliquid-testnet.xyzSaya tidak tahu apa yang berlaku. Maklumat yang berkaitan dengan tandatangan mesej juga berbeza:source == "b"chainId = 421614

Sambungan, log masuk dan maklumat setelan dompet

Seperti kebanyakan pertukaran DEX, anda boleh menggunakan aplikasi wallet untuk menyekat kod dua dimensi untuk menyambung ke Hyperliquid (wallet beralih ke Arbitrum untuk menyekat log masuk, uji, dan web utama).

  • Dompet disambungkan ke Hyperliquid

DEX交易所量化实践(2)– Hyperliquid 使用指南

  • Faucet Ujian Rangkaian (menyerbu untuk menguji aset USDC)

Jika anda ingin mendapatkan faucet yang anda kenal terlebih dahulu dari laman web ujian, anda boleh mendapatkan faucet langsung di laman Hyperliquid selepas anda menyambung dompet anda ke Hyperliquid.

DEX交易所量化实践(2)– Hyperliquid 使用指南

Untuk mendapatkan aset ujian, selepas mendapatkan USDC untuk ujian, anda boleh mengklik butang "Deposit" untuk menyimpan ke Hyperliquid (Arbitrum Testing Net lebih baik mempunyai sedikit ETH).

  • Rangkaian utama masuk ke aset USDC

Klik butang "Deposit" untuk menyimpan, memerlukan pengesahan dompet, dan akan menghabiskan sedikit ETH di Arbitrum.

  • Membuat setup dompet ejen

Apabila transaksi dilakukan secara manual di halaman Hyperliquid APP, halaman akan secara automatik menjana alamat dompet wakil dan kunci peribadi, yang direkodkan di dalam penyemak imbas, digunakan untuk membuat pesanan di halaman penyemak imbas, dan sebagainya.

Alamat dompet proxy yang diperlukan dan kunci peribadi yang sesuai boleh dicipta di halaman API Hyperliquid:

DEX交易所量化实践(2)– Hyperliquid 使用指南

DEX交易所量化实践(2)– Hyperliquid 使用指南

  • 1, Sebutkan nama dompet ejen yang akan diwujudkan.

  • 2. Menghasilkan alamat dan kunci peribadi.

  • 3. Menggunakan dompet yang disambungkan ke Hyperliquid untuk membenarkan dompet ejen.

  • Mengatur alamat dompet ejen, kunci peribadi di FMZ

Kemudian, maklumat ini boleh dikonfigurasikan di platform FMZ (lihat antara muka konfigurasi di atas).

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

  • Alamat dompet: Alamat dompet yang disambungkan ke Hyperliquid (perhatian, bukan alamat dompet wakil).
  • Wallet PrivateKey: Kunci peribadi dompet yang disambungkan ke Hyperliquid ((tidak perlu, hanya diperlukan apabila API seperti pemindahan perlu dipanggil, boleh dibiarkan kosong) ).
  • Secret Key: Kunci peribadi dompet ejen (dalam langkah sebelumnya menghasilkan dompet ejen, kunci peribadi yang ditunjukkan selepas pengesahan).

Latihan Hyperliquid di FMZ

Maklumat yang diperlukan untuk mengkonfigurasi objek bursa:

  • Alamat dompet digunakan untuk mendapatkan maklumat seperti transaksi pengguna
  • Wallet PrivateKey digunakan untuk penghantaran, pemindahan, dan lain-lain
  • Kunci Rahsia digunakan untuk operasi yang berkaitan dengan transaksi

Apabila persediaan selesai, kami boleh menguji penggunaannya di platform FMZ, dan kami menggunakan "alat debugging" platform FMZ secara langsung untuk latihan ujian.

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

Jika anda menggunakan objek pertukaran Hyperliquid dengan konfigurasi maklumat web ujian, beberapa operasi beralih perlu dilakukan semasa penggunaannya, seperti:

function main() {
    // REST协议API地址切换到测试网
    exchange.SetBase("https://api.hyperliquid-testnet.xyz")

    // source : a 主网 , b 测试网
    exchange.IO("source", "b")

    return exchange.GetAccount()
}

Perisian utama tidak memerlukan pemindahan seperti di atas, dan API yang berkaitan dengan barangan semasa dan masa hadapan di bursa Hyperliquid DEX hampir sama, hanya sedikit perbezaan butiran.Maklumat konfigurasi rangkaian utamadanMaklumat konfigurasi rangkaian ujianPerbezaanMasa hadapan HyperliquidDi sini, kita akan melihat apa yang berlaku.

Maklumat mengenai jenis

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

DEX交易所量化实践(2)– Hyperliquid 使用指南

Data pesanan rendah

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

DEX交易所量化实践(2)– Hyperliquid 使用指南

Aset Akaun

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

DEX交易所量化实践(2)– Hyperliquid 使用指南

Pendaftaran, invois

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

DEX交易所量化实践(2)– Hyperliquid 使用指南

Perintah ditarik balik

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

DEX交易所量化实践(2)– Hyperliquid 使用指南

Pertukaran leverage, pertukaran keseluruhan / satu-satu

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

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

    return exchange.GetRawJSON()
}

DEX交易所量化实践(2)– Hyperliquid 使用指南

exchange.GetRawJSON (()) mengembalikan jawapan kepada permintaan untuk menetapkan tumpuan:

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

Antara muka lain

Oleh kerana parameter antara muka pertukaran agak rumit dan tidak dapat digunakan untuk mengenkode url,exchange.IOApabila panggilan fungsi, hanya boleh menggunakan tali JSON sebagai parameter yang dihantar, berikut adalah contoh panggilan antara muka yang berbeza.

hyperliquid Sumber: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 adalah terhad: akaun mencapai tahap urus niaga untuk menggunakan fungsi ini.

Perintah

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 Batalkan

Perintah TWAP dibatalkan.

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

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

meluluskanAgen

Perkhidmatan ini juga menyediakan kemudahan untuk pengguna yang ingin menggunakan laman web ini.

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 berjaya dikembalikan:

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

  • Membuat dompet proxy API, 0xAAAA sebagai alamat dompet yang dihasilkan (hanya contoh), dan menyimpan kunci peribadi yang sesuai semasa penciptaan.
  • test02 adalah nama dompet ejen API, dan pasangan kunci yang dihasilkan akan dipaparkan di halaman APP hyperliquidhttps://app.hyperliquid-testnet.xyz/APIAntara lain:

VaultTransfer

Perdagangan emas adalah satu perkara yang amat penting.

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: Untuk alamat simpanan.
  • isDeposit: true, kawalan akses.

menarik diri3

Di sini, saya akan cuba untuk mengesan bagaimana mereka boleh menggunakan laman web ini untuk mendapatkan maklumat mengenai mereka.

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))
}
  • Bitcoin memberi anda alamat dompet anda sekarang: 0xAAA.

usdClassTransfer

Pembagian aset antara barangan tunai / niaga hadapan (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 sebagaifalseTunjukkan arah pengalihan: futures -> spot.
  • Parameter toPerp ditetapkan sebagaitrueTunjukkan arah pengalihan: spot -> futures.

Penggunaan antara muka websocket

Alamat antara muka WS untuk laman web utama:

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

Oleh kerana REST protokol API tidak mendapatkan data transaksi terkini, Websocket mempunyai saluran yang boleh ditandatangani.

Struktur mesej langganan

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

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

DEX交易所量化实践(2)– Hyperliquid 使用指南

END

Ujian di atas, berdasarkan pengurus terkini, memerlukan pengurus terkini dimuat turun untuk menyokong pertukaran Hyperliquid DEX.

Terima kasih atas sokongan dan terima kasih kerana membaca.


Lebih lanjut