O recurso está a ser carregado... Carregamento...

Práticas de quantificação da DEX Exchange ((2) -- Guia de uso do Hyperliquid

Autora:Inventor quantificado - sonho pequeno, Criado: 2025-01-15 13:43:15, Atualizado: 2025-01-15 17:08:49

[TOC]

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

Prefácio

Recentemente, a plataforma FMZ acrescentou o suporte ao Hyperliquid DEX, uma plataforma descentralizada de alto desempenho, oferecendo mais opções para os usuários participarem de transações descentralizadas. Atualmente, a função de administrador da plataforma FMZ foi totalmente atualizada para suportar as transações em tempo real e permanentes do Hyperliquid e cobrir todas as funções da API do DEX.

O Hyperliquid é uma plataforma de conteúdo

O Hyperliquid é um blockchain L1 de alto desempenho, otimizado a partir do zero, cuja visão é construir um sistema financeiro aberto totalmente em cadeia. Os usuários podem criar aplicativos independentemente, interagindo com componentes nativos eficientes, garantindo a fluidez da experiência do usuário final.

O Hyperliquid L1 tem performance suficiente para suportar um ecossistema de aplicativos financeiros sem licença. Todos os pedidos, retiradas, transações e liquidações são realizados na cadeia de forma totalmente transparente, com um atraso de bloco inferior a 1 segundo. Atualmente, a cadeia suporta a capacidade de processamento de até 100.000 pedidos por segundo.

O Hyperliquid L1 usa um algoritmo de consenso personalizado chamado HyperBFT, inspirado no Hotstuff e em seus sucessores. Tanto o mecanismo de consenso quanto a arquitetura da rede são otimizados a partir do fundo para atender às necessidades de uma cadeia de blocos de alta performance.

Com este guia, esperamos ajudá-lo a dominar rapidamente os negócios programados e quantificados do Hyperliquid DEX na plataforma FMZ e explorar mais oportunidades de negociação.

Conteúdo prático

Protocolo REST - Interface de negócio prática. - Interface de transação (PROCESSOS) - Práticas de consulta de transações (contas, pedidos) - Outras funções (cash, transferência de contrato, acesso ao cofre, transferência de ativos para carteira, etc.)

Protocolo Websocket - Práticas de subscrição de informações de intercâmbio (não há uma interface Trades na interface REST, sendo complementada por uma interface Websocket)


Hiperlíquido

  • Distribuição de variedades O Hyperliquid é dividido em uma variedade de negociações, dividida em opções binárias, contratos perpétuos, uma estrutura baseada na plataforma FMZ, também dividida na plataforma FMZ em opções binárias Hyperliquid, opções binárias Hyperliquid, opções binárias Hyperliquid, opções binárias Hyperliquid.

Na página de adição de bolsas da plataforma FMZ, é possível configurar os objetos do Hyperliquid Spot e Futures Exchange:

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

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

  • Divisão ambiental Como a maioria das bolsas, o Hyperliquid tem um ambiente de teste.

    • O endereço do aplicativo:

    https://app.hyperliquid.xyz

    O que é mais importante é que você tenha uma boa experiência de uso e que a rede principal seja mais estável e rápida. O endereço do ponto de interface API do protocolo REST correspondente:https://api.hyperliquid.xyzNão, não. A informação sobre as assinaturas também é diferente:source == "a"chainId = 42161

    • O endereço do aplicativo do teste:

    https://app.hyperliquid-testnet.xyz

    A rede de testes é frequentemente desativada, mas é usada apenas como interface de teste e como função de transação familiar no DEX. O endereço do ponto de interface API do protocolo REST correspondente:https://api.hyperliquid-testnet.xyzNão, não. A informação sobre as assinaturas também é diferente:source == "b"chainId = 421614

Conexão de carteira, login e configuração

Como a maioria das transações DEX, o portfólio pode ser conectado ao Hyperliquid usando o aplicativo de digitalização de carteiras (o portfólio é transferido para o Arbitrum, o login de digitalização, a rede de testes e a rede principal são os mesmos).

  • A carteira está ligada ao Hyperliquid

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

  • Testar a torneira de rede (Introduzir testes de USDC)

Se você quiser que os alunos conheçam a rede de testes primeiro, você pode encontrar a torneira diretamente na página Hyperliquid depois de conectar a carteira ao Hyperliquid.

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

Para obter os ativos de teste e USDC para o teste, basta clicar no botão "Depositar" e depositar no Hyperliquid (Arbitrum Testing Net, preferencialmente um pouco de ETH).

  • A rede principal invade os ativos da USDC

Clique no botão "Depositar" para fazer o depósito, o qual requer a verificação da carteira e consome um pouco do ETH no Arbitrum.

  • Criar configurações de carteiras de corretores

Quando uma transação é feita manualmente na página do Hyperliquid APP, a página gerará automaticamente um endereço de carteira e uma chave privada, que são registrados no navegador para serem usados na página do navegador.

O endereço de carteira de agente e a chave privada correspondente podem ser criados na página API do Hyperliquid:

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

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

  • 1, dar um nome para a carteira de agente que está prestes a ser criada.

  • 2, gerar endereços e chaves privadas.

  • 3. Autorizar carteiras de corretores usando carteiras conectadas ao Hyperliquid.

  • Configurar endereços de carteiras e chaves privadas no FMZ

A informação pode ser configurada na plataforma FMZ (ver interface de configuração acima).

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

  • Wallet Address: endereço de carteira conectado ao Hyperliquid (note, não endereço de carteira de corretor).
  • Wallet PrivateKey: chave privada da carteira conectada ao Hyperliquid ((não necessária, só é necessária quando é necessário chamar uma API, como uma transferência, pode ser deixada em branco)).
  • Secret Key: A chave privada da carteira de corretores (gerar carteira de corretores no passo anterior e mostrar a chave privada após a autorização).

A prática do Hyperliquid no FMZ

Informações necessárias para configurar o objeto da bolsa:

  • Wallet Address Usado para pesquisar informações como transações de usuários
  • Wallet PrivateKey Usado para transferências, deslocamentos e outras operações
  • Secret Key para operações relacionadas com transações

Quando a configuração é concluída, podemos testar a plataforma FMZ e testar diretamente a plataforma FMZ com o "Debug Tool".

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

Se você estiver usando um objeto Hyperliquid Exchange configurado para testar a informação da rede, algumas operações de comutação serão necessárias, como:

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

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

    return exchange.GetAccount()
}

A configuração da rede principal não requer nenhuma operação de comutação acima, e a interface API relacionada com a variedade de produtos e futuros da Hyperliquid DEX é quase a mesma, com apenas pequenas diferenças de detalhes.Configuração da rede principaleInformações de configuração da rede de testeNão.Hyperliquid futurosO objeto da troca foi testado.

Informações sobre a variedade

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

Dados de encomendas fracas

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

Ativos da conta

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

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

Lista de pedidos, lista de pedidos

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

Pedidos retirados

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

Troca de alavancagem, troca de posições completas / posições individuais

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

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

    return exchange.GetRawJSON()
}

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

exchange.GetRawJSON () retorna a resposta para a solicitação de leveragem:

O que é que se passa?

Outra interface

Como os parâmetros de interface das bolsas são mais complexos e não podem ser transmitidos usando o código de url, o uso de um código de código de url não é recomendado.exchange.IOQuando as funções são chamadas, apenas as strings JSON podem ser usadas como parâmetros de entrada.

O hyperliquid é um sistema de informação baseado em dados de computador.https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint#place-an-order

Cancelar programação.

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

{status:err,resposta:Não é possível definir o tempo de cancelamento programado até que o volume suficiente seja negociado.Comércio:174.57424.”}

A função tem limitações: a conta pode ser usada somente se atingir o nível de transação.

2a Ordem

Criar um pedido 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))
}

twapCancelar

O TWAP foi cancelado.

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

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

Aprovar Agente

A rede de testes, autorizando uma nova carteira de agente.

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

A autorização retornou com sucesso:

O que é que se passa?

  • Criar uma carteira de agente de API, com 0xAAAA como endereço da carteira gerada (só um exemplo) e guardar a chave privada correspondente no momento da geração.
  • O test02 é o nome da carteira do agente da API, e o par de chaves geradas é exibido na página do APP do hyperliquid.https://app.hyperliquid-testnet.xyz/APIO que você está fazendo?

vaultTransferência

O que é que isso significa para mim?

function main() {
    var params = {
        "type": "vaultTransfer",
        "vaultAddress": "0xAAA",
        "isDeposit": true,
        "usd": 5000000
    }
    
    return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
  • O valor da moeda é de 5 USDC. 5000000 significa 5 USDC.
  • O que é que ele está a fazer?
  • isDeposit: true, controle de acesso.

Retirar

A rede de testes, a propriedade para a carteira.

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))
}
  • O Bitcoin é usado para vender dinheiro para o seu bolso atual: 0xAAA.

usdClassTransfer

A divisão de ativos entre ações/futuros (contratos permanentes).

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))
}
  • O parâmetro toPerp é definido comofalseIndica a direção de desvio: Futures -> spot.
  • O parâmetro toPerp é definido comotrueIndica a direção de desvio: spot -> futures.

Interface usada pelo Websocket

O endereço da interface do WS da rede principal é:

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

Como a interface API do protocolo REST não recebe dados de transações recentes, a interface Websocket tem este canal para assinar.

Estrutura de mensagens

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

Exemplos de testes executados em ferramentas de depósito:

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

Fim de ano

Os testes acima, baseados nos mais recentes administradores, exigem o download dos mais recentes administradores para suportar o Hyperliquid DEX.

Obrigado pelo apoio, obrigado por ler.


Mais.