Tài nguyên đang được tải lên... tải...

Thực hành định lượng của DEX Exchange (2) -- Hướng dẫn người dùng Hyperliquid

Tác giả:FMZ~Lydia, Tạo: 2025-01-16 10:57:22, Cập nhật: 2025-01-16 10:59:23

Lời giới thiệu

Gần đây, nền tảng FMZ đã thêm hỗ trợ cho Hyperliquid DEX, một sàn giao dịch phi tập trung hiệu suất cao, cung cấp cho người dùng nhiều tùy chọn hơn để tham gia giao dịch phi tập trung.

Tổng quan nền tảng Hyperliquid

Hyperliquid là một blockchain L1 hiệu suất cao được tối ưu hóa từ đầu, với tầm nhìn xây dựng một hệ thống tài chính mở hoàn toàn trên chuỗi. Người dùng có thể tự tạo ứng dụng bằng cách tương tác với các thành phần gốc hiệu quả trong khi đảm bảo trải nghiệm người dùng cuối trơn tru.

Hiệu suất của Hyperliquid L1 đủ để hỗ trợ một hệ sinh thái ứng dụng tài chính không cần giấy phép. Tất cả các đơn đặt hàng, rút tiền, giao dịch và thanh lý được hoàn thành trên chuỗi một cách hoàn toàn minh bạch, với độ trễ khối dưới 1 giây.

Hyperliquid L1 sử dụng thuật toán đồng thuận tùy chỉnh được gọi là HyperBFT, lấy cảm hứng từ Hotstuff và các thuật toán tiếp theo của nó.

Thông qua hướng dẫn này, chúng tôi hy vọng sẽ giúp bạn bắt đầu giao dịch theo chương trình và định lượng nhanh chóng trên Hyperliquid DEX trên nền tảng FMZ và khám phá thêm các cơ hội giao dịch.

Nội dung thực hành

Giao thức REST

  • Thực hành giao diện thị trường.
  • Thực hành giao dịch giao diện (đặt lệnh, rút lệnh).
  • Thực hành truy vấn liên quan đến giao dịch (các vị trí, lệnh).
  • Các chức năng khác (điện diện, chuyển giao hợp đồng, rút tiền từ hầm, chuyển tài sản vào ví, v.v.).

Giao thức Websocket

  • Thực hành đăng ký trao đổi thông tin (không có giao diện Trades trong giao diện REST, được bổ sung bởi giao diện Websocket)

Hyperliquid

  • Loại giao dịch Hyperliquid được chia thành các hợp đồng tại chỗ và vĩnh viễn dựa trên các loại giao dịch. Dựa trên kiến trúc của nền tảng FMZ, nó cũng được chia thành các đối tượng trao đổi tại chỗ Hyperliquid và các đối tượng trao đổi tương lai Hyperliquid trên nền tảng FMZ, tương ứng với các loại khác nhau trong Hyperliquid DEX.

Trên trang Thêm nền tảng của nền tảng FMZ, bạn có thể cấu hình các đối tượng trao đổi giao dịch hiện tại và tương lai Hyperliquid:

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

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

  • Sở Môi trường Giống như hầu hết các sàn giao dịch, Hyperliquid cũng có một môi trường thử nghiệm.

Địa chỉ APP mạng chính:

https://app.hyperliquid.xyz

Trong sử dụng thực tế, mạng chính tương đối ổn định và có tốc độ tốt. Địa chỉ nút giao diện API giao thức REST tương ứng là:https://api.hyperliquid.xyz. Thông tin liên quan đến chữ ký tin nhắn cũng khác nhau:source == "a",chainId = 42161.

Địa chỉ APP mạng thử nghiệm:

https://app.hyperliquid-testnet.xyz

Mạng thử nghiệm thường bị sập, nhưng nó chỉ được sử dụng như một giao diện thử nghiệm và để làm quen với các chức năng giao dịch trên DEX. Địa chỉ nút giao diện API giao thức REST tương ứng là:https://api.hyperliquid-testnet.xyz. Thông tin liên quan đến chữ ký tin nhắn cũng khác nhau:source == "b",chainId = 421614.

Thông tin kết nối ví, đăng nhập và cấu hình

Cũng giống như phương pháp kết nối ví của hầu hết các sàn giao dịch DEX, bạn có thể sử dụng APP ví để quét mã QR để kết nối với Hyperliquid (chuyển ví sang Arbitrum và quét mã để đăng nhập, mạng thử nghiệm và mạng chính giống nhau).

  • Ví được kết nối với Hyperliquid

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

  • Bảng xếp hạng testnet (tiền chứng khoán USDC kiểm tra tiền gửi) Nếu bạn muốn làm quen với testnet trước tiên, bạn có thể tìm thấy bảng xếp hạng trực tiếp trên trang Hyperliquid sau khi kết nối ví của bạn với Hyperliquid.

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

Bạn có thể yêu cầu tài sản thử nghiệm. Sau khi nhận USDC để thử nghiệm, bấm nút Deposit để gửi vào Hyperliquid (tốt nhất là có một số ETH cho mạng thử nghiệm Arbitrum).

  • Nạp tài sản USDC vào mạng chính

Nhấp vào nút Deposit để gửi tiền, đòi hỏi xác minh ví và sẽ tiêu thụ một chút ETH trên Arbitrum.

  • Tạo cấu hình ví proxy

Khi thực hiện giao dịch thủ công trên trang Hyperliquid APP, trang sẽ tự động tạo ra địa chỉ ví proxy và khóa riêng, được ghi lại trong trình duyệt và được sử dụng cho các hoạt động như đặt hàng trên trang trình duyệt.

Bạn có thể tạo địa chỉ ví proxy cần thiết và khóa riêng tương ứng trên trang API Hyperliquid:

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

  1. Đưa tên cho ví proxy được tạo.
  2. Tạo địa chỉ và khóa riêng.
  3. Cho phép ví proxy bằng ví được kết nối với Hyperliquid.
  • Thiết lập địa chỉ ví proxy và khóa riêng trên FMZ

Sau đó, bạn có thể cấu hình thông tin này trên nền tảng FMZ (cổng giao diện cấu hình được đề cập ở trên).

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

Địa chỉ ví: Địa chỉ ví được kết nối với Hyperliquid (lưu ý, không phải địa chỉ ví proxy). Wallet PrivateKey: Chìa khóa riêng của ví được kết nối với Hyperliquid (tùy chọn, chỉ cần khi gọi API như chuyển tiền, nó có thể được để trống). Chìa khóa bí mật: Chìa khóa riêng của ví proxy (được tạo trong bước trước, khóa riêng được hiển thị sau khi ủy quyền).


Thực hành siêu lỏng trên FMZ

Thông tin cần thiết để cấu hình đối tượng trao đổi:

  • Địa chỉ ví được sử dụng để truy vấn thông tin giao dịch của người dùng
  • Wallet PrivateKey được sử dụng để chuyển tiền và các hoạt động khác
  • Chìa khóa bí mật được sử dụng cho các hoạt động liên quan đến giao dịch

Một khi cấu hình hoàn tất, chúng ta có thể kiểm tra nó trên nền tảng FMZ. Chúng ta trực tiếp sử dụng công cụ gỡ lỗi của nền tảng FMZ để thực hành kiểm tra.

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

Nếu bạn đang sử dụng một đối tượng trao đổi Hyperliquid được cấu hình với thông tin testnet, bạn sẽ cần thực hiện một số hoạt động chuyển đổi khi sử dụng nó, ví dụ:

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

Các giao diện API liên quan đến các sản phẩm giao ngay và tương lai trong sàn giao dịch Hyperliquid DEX gần như giống nhau, chỉ có những khác biệt nhỏ trong chi tiết.Các hợp đồng tương lai siêu lỏngĐối tượng trao đổi củathông tin cấu hình mainnetThông tin cấu hình testnetđể thử nghiệm.

Thông tin về giống

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

Dữ liệu sổ đặt hàng

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

Tài sản tài khoản

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

Kết quả chức năng:

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

Trật tự và kiểm tra

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

Hủy tất cả các đơn đặt hàng

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

Động lực chuyển đổi, chuyển đổi vị trí chéo/độc lập

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

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

    return exchange.GetRawJSON()
}

Kết quả chức năng:

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

exchange.GetRawJSON() trả về thông tin phản hồi của yêu cầu thiết lập đòn bẩy:

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

Các giao diện khác

Vì các thông số giao diện của trao đổi tương đối phức tạp và không thể được truyền bằng cách sử dụng phương pháp mã hóa URL, khi sử dụngexchange.IOfunctionSau đây là những ví dụ về các cuộc gọi giao diện khác nhau.

tài liệu tham chiếu siêu lỏng:https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint#place-an-order

Chương trình hủy bỏ.

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

{status:err,response: Không thể thiết lập thời gian hủy lịch trình cho đến khi đủ khối lượng giao dịch.Đổi đổi:174.57424.”}

Chức năng này có những hạn chế: tài khoản phải đạt đến mức giao dịch để sử dụng chức năng này.

Đặt hàng

Tạo lệnh 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))
}

twapHủy bỏ

Hủy lệnh TWAP.

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

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

chấp thuận

Testnet, cho phép một ví proxy mới.

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

Quyền truy cập thành công, trả về:

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

  • Tạo ví proxy API. 0xAAAA là địa chỉ ví được tạo (chỉ là một ví dụ).
  • test02 là tên ví proxy API. Cặp phím được tạo sẽ được hiển thị trên trang APP siêu lỏnghttps://app.hyperliquid-testnet.xyz/API.

vaultTransfer

Lấy tài sản ra khỏi hầm an toàn.

function main() {
    var params = {
        "type": "vaultTransfer",
        "vaultAddress": "0xAAA",
        "isDeposit": true,
        "usd": 5000000
    }
    
    return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
  • usd: 5000000 nghĩa là 5 USDC.
  • 0xAAA: là địa chỉ của hầm an toàn.
  • isDeposit: đúng, kiểm soát tiền gửi và tiền gửi.

rút lại

Testnet, rút tài sản vào ví.

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))
}
  • Thu tiền vào địa chỉ ví hiện tại của bạn: 0xAAA.

usdClassTransfer

Chuyển đổi tài sản giữa giao dịch tại chỗ/thương mại tương lai (hợp đồng vĩnh viễn).

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 được đặt thànhfalse, chỉ định hướng xoay: tương lai -> giao ngay.
  • Parameter toPerp được đặt thànhtrue, chỉ định hướng xoay: spot -> tương lai.

Sử dụng giao diện Websocket

Địa chỉ giao diện WS mạng chính:

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

Vì giao diện API giao thức REST không có giao diện để lấy dữ liệu giao dịch gần đây, giao diện Websocket có kênh này có thể đăng ký.

Cấu trúc tin nhắn đăng ký

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

Ví dụ về thử nghiệm được thực hiện trong các công cụ gỡ lỗi:

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

Kết thúc

Các bài kiểm tra trên dựa trên docker mới nhất. Bạn cần tải xuống docker mới nhất để hỗ trợ trao đổi Hyperliquid DEX.

Cảm ơn sự ủng hộ của các bạn và cảm ơn đã đọc.


Thêm nữa