Die Ressourcen sind geladen. Beförderung...

DEX-Börsen Quantitative Praxis ((2) -- Hyperliquid Benutzerhandbuch

Schriftsteller:Die Erfinder quantifizieren - Kleine Träume, Erstellt: 2025-01-15 13:43:15, aktualisiert: 2025-01-15 17:08:49

[TOC]

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

Vorwort

Die FMZ-Plattform unterstützt Hyperliquid DEX, eine leistungsfähige dezentrale Börse, die den Nutzern mehr Möglichkeiten bietet, dezentrale Transaktionen zu betreiben. Die FMZ-Plattform wurde umfassend aktualisiert und unterstützt Hyperliquid-Trading in Instant- und Permanent-Kontrakten und umfasst alle API-Funktionen der DEX.

Übersicht über die Hyperliquid-Plattform

Hyperliquid ist eine hochleistungsfähige L1-Blockchain, die von Grund auf optimiert ist und deren Vision es ist, ein vollständig gekettetes, offenes Finanzsystem zu bauen. Benutzer können selbständig Anwendungen erstellen, indem sie mit effizienten nativen Komponenten interagieren, während sie die Geschwindigkeit der Endbenutzererfahrung gewährleisten.

Hyperliquid L1 ist leistungsfähig genug, um ein Lizenzloses Finanz-Applikations-Ökosystem zu unterstützen. Alle Aufträge, Widerrufe, Transaktionen und Abrechnungen werden in der Kette in einer vollständig transparenten Weise durchgeführt, mit einer Blockverzögerung von weniger als 1 Sekunde. Derzeit unterstützt die Kette die Verarbeitung von bis zu 100.000 Aufträgen pro Sekunde.

Hyperliquid L1 nutzt ein kundenspezifisches Konsens-Algorithmus namens HyperBFT, das von Hotstuff und seinen Nachfolgern inspiriert wurde. Sowohl der Konsensmechanismus als auch die Netzwerk-Architektur wurden von Grund auf optimiert, um den Bedarf an einer leistungsstarken Blockchain zu erfüllen.

Mit diesem Leitfaden möchten wir Ihnen helfen, die programmatisierten und quantitativen Transaktionen von Hyperliquid DEX auf der FMZ Plattform schnell zu erlernen und weitere Handelsmöglichkeiten zu erschließen.

Praxisbezogene Inhalte

REST-Protokoll - Die Praxis der Kommunikationsoberfläche. - Transaktions-Interface-Praktiken (aufzu- oder zurückzufordern) - Anfragen über Transaktionen (Konto, Bestellung) - Weitere Funktionen (Konto, Vertragsschlüsselung, Geldkassenbeschaffung, Vermögensschlüsselung in die Brieftasche usw.)

Websocket-Protokoll - Abonnement-Praktiken für den Austausch von Informationen (keine Trades-Schnittstelle in der REST-Schnittstelle, ergänzt durch eine Websocket-Schnittstelle)


Hyperflüssig

  • Handelssorte Hyperliquid ist in der FMZ-Plattform unterteilt in Transaktionsvarianten, die sich in Aufträge, dauerhafte Verträge und FMZ-basierte Architekturen unterteilen. Auf der FMZ-Plattform werden Hyperliquid auch in Aufträgen auf der Hyperliquid-Option und Hyperliquid-Futures-Option unterteilt.

Auf der Seite zum Hinzufügen von Börsen auf der FMZ-Plattform können die Objekte von Hyperliquid Spot- und Futures-Börsen konfiguriert werden:

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

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

  • Umwelteinteilung Wie bei den meisten Börsen gibt es auch bei Hyperliquid Testumgebungen.

    • Die Haupt-APP-Adresse:

    https://app.hyperliquid.xyz

    Das Internet ist stabiler und schneller als das, was man tatsächlich fühlt. Die entsprechende REST-API-Node Adresse:https://api.hyperliquid.xyzDas ist nicht wahr. Die Unterschriften der Nachrichten sind auch unterschiedlich:source == "a"chainId = 42161

    • Die Testnetz-APP-Adresse:

    https://app.hyperliquid-testnet.xyz

    Testnetze werden häufig heruntergeladen, aber nur als Testinterface verwendet, um die Transaktionsfunktionen auf der DEX zu kennen. Die entsprechende REST-API-Node Adresse:https://api.hyperliquid-testnet.xyzDas ist nicht wahr. Die Unterschriften der Nachrichten sind auch unterschiedlich:source == "b"chainId = 421614

Anschlüsse, Anmeldungen und Profi-Informationen

Wie bei den meisten DEX-Börsen können Sie mit der Wallet-App (Scan-Login, Test-Net, Home-Net) den Wechsel zu Hyperliquid durchführen.

  • Die Brieftasche ist mit Hyperliquid verbunden.

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

  • Testnetz-Tapfen (Schlag in USDC-Assets)

Wenn Sie sich erst einmal mit einem Testnetz vertraut machen möchten, können Sie nach dem Anschluss der Brieftasche an Hyperliquid direkt auf der Hyperliquid-Seite den Wasserhahn finden.

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

Nach dem Erhalt des Testvermögens und der USDC für den Test können Sie den "Deposit" -Button klicken und Hyperliquid einzahlen (Arbitrum-Testnetz, vorzugsweise ein wenig ETH).

  • Das Hauptnetz dringt in USDC-Assets ein

Wenn Sie auf den Button "Einzahlung" klicken, benötigen Sie eine Geldbörsen-Verifizierung, um ein bisschen ETH auf Arbitrum zu verbrauchen.

  • Erstellen von Proxy-Wallet-Konfigurationen

Bei manuellen Transaktionen auf der Hyperliquid APP-Seite erzeugt die Seite automatisch eine Proxy-Wallet-Adresse und einen privaten Schlüssel, die im Browser gespeichert werden, um die auf der Browserseite aufgeführten Aktionen zu erledigen.

Die benötigte Proxy-Wallet-Adresse und den entsprechenden privaten Schlüssel können auf der Hyperliquid API-Seite erstellt werden:

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

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

  • 1. Nenne einen Namen für die neue Agent-Wallets.

  • 2. Adresse und privaten Schlüssel generieren.

  • 3. Benutze eine Hyperliquid-verbundene Brieftasche, um eine Agentwallet zu autorisieren.

  • Konfigurieren Sie die Adresse der Brieftasche, den privaten Schlüssel auf FMZ

Diese Informationen können dann auf der FMZ-Plattform konfiguriert werden (siehe Konfigurationsoberfläche oben).

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

  • Wallet-Adresse: Die Adresse einer Wallet, die mit Hyperliquid verbunden ist (beachten Sie, dass dies keine Agentwallet-Adresse ist).
  • Wallet PrivateKey: Private Wallet-Schlüssel, die mit Hyperliquid verbunden sind (nicht notwendig, nur bei Anrufen von APIs wie Überweisungen erforderlich, kann leer gelassen werden)
  • Secret Key: Proxy-Wallet-Privatschlüssel (im letzten Schritt wurde ein Proxy-Wallet erzeugt, der nach der Autorisierung angezeigt wird).

Hyperliquid-Praxis auf FMZ

Die Informationen, die ein Austauschobjekt benötigt, um zu konfigurieren:

  • Wallet Address wird für Anfragen von Informationen wie Benutzertransaktionen verwendet
  • Wallet PrivateKey für Transfers, Umschreibungen und andere Operationen
  • Secret Key für Transaktionen

Wenn die Konfiguration abgeschlossen ist, können wir sie auf der FMZ-Plattform testen, und wir können direkt mit dem "Debugging Tool" der FMZ-Plattform testen.

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

Wenn Sie ein Hyperliquid-Austauschobjekt mit einer Testnetz-Informationskonfiguration verwenden, müssen einige Umschaltvorgänge durchgeführt werden, z. B.:

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

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

    return exchange.GetAccount()
}

Die Hauptnetzkonfiguration erfordert keine der oben genannten Umschaltvorgänge. Die API-Schnittstellen für die aktuellen und Futures-Varianten der Hyperliquid DEX-Börse sind nahezu identisch, mit nur wenigen Unterschieden.HauptnetzkonfigurationsinformationenundTestnetzkonfigurationsinformationenDieHyperliquid FuturesDie Börsenobjekte wurden getestet.

Informationen über die Sorten

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 使用指南

Nachfrage nach kleinen Aufträgen

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 使用指南

Vermögenswerte im Konto

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

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

Nachschreiben, Rechnungen

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 使用指南

Bestellungen zurückgezogen

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 使用指南

Wechseln Sie den Hebel, wechseln Sie die gesamte Position/eine Position

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

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

    return exchange.GetRawJSON()
}

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

exchange.GetRawJSON ((() gibt die Antwort auf die Anforderung zur Einstellung eines Hebels zurück:

Ich bin nicht derjenige, der das Problem hat.

Andere Schnittstellen

Da die Interfaceparameter der Börsen so komplex sind, dass sie nicht mit der URL-Einkodierung übertragen werden können, wird die URL-Einkodierung in der Webseite der Börse verwendet.exchange.IOBei Funktionsaufrufen kann nur ein JSON-String als Parameterübertragung verwendet werden.

Hyperliquid ist eine Software zur Nutzung von Hyperliquid.https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint#place-an-order

Zeitplan abbrechen.

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

{status:err,response:Kann die geplante Stornierungszeit nicht festlegen, bis genügend Volumen gehandelt wurde.Ich bin nicht derjenige, der das Problem hat, aber ich bin derjenige, der es hat.174.57424.”}

Diese Funktion ist nur dann nutzbar, wenn das Konto zum Transaktionsniveau erreicht hat.

Aufforderung

Erstellen Sie einen TWAP-Auftrag.

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

twapWiderrufen

Die TWAP-Bestellung wurde zurückgezogen.

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

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

Genehmigen

Das Testnetz autorisiert eine neue Proxy-Wallets.

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

Erfolgreich zurückgegeben:

Ich bin nicht derjenige, der das Problem hat.

  • Erstellen Sie eine API-Proxy-Wallet mit 0xAAAA als generierte Wallet-Adresse (nur ein Beispiel), die beim Erstellen des entsprechenden privaten Schlüssels gespeichert wird.
  • Die API-Proxy-Wallet-Name ist test02 , und das generierte Geheimschlüsselpaar wird auf der Hyperliquid APP-Seite angezeigt.https://app.hyperliquid-testnet.xyz/APIDas ist ein großes Problem.

Geheime Transfer

Sie haben sich in den letzten Jahren um Geld gekümmert.

function main() {
    var params = {
        "type": "vaultTransfer",
        "vaultAddress": "0xAAA",
        "isDeposit": true,
        "usd": 5000000
    }
    
    return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
  • 5 USDC: 5000000 bedeutet 5 USDC.
  • Sie haben sich in den letzten Jahren in der Tat um einen großen Teil der Welt gekümmert.
  • Sie ist ein sehr guter Freund von uns, aber wir sind auch ein sehr guter Freund.

Rücktritt

Das Testnetz, das Geld in die Brieftasche.

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))
}
  • Die Zahlen werden von den Banken in den USA und in den USA übertragen.

usdKlasseübertragung

Verteilung von Vermögenswerten zwischen Aktien/Futures (permanente Verträge)

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))
}
  • Die Parameter toPerp sind auffalseEs gibt eine andere Art der Verknüpfung.
  • Die Parameter toPerp sind auftrueDie Abgrenzung zeigt die Richtung an: spot -> futures.

Websocket-Schnittstelle verwendet

Die Haupt-WS-Schnittstelle ist:

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

Da die REST-API-Schnittstelle keine Schnittstelle für aktuelle Transaktionsdaten erhält, kann der Websocket-Schnittstelle diesen Kanal abonnieren.

Abonnement-Nachrichtenstruktur

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

Tests, die in Debugging Tools durchgeführt werden:

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 使用指南

Ende

Der Test basiert auf den neuesten Trustees, die für die Unterstützung der Hyperliquid DEX-Börse zum Download erforderlich sind.

Danke für die Unterstützung und danke fürs Lesen.


Mehr