En la carga de los recursos... Cargando...

Prácticas de cuantificación en el mercado DEX ((2) -- Guía de uso de Hyperliquid

El autor:Los inventores cuantifican - sueños pequeños, Creado: 2025-01-15 13:43:15, Actualizado: 2025-01-15 17:08:49

[TOC] ¿Qué quieres decir?

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

Prólogo

Recientemente, la plataforma de FMZ ha añadido soporte a Hyperliquid DEX, un intercambio descentralizado de alto rendimiento, ofreciendo a los usuarios más opciones para participar en transacciones descentralizadas. Actualmente, la función de administrador de la plataforma de FMZ ha sido completamente actualizada para soportar transacciones de contado y de contratos permanentes de Hyperliquid y cubrir todas las funciones de la API de la DEX.

La plataforma Hyperliquid es muy simple.

Hyperliquid es una cadena de bloques L1 de alto rendimiento optimizada desde cero, cuya visión es construir un sistema financiero abierto completamente en cadena. Los usuarios pueden crear aplicaciones independientemente mediante la interacción con componentes nativos eficientes, al tiempo que aseguran la fluidez de la experiencia del usuario final.

El rendimiento de Hyperliquid L1 es suficiente para soportar un ecosistema de aplicaciones financieras sin licencia. Todos los pedidos, retiros, transacciones y liquidaciones se completan en la cadena de una manera totalmente transparente, con una demora de bloque de menos de 1 segundo. Actualmente, la cadena soporta una capacidad de procesamiento de hasta 100,000 pedidos por segundo.

Hyperliquid L1 adopta un algoritmo de consenso personalizado llamado HyperBFT, inspirado en Hotstuff y sus sucesores. Tanto el mecanismo de consenso como la arquitectura de la red se optimizan desde abajo para satisfacer las necesidades de una cadena de bloques de alto rendimiento.

Con esta guía, esperamos ayudarle a manejar rápidamente las transacciones programadas y cuantificadas de Hyperliquid DEX en la plataforma FMZ y explorar más oportunidades de transacción.

Contenido práctico

Protocolo REST - Interfaz de trabajo práctica. - Las prácticas de interfaz de transacción (comprar, retirar) - Prácticas de consulta relacionadas con transacciones (cuentas, pedidos) - Otras funciones (contado, transferencia de contratos, acceso a fondos, transferencia de activos a carteras, etc.)

Protocolo de soporte web - Prácticas de suscripción de información de intercambio (no hay una interfaz de Trades en la interfaz REST y se complementa con una interfaz Websocket)


Exceso de líquido

  • Distribución de las variedades Hyperliquid está dividido en una variedad de transacciones, que se dividen en opciones, contratos perpetuos y estructuras basadas en la plataforma FMZ. En la plataforma FMZ, Hyperliquid también está dividido en opciones de intercambio de opciones y opciones de intercambio de futuros de Hyperliquid.

En la página de agregar intercambios de la plataforma FMZ, se puede configurar el objeto de Hyperliquid:

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

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

  • Distribución ambiental Como la mayoría de las bolsas, Hyperliquid también tiene un entorno de prueba.

    • La dirección de la APP principal es:

    https://app.hyperliquid.xyz

    La experiencia de uso real, la red principal es más estable y rápida. La dirección de los nodos de la API del protocolo REST correspondiente:https://api.hyperliquid.xyz¿Qué es esto? La información relacionada con la firma del mensaje también es diferente:source == "a"chainId = 42161

    • La dirección de la aplicación de prueba:

    https://app.hyperliquid-testnet.xyz

    Las redes de prueba se bloquean a menudo, pero solo se utilizan como interfaces de prueba y como funciones de transacción en el DEX. La dirección de los nodos de la API del protocolo REST correspondiente:https://api.hyperliquid-testnet.xyz¿Qué es esto? La información relacionada con la firma del mensaje también es diferente:source == "b"chainId = 421614

Conexión, inicio de sesión y configuración del monedero

Al igual que con la mayoría de los intercambios DEX, se puede conectar a Hyperliquid con la aplicación de monedero para escanear el código bidimensional (el monedero cambia a Arbitrum para escanear el inicio de sesión, la red de prueba y la red principal).

  • El monedero está conectado a Hyperliquid

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

  • El grifo de la red de prueba (Incursión para probar los activos de USDC)

Si desean que sus compañeros de clase se familiaricen con la red de pruebas primero, pueden encontrar el grifo directamente en la página de Hyperliquid después de conectar la billetera a Hyperliquid.

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

Después de recibir los activos de prueba y USDC para la prueba, puede depositar en Hyperliquid con el botón "Depositar" (Arbitrum Testing Net prefiere un poco de ETH).

  • La red principal se abalanza sobre los activos de USDC

Al hacer clic en el botón "Depositar" para depositar, se requiere la verificación de la billetera y se consume un poco de ETH en Arbitrum.

  • Crear una configuración de billetera de agente

Cuando se realiza una transacción manual en la página de Hyperliquid APP, la página genera automáticamente una dirección de billetera de agente y una clave privada, que se registran en el navegador para realizar operaciones en la página del navegador. ¿Cómo podemos obtener esta información de configuración si queremos realizar transacciones programáticas y cuantitativas?

Se puede crear la dirección de monedero proxy necesaria y la correspondiente clave privada en la página API de Hyperliquid:

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

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

  • En este sentido, el proyecto de la cartera de agentes de Facebook, que tiene como objetivo crear una cartera de agentes de Facebook, se ha convertido en una herramienta de intercambio de datos.

  • 2, generación de direcciones y claves privadas.

  • 3. Autorizar el monedero de un agente usando un monedero conectado a Hyperliquid.

  • Configurar una dirección de billetera de agente, una clave privada en FMZ

La información se puede configurar en la plataforma de FMZ (interfaz de configuración mencionada anteriormente).

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

  • Wallet Address: La dirección de la billetera conectada a Hyperliquid (no la dirección de la billetera de un agente).
  • Wallet PrivateKey: llave privada de una billetera conectada a Hyperliquid ((no es necesario, sólo se necesita cuando se necesita llamar a una API como una transferencia, puede dejarla en blanco) )).
  • Secret Key: llave privada de la cartera de representación (en el paso anterior se generó una cartera de representación, la clave privada se muestra después de la autorización).

Las prácticas de Hyperliquid en FMZ

Información necesaria para configurar el objeto de la bolsa:

  • Dirección de billetera para consultar información como transacciones de usuarios
  • Wallet PrivateKey para operaciones como transferencias, desvíos
  • Secret Key para operaciones relacionadas con transacciones

Una vez que la configuración está terminada, podemos probar en la plataforma FMZ y practicar directamente con la "herramienta de depuración" de la plataforma FMZ.

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

Si está utilizando un objeto de intercambio Hyperliquid con la configuración de información de la red de prueba, es necesario realizar algunas operaciones de conmutación, por ejemplo:

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

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

    return exchange.GetAccount()
}

La configuración de la red principal no requiere la operación de conmutación anterior, y las interfaces de API relacionadas con el tipo de efectivo y de futuros en Hyperliquid DEX son casi las mismas, con solo pequeñas diferencias de detalle.Configuración de la redyInformación de configuración de la red de prueba¿Qué es esto?Los futuros de HyperliquidLos objetos de intercambio son probados.

Información sobre las variedades

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

Los datos de los pedidos bajos

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

Activos de la cuenta

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

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

Las listas, las facturas

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

Cambiar el apalancamiento, cambiar la posición completa / por posición

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

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

    return exchange.GetRawJSON()
}

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

exchange.GetRawJSON (()) devuelve el mensaje de respuesta a la solicitud de apalancamiento:

¿Qué es lo que está pasando?

Otras interfaces

Debido a que los parámetros de la interfaz de los intercambios son más complejos y no se pueden transmitir con el código de url, se está utilizandoexchange.IOCuando se llama a una función, solo se puede usar una cadena JSON como entrada de parámetros. A continuación se muestran los ejemplos de cada llamada de interfaz.

En la actualidad, la mayoría de las personas que usan hiperlíquidos son de origen indígena.https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint#place-an-order

Cancelar el horario.

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

{status:err,respuesta:No se puede establecer el tiempo de cancelación programado hasta que se negocie suficiente volumen.¿Qué es lo que está pasando?174.57424.”}

La función tiene limitaciones: las cuentas alcanzan el nivel de transacción para usarla.

En el orden.

Crear un pedido de 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

Los usuarios de TWAP han sido rechazados.

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

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

Aprobar Agente

La red de pruebas, autorizando un nuevo monedero 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))
}

La autorización regresó con éxito:

¿Qué es lo que está pasando?

  • Crear un monedero de agente de API, con 0xAAAA como dirección del monedero generado (sólo un ejemplo), y guardar la clave privada correspondiente al momento de su generación.
  • test02 es el nombre de la cartera del agente de la API, y la combinación de claves generadas se muestra en la página de la APP de hyperliquid.https://app.hyperliquid-testnet.xyz/APIEn el centro.

- ¿ Qué pasa?

El gobierno de los Estados Unidos está tratando de hacerse cargo de los activos de los bancos.

function main() {
    var params = {
        "type": "vaultTransfer",
        "vaultAddress": "0xAAA",
        "isDeposit": true,
        "usd": 5000000
    }
    
    return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
  • El valor de la moneda es de 5 USDC.
  • En la página web de la organización, se puede leer:
  • El archivo de los archivos está disponible en el sitio web de la organización.

Retirarse

La red de pruebas, los activos presentados en el monedero.

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))
}
  • El dinero que se da a sí mismo es su dirección de monedero actual: 0xAAA.

UsdClassTransfer (Transferencia de clase estadounidense)

La división de los activos entre los activos actuales y 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))
}
  • El parámetro toPerp está configurado comofalseIndica la dirección de desviación: futuros -> spot.
  • El parámetro toPerp está configurado comotrueIndica la dirección de desviación: spot -> futuros.

Uso de la interfaz Websocket

La dirección de la interfaz de WS de la red principal es:

En la red principal: wss://api.hyperliquid.xyz/ws

Debido a que la interfaz API del protocolo REST no obtiene datos de transacciones recientes, la interfaz Websocket tiene este canal para suscribirse.

Suscripción a la estructura del mensaje

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

Los ejemplos de pruebas que se ejecutan en las herramientas de desactivación:

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

Enlace a la sección

Las pruebas anteriores, basadas en los últimos custodios, requieren la descarga de los últimos custodios para que el intercambio Hyperliquid DEX sea compatible.

Gracias por su apoyo y gracias por leer.


Más.