avatar of 发明者量化-小小梦 发明者量化-小小梦
tập trung vào tin nhắn riêng tư
4
tập trung vào
1271
Người theo dõi

Thực hành định lượng DEX Exchange (2) - Hướng dẫn sử dụng Hyperliquid

Được tạo ra trong: 2025-01-15 13:43:15, cập nhật trên: 2025-01-16 09:52:43
comments   2
hits   3114

[TOC]

Thực hành định lượng DEX Exchange (2) - Hướng dẫn sử dụng Hyperliquid

Lời nói đầu

Gần đây, nền tảng FMZ đã bổ sung 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 lựa chọn hơn để tham gia vào các giao dịch phi tập trung. Hiện tại, chức năng lưu ký của nền tảng FMZ đã được cập nhật đầy đủ để hỗ trợ các giao dịch hợp đồng giao ngay và hợp đồng vĩnh viễn của Hyperliquid và bao gồm tất cả các chức năng API của DEX.

Tổng quan về nền tảng Hyperliquid

Hyperliquid là 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ạo ứng dụng độc lập bằng cách tương tác với các thành phần gốc hiệu quả trong khi vẫn đảm bảo trải nghiệm mượt mà cho người dùng cuối.

Hiệu suất của Hyperliquid L1 đủ để hỗ trợ hệ sinh thái ứng dụng tài chính không cần xin phép. Tất cả các lệnh, lệnh rút, giao dịch và thanh lý đều đượ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. Hiện tại, chuỗi này có khả năng xử lý tới 100.000 đơn hàng mỗi giây.

Hyperliquid L1 sử dụng thuật toán đồng thuận tùy chỉnh có tên là HyperBFT, lấy cảm hứng từ Hotstuff và các phiên bản kế nhiệm của nó. Cả cơ chế đồng thuận và kiến ​​trúc mạng đều được tối ưu hóa từ dưới lên để đáp ứng nhu cầu của blockchain hiệu suất cao.

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

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 diện giao dịch (đặt lệnh, hủy lệnh).
  • Thực hành truy vấn liên quan đến giao dịch (tài khoản, đơn hàng).
  • Các chức năng khác (giao ngay, chuyển hợp đồng, rút ​​tiền từ két, chuyển tài sản vào ví, v.v.).

Giao thức Websocket

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

Hyperliquid

  • Phân loại loại hình giao dịch Hyperliquid được chia thành hợp đồng giao ngay và hợp đồng 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 giao dịch giao ngay Hyperliquid và các đối tượng giao dịch tương lai Hyperliquid trên nền tảng FMZ. Chúng tương ứng với các loại khác nhau trong Hyperliquid DEX.

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

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

Thực hành định lượng DEX Exchange (2) - Hướng dẫn sử dụng Hyperliquid

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

    • Địa chỉ ứng dụng Mainnet:

    https://app.hyperliquid.xyz

    Theo kinh nghiệm sử dụng thực tế thì mạng chính tương đối ổn định và tốc độ cũng tốt. Địa chỉ nút giao diện API giao thức REST tương ứng:https://api.hyperliquid.xyz。 Thông tin liên quan đến việc 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 làm giao diện thử nghiệm và để bạn 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:https://api.hyperliquid-testnet.xyz。 Thông tin liên quan đến việc ký tin nhắn cũng khác nhau:source == "b"chainId = 421614

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

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

  • Kết nối ví với Hyperliquid

Thực hành định lượng DEX Exchange (2) - Hướng dẫn sử dụng Hyperliquid

  • Vòi Testnet (kiểm tra tiền gửi tài sản USDC)

Nếu bạn muốn làm quen với mạng thử nghiệm trước, bạn có thể tìm vòi trực tiếp trên trang Hyperliquid sau khi kết nối ví của bạn với Hyperliquid.

Thực hành định lượng DEX Exchange (2) - Hướng dẫn sử dụng Hyperliquid

Bạn có thể yêu cầu tài sản thử nghiệm. Sau khi nhận được USDC để thử nghiệm, hãy nhấp vào nút “Gửi tiền” để gửi vào Hyperliquid (tốt nhất là nên có một số ETH cho mạng thử nghiệm Arbitrum).

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

Nhấp vào nút “Gửi tiền” để gửi tiền, yêu cầu xác minh ví và sẽ tiêu tốn một í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 đị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 lệnh trên trang trình duyệt. Nếu chúng ta muốn thực hiện lập trình và định lượng Giao dịch cần lấy thông tin cấu hình này bằng cách nào?

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:

Thực hành định lượng DEX Exchange (2) - Hướng dẫn sử dụng Hyperliquid

Thực hành định lượng DEX Exchange (2) - Hướng dẫn sử dụng Hyperliquid

  • 1. Đặt tên cho ví proxy cần tạo.

  • 2. Tạo địa chỉ và khóa riêng.

    1. Cho phép ví proxy sử dụng ví được kết nối với Hyperliquid.
  • Cấu hình đị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 (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: Khóa riêng của ví được kết nối với Hyperliquid (tùy chọn, chỉ bắt buộc khi gọi API như chuyển tiền, có thể để trống).
  • Khóa bí mật: Khóa riêng của ví proxy (được tạo ở bước trước, khóa riêng được hiển thị sau khi xác thực).

Thực hành siêu thanh khoản 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, chuyển nhượng và các hoạt động khác
  • Khóa bí mật được sử dụng cho các hoạt động liên quan đến giao dịch

Sau khi cấu hình hoàn tất, chúng ta có thể kiểm tra trên nền tảng FMZ. Chúng ta sử dụng trực tiếp “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 đối tượng trao đổi Hyperliquid được cấu hình với thông tin mạng thử nghiệm, bạn sẽ cần thực hiện một số thao tác chuyển đổi khi sử dụng đối tượng này, ví dụ:

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

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

    return exchange.GetAccount()
}

Cấu hình mainnet không yêu cầu thao tác chuyển đổi ở trên. Giao diện API liên quan đến 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ó một số khác biệt nhỏ về chi tiết. Tiếp theo, chúng tôi sử dụngThông tin cấu hình MainnetThông tin cấu hình Testnetcủa Hợp đồng tương lai siêu thanh khoảnTrao đổi các vật để kiểm tra.

Thông tin đa dạ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) +  "`")
}

Thực hành định lượng DEX Exchange (2) - Hướng dẫn sử dụng Hyperliquid

Dữ liệu sổ lệnh

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

Thực hành định lượng DEX Exchange (2) - Hướng dẫn sử dụng Hyperliquid

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

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

Thực hành định lượng DEX Exchange (2) - Hướng dẫn sử dụng Hyperliquid

Đặt hàng 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) +  "`")
}

Thực hành định lượng DEX Exchange (2) - Hướng dẫn sử dụng Hyperliquid

Hủy tất cả các đơn 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) +  "`")
}

Thực hành định lượng DEX Exchange (2) - Hướng dẫn sử dụng Hyperliquid

Chuyển đổi đòn bẩy, chuyển đổi ký quỹ chéo/ký quỹ riêng biệt

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

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

    return exchange.GetRawJSON()
}

Thực hành định lượng DEX Exchange (2) - Hướng dẫn sử dụng Hyperliquid

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 tham số giao diện của sàn giao dịch rất phức tạp nên không thể sử dụng phương pháp mã hóa URL để truyền các tham số.exchange.IOKhi gọi một hàm, chỉ có thể truyền chuỗi JSON làm tham số. Sau đây là các ví dụ về cách gọi từng giao diện.

Tài liệu tham khảo 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.”}

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

twapOrder

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 , 订单量 : 1  , twapOrder 订单有头寸要求,最少100美元价值
    // a : 0 , 即 SOL_USDT.swap 这个品种
    return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}

twapCancel

Hủy đơn hàng TWAP.

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

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

approveAgent

Testnet, cho phép 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))
}

Xác thực 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à ví dụ). Lưu khóa riêng tương ứng khi tạo ví.
  • “test02” là tên ví proxy API. Cặp khóa được tạo sẽ được hiển thị trên trang APP hyperliquid.https://app.hyperliquid-testnet.xyz/APIở giữa.

vaultTransfer

Rút tài sản ra khỏi két.

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ỉ kho lưu trữ.
  • “isDeposit”: true, kiểm soát lệnh deposit và deposit.

withdraw3

Testnet, rút ​​tài sản về 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))
}
  • Rút tiền về địa chỉ ví hiện tại của bạn: “0xAAA”.

usdClassTransfer

Chuyển giao tài sản giữa giao dịch giao ngay/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))
}
  • Tham số “toPerp” được đặt thànhfalseBiểu thị hướng quay vòng: tương lai -> giao ngay.
  • Tham số “toPerp” được đặt thànhtrueChỉ ra hướng chuyển nhượng: giao ngay -> 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 của giao thức REST không có giao diện để lấy dữ liệu giao dịch gần đây nên giao diện Websocket có kênh này có thể đăng ký được.

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

Thực hành định lượng DEX Exchange (2) - Hướng dẫn sử dụng Hyperliquid

END

Các bài kiểm tra trên dựa trên người giám hộ mới nhất. Bạn cần tải xuống người giám hộ mới nhất để hỗ trợ sàn giao dịch Hyperliquid DEX.

Cảm ơn các bạn đã ủng hộ và đọc bài viết.