Les ressources ont été chargées... Je charge...

Pratiques quantitatives des échanges DEX (2) -- Guide de l'utilisateur des hyperliquides

Auteur:FMZ~Lydia, Créé: 2025-01-16 10:57:22, mis à jour: 2025-01-16 10:59:23

Préface

Récemment, la plateforme FMZ a ajouté la prise en charge de Hyperliquid DEX, un échange décentralisé à haute performance, offrant aux utilisateurs plus d'options pour participer aux transactions décentralisées.

Vue d'ensemble de la plateforme hyperliquide

Hyperliquid est une blockchain L1 haute performance optimisée à partir de zéro, avec pour vision de créer un système financier ouvert entièrement en chaîne.

Les performances de Hyperliquid L1 sont suffisantes pour prendre en charge un écosystème d'applications financières sans autorisation. Tous les ordres, retraits, transactions et liquidations sont effectués en chaîne de manière complètement transparente, avec une latence de bloc inférieure à 1 seconde.

Hyperliquid L1 utilise un algorithme de consensus personnalisé appelé HyperBFT, qui s'inspire de Hotstuff et de ses algorithmes ultérieurs.

Grâce à ce guide, nous espérons vous aider à démarrer rapidement avec le trading programmatique et quantitatif sur Hyperliquid DEX sur la plateforme FMZ et à découvrir plus d'opportunités de trading.

Contenu de l'exercice

Protocole REST

  • Pratique de l'interface avec le marché.
  • Pratique de l'interface de négociation (placement de commandes, retrait de commandes).
  • Pratique de requête liée à une transaction (positions, ordres).
  • Autres fonctions (transfert au comptant, transfert contractuel, retrait de fonds du coffre-fort, transfert d'actifs vers le portefeuille, etc.).

Protocole Websocket

  • Pratique d'échange d'informations (il n'y a pas d'interface Trades dans l'interface REST, qui est complétée par l'interface Websocket)

Hyperliquide

  • Variétés commerciales Hyperliquid est divisé en contrats au comptant et en contrats perpétuels en fonction des variétés de négociation.

Sur la page Ajouter une plateforme de la plateforme FMZ, vous pouvez configurer des objets d'échange au comptant et à terme Hyperliquid:

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

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

  • Division de l'environnement Comme la plupart des bourses, Hyperliquid dispose également d'un environnement de test.

Adresse de l'application principale:

https://app.hyperliquid.xyz

Dans l'utilisation réelle, le réseau principal est relativement stable et a une bonne vitesse. L'adresse du nœud d'interface API du protocole REST correspondant est:https://api.hyperliquid.xyz- Je ne sais pas. L'information relative à la signature du message est également différente:source == "a",chainId = 42161.

Adresse de l'APP du réseau d'essai:

https://app.hyperliquid-testnet.xyz

Le réseau de test tombe souvent en panne, mais il est uniquement utilisé comme interface de test et pour se familiariser avec les fonctions de trading sur DEX. L'adresse du nœud d'interface API du protocole REST correspondant est:https://api.hyperliquid-testnet.xyz- Je ne sais pas. L'information relative à la signature du message est également différente:source == "b",chainId = 421614.

Connexion au portefeuille, connexion et informations de configuration

Tout comme la méthode de connexion de portefeuille de la plupart des échanges DEX, vous pouvez utiliser l'application de portefeuille pour scanner le code QR pour vous connecter à Hyperliquid (switch le portefeuille vers Arbitrum et scannez le code pour vous connecter, le réseau de test et le réseau principal sont les mêmes).

  • Portefeuille connecté à Hyperliquid

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

  • Tableau de classement du testnet (actifs USDC testés sur dépôt) Si vous voulez vous familiariser avec le testnet d'abord, vous pouvez trouver le classement directement sur la page Hyperliquid après avoir connecté votre portefeuille à Hyperliquid.

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

Vous pouvez réclamer des actifs de test. Après avoir reçu l'USDC pour le test, cliquez sur le bouton Dépôt pour le déposer dans Hyperliquid (il est préférable d'avoir un peu d'ETH pour le réseau de test Arbitrum).

  • Déposer des actifs USDC sur le réseau principal

Cliquez sur le bouton Dépôt pour déposer, ce qui nécessite une vérification du portefeuille et consomme un peu d'ETH sur Arbitrum.

  • Créer une configuration de portefeuille proxy

Lorsque vous effectuez des transactions manuelles sur la page Hyperliquid APP, la page générera automatiquement une adresse de portefeuille proxy et une clé privée, qui sont enregistrées dans le navigateur et utilisées pour des opérations telles que la passation de commandes sur la page du navigateur.

Vous pouvez créer l'adresse de portefeuille proxy requise et la clé privée correspondante sur la page Hyperliquid API:

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

  1. Donnez un nom au portefeuille proxy à créer.
  2. Générez une adresse et une clé privée.
  3. Autorisez le portefeuille proxy en utilisant le portefeuille connecté à Hyperliquid.
  • Configurez l'adresse du portefeuille proxy et la clé privée sur FMZ

Ensuite, vous pouvez configurer ces informations sur la plateforme FMZ (l'interface de configuration est mentionnée ci-dessus).

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

Adresse du portefeuille: l'adresse du portefeuille connecté à Hyperliquid (note, pas l'adresse du portefeuille proxy). Wallet PrivateKey: La clé privée du portefeuille connectée à Hyperliquid (facultative, uniquement nécessaire lors de l'appel d'API telles que les transferts, elle peut être laissée vierge). Clé secrète: clé privée de portefeuille proxy (générée à l'étape précédente, la clé privée affichée après l'autorisation).


Pratique de l'hyperliquide sur le FMZ

Informations requises pour configurer l'objet d'échange:

  • Adresse de portefeuille est utilisé pour interroger les informations de transaction utilisateur
  • Wallet PrivateKey est utilisé pour le transfert et d' autres opérations
  • La clé secrète est utilisée pour les opérations liées aux transactions.

Une fois la configuration terminée, nous pouvons la tester sur la plateforme FMZ. Nous utilisons directement l'outil de débogage de la plateforme FMZ pour la pratique des tests.

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

Si vous utilisez un objet d'échange Hyperliquid configuré avec des informations testnet, vous devrez effectuer certaines opérations de commutation lors de son utilisation, par exemple:

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

La configuration du mainnet ne nécessite pas l'opération de commutation ci-dessus. Les interfaces API relatives aux produits au comptant et à terme dans l'échange Hyperliquid DEX sont presque les mêmes, avec seulement de légères différences de détails.Comptes à terme hyperliquidesObjectifs d'échangeinformations sur la configuration du réseau principalet leles informations relatives à la configuration du testnetpour les essais.

Informations sur les variétés

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

Données du carnet de commandes

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

Actifs du compte

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

Résultats des fonctions:

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

L'ordre et la vérification

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

Annuler toutes les commandes

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

Levier de commutation, position croisée/isolement du commutateur

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

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

    return exchange.GetRawJSON()
}

Résultats des fonctions:

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

exchange.GetRawJSON() renvoie les informations de réponse de la demande de réglage du levier:

Je ne sais pas si je peux le faire.

Autres interfaces

Étant donné que les paramètres d'interface de l'échange sont relativement complexes et ne peuvent pas être transmis à l'aide de la méthode d'encodage d'URL, lors de l'utilisationexchange.IOfunctionLes paramètres suivants sont des exemples de divers appels d'interface.

documentation de référence pour l'hyperliquide:https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint#place-an-order

Arrêtez le programme.

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

{status:err,response: Impossible de définir l'heure d'annulation prévue jusqu'à ce que suffisamment de volume soit échangé.On a échangé:174.57424.”}

Cette fonction est limitée: le compte doit atteindre le niveau de négociation pour utiliser cette fonction.

Deux commandes

Créez un ordre 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))
}

TwapAnnuler

Annuler l'ordre du TWAP.

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

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

approuverAgent

Testnet, autorisez un nouveau portefeuille proxy.

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

Autorisation réussie, retour:

Je ne sais pas si je peux le faire.

  • Créez un portefeuille proxy API. 0xAAAA est l'adresse de portefeuille générée (juste un exemple). Enregistrez la clé privée correspondante lors de sa génération.
  • test02 est le nom du portefeuille proxy API. La paire de clés générée sera affichée sur la page hyperliquid APPhttps://app.hyperliquid-testnet.xyz/API.

VaultTransfer est en cours de développement.

Retirez les actifs du coffre.

function main() {
    var params = {
        "type": "vaultTransfer",
        "vaultAddress": "0xAAA",
        "isDeposit": true,
        "usd": 5000000
    }
    
    return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
  • usd: 5000000 signifie 5 USDC.
  • 0xAAA: est l'adresse du coffre.
  • isDépôt: vrai, contrôle le dépôt et le dépôt.

retirer

Testnet, retirez les actifs au portefeuille.

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))
}
  • Retirez de l'argent à votre adresse actuelle: 0xAAA.

usdClassTransfer est un système de transfert de classe

Transfert d'actifs entre les contrats à terme et les contrats à terme (contrats perpétuels).

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))
}
  • Le paramètre toPerp est réglé surfalse, indiquant la direction de rotation: futures -> spot.
  • Le paramètre toPerp est réglé surtrue, indiquant la direction de rotation: spot -> futures.

Utilisation de l'interface Websocket

Adresse de l'interface WS du réseau principal:

Le réseau principal: wss://api.hyperliquid.xyz/ws

Étant donné que l'interface API du protocole REST n'a pas d'interface pour obtenir des données de transaction récentes, l'interface Websocket a ce canal qui peut être souscrit.

Structure du message d'abonnement

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

Exemple de test effectué dans les outils de débogage:

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

Résultats

Les tests ci-dessus sont basés sur le dernier docker. Vous devez télécharger le dernier docker pour prendre en charge l'échange Hyperliquid DEX.

Merci pour votre soutien et merci de lire.


Plus de