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

Expérience de la quantification sur les échanges DEX (2) -- Guide d'utilisation de Hyperliquid

Auteur:L'inventeur de la quantification - un petit rêve, Créé à partir de:

[TOC] Je vous en prie.

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

Préambule

Plus récemment, la plate-forme FMZ a ajouté une nouvelle prise en charge de l'échange décentralisé Hyperliquid DEX, offrant aux utilisateurs plus d'options pour participer à des transactions décentralisées. Actuellement, la fonctionnalité de l'administrateur de la plate-forme FMZ a été entièrement mise à jour pour prendre en charge les transactions instantanées et permanentes de Hyperliquid et couvrir toutes les fonctionnalités de l'API de la DEX.

Hyperliquid est une plateforme

Hyperliquid est une blockchain L1 hautement performante optimisée à partir de zéro, dont la vision est de construire un système financier ouvert entièrement en chaîne. Les utilisateurs peuvent créer leurs propres applications en interagissant avec des composants natifs efficaces tout en assurant la fluidité de l'expérience utilisateur final.

Hyperliquid L1 a suffisamment de performance pour supporter un écosystème d'applications financières sans licence. Toutes les commandes, retraits, transactions et liquidations sont effectuées sur la chaîne de manière totalement transparente, avec un délai de blocage inférieur à 1 seconde. La chaîne est actuellement capable de traiter jusqu'à 100 000 commandes par seconde.

Hyperliquid L1 utilise un algorithme de consensus personnalisé appelé HyperBFT, inspiré de Hotstuff et de ses successeurs. Le mécanisme de consensus et l'architecture du réseau sont optimisés à partir de la base pour répondre aux besoins des chaînes de blocs de haute performance.

Nous espérons que ce guide vous aidera à maîtriser rapidement les transactions programmatiques et quantitatives de Hyperliquid DEX sur la plateforme FMZ et à explorer davantage d'opportunités.

Le contenu pratique

Protocole REST - Des pratiques d'interface de communication. - Les pratiques de l'interface de transaction (commander, retirer) - Les pratiques de consultation concernant les transactions (comptes, commandes) - Autres fonctions (cash, détournement de contrats, accès à la caisse, détournement d'actifs vers le portefeuille, etc.)

Le protocole Websocket - Pratique de souscription à des échanges d'informations (pas d'interface Trades dans l'interface REST, complétée par l'interface Websocket)


Hyperliquide

  • Variété de négociation Hyperliquid est divisé en variétés de négociation, en espèces, en contrats perpétuels, en structures basées sur la plate-forme FMZ, et sur la plate-forme FMZ, en objets d'échange sur place Hyperliquid et objets d'échange sur futures Hyperliquid.

Sur la page d'ajout d'échanges de la plateforme FMZ, vous pouvez configurer les objets d'échange Hyperliquid:

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

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

  • Le classement environnemental Comme la plupart des bourses, Hyperliquid propose également des environnements de test.

    • L'adresse de l'application principale est:

    https://app.hyperliquid.xyz

    Il y a des gens qui utilisent des applications comme les réseaux sociaux, qui utilisent des outils comme les réseaux sociaux, qui utilisent des outils comme les réseaux sociaux. L'adresse du nœud d'interface API correspondant au protocole REST:https://api.hyperliquid.xyzJe ne sais pas. Les informations relatives à la signature des messages sont également différentes:source == "a"chainId = 42161

    • L'adresse de l'app est:

    https://app.hyperliquid-testnet.xyz

    Le testnet est souvent désactivé, mais il sert uniquement d'interface de test et de fonctionnalité de transaction familière sur le DEX. L'adresse du nœud d'interface API correspondant au protocole REST:https://api.hyperliquid-testnet.xyzJe ne sais pas. Les informations relatives à la signature des messages sont également différentes:source == "b"chainId = 421614

Connexion, connexion et configuration du portefeuille

Comme pour la plupart des échanges DEX, vous pouvez connecter votre portefeuille à Hyperliquid en utilisant l'application de balayage de portefeuille à code bidimensionnel.

  • Le portefeuille est connecté à Hyperliquid

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

  • Le robinet d'essai du filet (pour tester les actifs USDC)

Si vous souhaitez que les élèves qui connaissent le réseau de test puissent trouver le robinet directement sur la page Hyperliquid après avoir connecté le portefeuille à Hyperliquid.

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

Après avoir reçu les actifs de test et les USDC pour le test, cliquez sur le bouton "Déposer" pour déposer des fonds dans Hyperliquid (Arbitrum Testing Net préférerait un peu d'ETH).

  • Les actifs de la chaîne principale sont en train de s'effondrer

En cliquant sur le bouton "Déposer", vous devrez vérifier votre portefeuille et dépenser un peu d'ETH sur Arbitrum.

  • Créer une configuration de portefeuille par procuration

Lorsqu'une transaction est effectuée manuellement sur la page Hyperliquid APP, la page génère automatiquement une adresse de portefeuille proxy et une clé privée, qui sont enregistrées dans le navigateur pour les opérations de souscription sur la page du navigateur.

Les adresses de portefeuille d'agent et les clés privées correspondantes peuvent être créées sur la page API de Hyperliquid:

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

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

  • 1° Nommer le portefeuille d'agents qui va être créé.

  • 2° Générer des adresses et des clés privées.

  • 3° Utiliser un portefeuille connecté à Hyperliquid pour autoriser un portefeuille d'agent.

  • Configurer l'adresse du portefeuille de l'agent, la clé privée sur FMZ

L'information peut ensuite être configurée sur la plateforme FMZ (voir l'interface de configuration mentionnée ci-dessus).

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

  • Adresse de portefeuille: l'adresse du portefeuille connecté à Hyperliquid (attention, pas l'adresse du portefeuille de l'agent).
  • Wallet PrivateKey: clé privée de votre portefeuille connecté à Hyperliquid ((pas nécessaire, uniquement nécessaire pour appeler une API, comme un virement bancaire, et peut être laissée vide)).
  • Secret Key: clé privée du portefeuille par procuration (générer un portefeuille par procuration dans la dernière étape, la clé privée affichée après l'autorisation).

La pratique Hyperliquid sur FMZ

Les informations requises pour configurer les objets d'un échange:

  • Adresse de portefeuille utilisée pour la recherche d'informations telles que les transactions des utilisateurs
  • Wallet PrivateKey est utilisé pour effectuer des virements, des redirections, etc.
  • Clé secrète pour les opérations liées aux transactions

Une fois la configuration terminée, nous pouvons tester la plateforme FMZ et nous pouvons directement utiliser le "Tool de débogage" de la plateforme FMZ pour effectuer des tests pratiques.

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

Si vous utilisez un objet Hyperliquid Exchange configuré pour tester les informations du réseau, vous devrez effectuer certaines opérations de commutation, telles que:

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

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

    return exchange.GetAccount()
}

La configuration du réseau principal ne nécessite pas les opérations de commutation ci-dessus. Les interfaces API liées à la variété de devises et de contrats à terme de l'échange Hyperliquid DEX sont presque les mêmes, avec seulement de légères différences de détails.Configuration du réseau principaletConfiguration du réseau de testJe ne sais pasLes futures HyperliquidLes objets de l'échange sont testés.

Informations sur les espèces

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

Données sur les commandes faibles

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

Actifs de compte

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

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

Les sous-titres, les factures

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

Les commandes ont été retirées

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

Échange de levier, échange de position complète/position par position

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

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

    return exchange.GetRawJSON()
}

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

exchange.GetRawJSON () renvoie le message de réponse à la requête de levier:

Je ne sais pas si je peux le faire.

Autre interface

Comme les paramètres d'interface des bourses sont plus complexes et ne peuvent pas être transférés en utilisant l'encodeur d'url, il est préférable d'utiliser des paramètres d'encodeur d'url.exchange.IOPour les appels à des fonctions, il est possible d'utiliser uniquement des chaînes JSON comme paramètres d'entrée. Voici quelques exemples d'appels à des interfaces.

Hyperliquid est une société basée au Royaume-Uni.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 fonctionnalité est limitée: les comptes atteignent le niveau de transaction pour l'utiliser.

Deux commandes

Créer une commande 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))
}

TwapAnnuler

Les commandes de TWAP ont été annulées.

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

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

approuverAgent

Le réseau de test autorise un nouveau portefeuille d'agents.

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

L'autorisation a été renvoyée avec succès:

Je ne sais pas si je peux le faire.

  • Création d'un portefeuille par l'intermédiaire d'un API, 0xAAAA pour l'adresse du portefeuille généré (exemple uniquement) et sauvegarde de la clé privée correspondante lors de sa création.
  • Cette paire de clés générée sera affichée sur la page hyperliquid APP.https://app.hyperliquid-testnet.xyz/APIJe suis désolé.

VaultTransfer est en cours de développement.

Il a également déclaré que le gouvernement avait décidé d'envoyer des fonds au Trésor.

function main() {
    var params = {
        "type": "vaultTransfer",
        "vaultAddress": "0xAAA",
        "isDeposit": true,
        "usd": 5000000
    }
    
    return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
  • Le dollar américain: 5000000 signifie 5 USDC.
  • Il y a aussi des sites de jeux vidéo où les joueurs peuvent jouer à des jeux vidéo en ligne.
  • Le dépôt est un dépôt de données qui est un dépôt de données.

retirer

Le réseau de test, les actifs proposés 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))
}
  • Il est également possible d'acheter des billets de banque en ligne en ligne ou en ligne.

usdClassTransfer est un système de transfert de classe

Les actifs sont répartis entre les produits actuels et les produits futurs (contrats permanents).

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 défini commefalseLes futures -> spot indiquent la direction dans laquelle vous allez.
  • Le paramètre toPerp est défini commetrueIndique la direction de défilement: spot -> futures.

Utilisation de l'interface Websocket

L'adresse de l'interface WS du réseau principal est:

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

Comme l'API du protocole REST n'a pas accès aux interfaces pour les données de transaction récentes, l'interface Websocket a ce canal qui peut être souscrit.

Structure de l'abonnement

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

Les exemples de tests effectués 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("测试结束")
}

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

Résultats

Les tests ci-dessus sont basés sur les derniers gestionnaires, et il est nécessaire de télécharger les derniers gestionnaires pour prendre en charge Hyperliquid DEX.

Merci pour votre soutien et merci de lire.


Plus de