В процессе загрузки ресурсов... загрузка...

ДЕКС (DEX Exchange) Количественная практика ((2) -- Гиперликвид (Hyperliquid)

Автор:Изобретатели количественного измерения - мечты, Создано: 2025-01-15 13:43:15, Обновлено: 2025-01-15 17:08:49

[TOC]

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

Преамбула

В последнее время платформа FMZ добавила поддержку высокопроизводительной децентрализованной биржи Hyperliquid DEX, что дает пользователям больше возможностей для участия в децентрализованной торговле. В настоящее время функция хранителя платформы FMZ полностью обновлена, чтобы поддерживать насущную и постоянную контрактную торговлю Hyperliquid и охватывать все функции API DEX.

Описание платформы Hyperliquid

Hyperliquid - это высокопроизводительная L1 блокчейн, оптимизированная с нуля, и ее видение заключается в построении полностью цепной открытой финансовой системы. Пользователи могут самостоятельно создавать приложения, взаимодействуя с эффективными нативными компонентами, обеспечивая при этом плавность опыта конечных пользователей.

Hyperliquid L1 обладает достаточной производительностью для поддержки экосистемы безлицензионных финансовых приложений. Все заказы, снятия, сделки и расчеты выполняются на цепочке полностью прозрачно, с задержкой блока менее 1 секунды. В настоящее время цепочка поддерживает обработку до 100 000 заказов в секунду.

Hyperliquid L1 использует пользовательский алгоритм консенсуса под названием HyperBFT, вдохновленный Hotstuff и его последующими алгоритмами. Как механизм консенсуса, так и сетевая архитектура оптимизированы изнутри для удовлетворения потребностей высокопроизводительной блокчейн.

В этом руководстве мы надеемся помочь вам быстро освоить программированные и количественные сделки Hyperliquid DEX на платформе FMZ и выявить больше возможностей для торговли.

Содержание практики

Протокол REST - Практика интерфейсов. - Практика интерфейса транзакций (подписание, отзыв). - Практика запросов в отношении сделок (счета, заказы). - Другие функции (настоящие деньги, контрактные переводы, сбор средств, перевод активов в кошелек и т.д.)

Протокол Websocket - Практика подписки на обмен информацией (в интерфейсе REST отсутствует интерфейс Trades, дополненный интерфейсом Websocket)


Гипержидкий

  • Разделение торговых сортов Hyperliquid подразделяется по торговым видам на наличные, перманентные контракты, основанные на FMZ-платформе. В FMZ-платформе Hyperliquid также подразделяется на объекты на наличных биржах, объекты на фьючерсных биржах Hyperliquid.

На странице "Добавить биржи" на платформе FMZ можно настроить объекты Hyperliquid:

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

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

  • Экологические разделения Как и большинство бирж, Hyperliquid имеет тестовую среду.

    • Главная страница:

    https://app.hyperliquid.xyz

    В результате, мы получили более стабильную и быструю домашнюю сеть. Адрес соответствующего узла интерфейса API REST:https://api.hyperliquid.xyzЯ не знаю. В этом же году, по данным издания, в стране зафиксировано более 100 случаев случаев несчастных случаев.source == "a"chainId = 42161

    • Например, вы можете использовать веб-страницы для тестирования.

    https://app.hyperliquid-testnet.xyz

    Тестовые сети часто загружаются, но используются только в качестве тестовых интерфейсов, знакомых с функциями торговли на DEX. Адрес соответствующего узла интерфейса API REST:https://api.hyperliquid-testnet.xyzЯ не знаю. В этом же году, по данным издания, в стране зафиксировано более 100 случаев случаев несчастных случаев.source == "b"chainId = 421614

Подключение кошелька, логин и информация о конфигурации

Как и в большинстве DEX-бирж, можно использовать wallet-APP для сбора двухмерного кода, чтобы подключиться к Hyperliquid.

  • Кошелек подключен к Hyperliquid

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

  • Тест-нет краны (врыв в тест-активы USDC)

Если вы хотите, чтобы ваши ученики, которые знакомы с тестовой сетью, сначала нашли краны прямо на странице Hyperliquid после подключения кошелька к Hyperliquid.

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

После получения тестовых активов и USDC для тестирования, можно нажать кнопку "депозит" и вложить их в Hyperliquid (Arbitrum Testing Net, лучше немного ETH).

  • Основная сеть врывается в активы USDC

Нажатие на кнопку "Депозит" требует проверки кошелька, и это будет расходовать немного ETH на Arbitrum.

  • Создание конфигурации прокси-кошелька

Когда на странице Hyperliquid APP совершаются ручные транзакции, страница автоматически генерирует адрес прокси-кошелька и частный ключ, которые записываются в браузере, используются для размещения запросов на странице браузера.

На странице API Hyperliquid можно создать нужный адрес прокси-кошелька и соответствующий частный ключ:

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

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

  • 1, Назовите имя будущему агентскому кошельку.

  • 2, генерация адреса и частного ключа.

  • 3. Использование кошельков, подключенных к Hyperliquid, для авторизации прокси-кошельков.

  • Конфигурация адреса кошелька агента, частного ключа на FMZ

Затем эту информацию можно настроить на платформе FMZ (конфигурационный интерфейс см. выше).

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

  • Wallet Address: Адрес кошелька, подключенного к Hyperliquid (примечание, не адрес прокси-кошелька).
  • Wallet PrivateKey: частный ключ кошелька, подключенный к Hyperliquid ((необходим, необходим только при необходимости вызова API, например, для перевода, может быть оставлен в свободном месте)).
  • Secret Key: Прокси-кошелек частный ключ ((в предыдущем шаге создается прокси-кошелек, а после авторизации показывается частный ключ)).

Практика Hyperliquid на FMZ

Информация, необходимая для настройки объекта биржи:

  • Wallet Address Используется для запроса информации, такой как пользовательские транзакции
  • Wallet PrivateKey используется для операций, таких как переводы, сдвиги и т.д.
  • Секретный ключ для операций, связанных с транзакциями

После завершения конфигурации мы сможем тестировать их на платформе FMZ, и мы сможем использовать "инструменты декомпиляции" платформы FMZ для проведения практических испытаний.

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

Если вы используете объект Hyperliquid Exchange с конфигурацией тестовой сети информации, при использовании необходимо выполнять некоторые операции переключения, например:

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

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

    return exchange.GetAccount()
}

При этом не требуется переключения на основную сеть. Интерфейс API для различных видов наличных и фьючерсов на Hyperliquid DEX практически одинаковый, с небольшими различиями в деталях.Конфигурация домашней сетииПроверка сетевой конфигурацииО чем вы?Фьючерсы HyperliquidВ результате, мы получили более чем полмиллиона долларов.

Информация о видах

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

Снижение объемов заказов

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

Активы на счетах

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

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

Подписка, расписка

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

Заказы отозваны

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

Смены рычага, смены полных позиций/один за другим

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

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

    return exchange.GetRawJSON()
}

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

exchange.GetRawJSON (()) возвращает сообщение ответа на запрос на установку рычага:

{status:ok,response:{type:default}}

Другие интерфейсы

Из-за более сложных параметров интерфейса биржи не может использоваться URL-кодирование для передачи данных.exchange.IOПри вызове функции можно использовать только JSON-строки в качестве параметров для ввода. Ниже приведены примеры вызова интерфейсов.

Гиперликвид.https://hyperliquid.gitbook.io/hyperliquid-docs/for-developers/api/exchange-endpoint#place-an-order

Отменить расписание.

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

{status:err,response:Невозможно установить запланированное время отмены, пока не будет достаточно объема торгов.1000000 - торгуется:174.57424.”}

Функция ограничена: аккаунт может использоваться только после достижения уровня транзакции.

Заказывать

Создать заказ 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))
}

twapОтменить

Напомним, что в апреле этого года в Твиттере появилась публикация, в которой говорилось о том, что TWAP не работает.

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

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

Одобрить

Позже, в апреле, в Twitter появилась статья, в которой говорится о том, что в этом году будет запущен новый портал.

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

Удалось вернуть разрешение:

{status:ok,response:{type:default}}

  • Создание прокси-кошелька с API, где 0xAAAA является адресом кошелька (только пример), и сохранение соответствующего частного ключа при его создании.
  • test02 является именем API-агентного кошелька, и эта пароль будет отображаться на странице hyperliquid APP.https://app.hyperliquid-testnet.xyz/APIВ центре.

хранилищеПередача

В частности, он рассказал о том, как в 2013 году он был арестован.

function main() {
    var params = {
        "type": "vaultTransfer",
        "vaultAddress": "0xAAA",
        "isDeposit": true,
        "usd": 5000000
    }
    
    return exchange.IO("api", "POST", "/exchange", null, JSON.stringify(params))
}
  • 5000000 означает 5 USDC.
  • Оригинальное название: 0xAAA
  • isDeposit: true, контроль доступа.

вывести3

В результате, мы получили более чем полмиллиарда долларов.

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))
}
  • В этом случае, если вы хотите, чтобы ваш кошелек был открыт, вы должны использовать его в качестве своего кошелька.

usdClassTransfer (передача класса)

Перераспределение активов между наличными/фьючерсными (контрактами на постоянное действие).

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))
}
  • Параметры toPerp настроены наfalseПоказать направление перемещения: futures -> spot.
  • Параметры toPerp настроены наtrueОтображает направление перемещения:spot -> futures.

Использование интерфейса Websocket

В настоящее время в Интернете существуют более чем 300 000 веб-сайтов.

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

Поскольку интерфейс REST API не получает данные о недавних транзакциях, интерфейс Websocket имеет этот канал для подписки.

Состав подписки

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

Примеры испытаний, выполненных в инструментах дебатов:

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

Окончание

Вышеперечисленные тесты, основанные на новейших хостерах, требуют загрузки новейших хостеров для поддержки Hyperliquid DEX.

Спасибо за поддержку, спасибо за чтение.


Больше