avatar of 发明者量化-小小梦 发明者量化-小小梦
fokus pada mesej peribadi
4
fokus pada
1271
Pengikut

Amalan Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hipercecair

Dicipta dalam: 2025-01-15 13:43:15, dikemas kini pada: 2025-01-16 09:52:43
comments   2
hits   3114

[TOC]

Amalan Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hipercecair

Mukadimah

Baru-baru ini, platform FMZ telah menambah sokongan untuk Hyperliquid DEX, pertukaran terdesentralisasi berprestasi tinggi, memberikan pengguna lebih banyak pilihan untuk mengambil bahagian dalam transaksi terdesentralisasi. Pada masa ini, fungsi penjaga platform FMZ telah dikemas kini sepenuhnya untuk menyokong urus niaga kontrak segera dan kontrak kekal Hyperliquid dan meliputi semua fungsi API DEX.

Gambaran Keseluruhan Platform Hyperliquid

Hyperliquid ialah blok blok L1 berprestasi tinggi yang dioptimumkan dari awal dengan visi membina sistem kewangan terbuka dalam rantaian sepenuhnya. Pengguna boleh mencipta aplikasi secara bebas dengan berinteraksi dengan komponen asli yang cekap sambil memastikan pengalaman pengguna akhir yang lancar.

Prestasi Hyperliquid L1 mencukupi untuk menyokong ekosistem aplikasi kewangan tanpa kebenaran. Semua pesanan, pengeluaran pesanan, urus niaga dan pembubaran diselesaikan dalam rantaian dengan cara yang telus sepenuhnya, dengan kelewatan blok kurang daripada 1 saat. Pada masa ini, rantaian itu menyokong kapasiti pemprosesan sehingga 100,000 pesanan sesaat.

Hyperliquid L1 menggunakan algoritma konsensus tersuai yang dipanggil HyperBFT, yang diilhamkan oleh Hotstuff dan penggantinya. Kedua-dua mekanisme konsensus dan seni bina rangkaian dioptimumkan dari bawah ke atas untuk memenuhi keperluan blockchain berprestasi tinggi.

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

Mengamalkan kandungan

Protokol REST

  • Amalan antara muka pasaran.
  • Amalan antara muka dagangan (meletakkan pesanan, membatalkan pesanan).
  • Amalan pertanyaan berkaitan transaksi (akaun, pesanan).
  • Fungsi lain (spot, pemindahan kontrak, pengeluaran bilik kebal, pemindahan aset ke dompet, dll.).

Protokol Websocket

  • Amalan langganan maklumat pertukaran (tiada antara muka Trades dalam antara muka REST, yang ditambah dengan antara muka Websocket)

Hyperliquid

  • Jenis Dagangan Hyperliquid dibahagikan kepada kontrak spot dan perpetual berdasarkan jenis dagangan Berdasarkan seni bina platform FMZ, ia juga dibahagikan kepada objek pertukaran spot Hyperliquid dan objek pertukaran niaga hadapan Hyperliquid pada platform FMZ. Mereka sepadan dengan jenis yang berbeza dalam Hyperliquid DEX masing-masing.

Pada halaman Add Exchange platform FMZ, anda boleh mengkonfigurasi objek pertukaran tempat dan niaga hadapan Hyperliquid:

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

Amalan Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hipercecair

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

    • Alamat APP Mainnet:

    https://app.hyperliquid.xyz

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

    • Uji alamat APP rangkaian:

    https://app.hyperliquid-testnet.xyz

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

Maklumat sambungan dompet, log masuk dan konfigurasi

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

  • Sambungan dompet ke Hyperliquid

Amalan Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hipercecair

  • Testnet Faucet (depositkan aset USDC ujian)

Jika anda ingin membiasakan diri dengan testnet terlebih dahulu, anda boleh mencari faucet terus pada halaman Hyperliquid selepas menyambungkan dompet anda ke Hyperliquid.

Amalan Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hipercecair

Anda boleh menuntut aset ujian Selepas menerima USDC untuk ujian, klik butang “Deposit” untuk mendepositkannya ke dalam Hyperliquid (sebaik-baiknya mempunyai beberapa ETH untuk rangkaian ujian Arbitrum).

  • Depositkan aset USDC pada mainnet

Klik butang “Deposit” untuk mendeposit, yang memerlukan pengesahan dompet dan akan menggunakan sedikit ETH pada Arbitrum.

  • Buat konfigurasi dompet proksi

Apabila melakukan transaksi manual pada halaman APP Hyperliquid, halaman tersebut akan menjana alamat dompet proksi dan kunci persendirian secara automatik, yang direkodkan dalam penyemak imbas dan digunakan untuk operasi seperti membuat pesanan pada halaman penyemak imbas Jika kita ingin melakukan pemprograman dan kuantitatif Bagaimanakah urus niaga perlu mendapatkan maklumat konfigurasi ini?

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

Amalan Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hipercecair

Amalan Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hipercecair

  • 1. Berikan nama kepada dompet proksi yang akan dibuat.

  • 2. Jana alamat dan kunci peribadi.

    1. Benarkan dompet proksi menggunakan dompet yang disambungkan kepada Hyperliquid.
  • Konfigurasikan alamat dompet proksi dan kunci peribadi di FMZ

Kemudian anda boleh mengkonfigurasi maklumat ini pada platform FMZ (antara muka konfigurasi disebutkan di atas).

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

  • Alamat Dompet: Alamat dompet disambungkan ke Hyperliquid (nota, bukan alamat dompet proksi).
  • Wallet PrivateKey: Kunci persendirian dompet yang disambungkan kepada Hyperliquid (pilihan, hanya diperlukan apabila memanggil API seperti pemindahan, boleh dibiarkan kosong).
  • Kunci Rahsia: Kunci persendirian dompet proksi (dijana dalam langkah sebelumnya, kunci persendirian dipaparkan selepas kebenaran).

Amalan Hipercecair pada FMZ

Maklumat yang diperlukan untuk mengkonfigurasi objek pertukaran:

  • Alamat Wallet digunakan untuk menanyakan maklumat transaksi pengguna
  • Wallet PrivateKey digunakan untuk pemindahan, pemindahan dan operasi lain
  • Kunci Rahsia digunakan untuk operasi berkaitan transaksi

Setelah konfigurasi selesai, kami boleh mengujinya pada platform FMZ Kami terus menggunakan “alat nyahpepijat” 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 penukaran apabila menggunakannya, contohnya:

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 pensuisan di atas Antara muka API yang berkaitan dengan produk spot dan niaga hadapan dalam pertukaran Hyperliquid DEX adalah hampir sama, dengan hanya sedikit perbezaan dalam butiran Seterusnya, kami gunakanMaklumat konfigurasi mainnetdanMaklumat konfigurasi TestnetdaripadaNiaga Hadapan HipercecairTukar objek untuk diuji.

Pelbagai Maklumat

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

Amalan Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hipercecair

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

Amalan Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hipercecair

Aset akaun

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

Amalan Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hipercecair

Pesan dan semak

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

Amalan Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hipercecair

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

Amalan Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hipercecair

Tukar leverage, tukar margin silang/margin terpencil

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

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

    return exchange.GetRawJSON()
}

Amalan Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hipercecair

exchange.GetRawJSON() mengembalikan maklumat respons permintaan tetapan leverage:

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

Antara muka lain

Memandangkan parameter antara muka pertukaran adalah kompleks, kaedah pengekodan URL tidak boleh digunakan untuk lulus parameter.exchange.IOApabila memanggil fungsi, hanya rentetan JSON boleh dihantar sebagai parameter Berikut ialah contoh panggilan setiap antara muka.

Dokumentasi rujukan 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 mempunyai sekatan: akaun mesti mencapai tahap dagangan 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, benarkan dompet proksi baharu.

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

Keizinan berjaya dikembalikan:

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

  • Buat dompet proksi API 0xAAAA ialah alamat dompet yang dijana (sekadar contoh Simpan kunci peribadi yang sepadan semasa menjananya.
  • “test02” ialah nama dompet proksi API Pasangan kunci yang dijana akan dipaparkan pada halaman APP hipercecair.https://app.hyperliquid-testnet.xyz/APItengah.

vaultTransfer

Tarik balik aset dari bilik kebal.

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”: ialah alamat peti besi.
  • “isDeposit”: benar, mengawal deposit dan deposit.

withdraw3

Testnet, keluarkan 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))
}
  • Keluarkan wang ke alamat dompet semasa anda: “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 kepadafalseMenunjukkan arah putaran: niaga hadapan -> spot.
  • Parameter “toPerp” ditetapkan kepadatrueMenunjukkan arah pemindahan: spot -> futures .

Penggunaan antara muka websocket

Alamat antara muka WS rangkaian utama:

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

Memandangkan antara muka API protokol REST tidak mempunyai antara muka untuk mendapatkan data transaksi terkini, antara muka Websocket mempunyai saluran ini yang boleh dilanggan.

Struktur mesej langganan

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

Contoh ujian yang dilaksanakan dalam penyahpepijat:

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

Amalan Kuantitatif Pertukaran DEX (2) - Panduan Pengguna Hipercecair

END

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

Terima kasih atas sokongan anda dan terima kasih kerana membaca.