Как получить исторические данные Hyperliquid через API

6 мая 2026 г.
  • hyperliquid historical data

  • hyperliquid data api

  • hyperliquid исторические данные

  • hyperliquid свечные данные

  • hyperliquid история funding rate

Данные — база любого квантового исследования. Если ты бэктестишь торговую стратегию, анализируешь закономерности funding rate или изучаешь микроструктуру рынка, тебе нужны надежные и достаточно полные исторические данные. Hyperliquid как ончейн-биржа бессрочных контрактов предоставляет через REST API набор исторических эндпоинтов: свечи OHLCV, историю фондирования, сделки, пользовательские исполнения ордеров и ликвидации.

Ниже разберем, как получать разные типы исторических данных, какие параметры использовать, как делать пагинацию и как лучше хранить данные локально. Для сценариев, где нужны приватные пользовательские данные и подпись, аппаратный кошелек OneKey может помочь безопасно подписывать запросы: приватный ключ не должен попадать в скрипты сбора данных.

Обзор Hyperliquid Historical Data API

Согласно официальной документации Hyperliquid, большинство исторических данных запрашивается через endpoint POST /info. Тип данных выбирается полем type в теле запроса.

Все timestamp в API используются в формате Unix timestamp в миллисекундах, то есть 13-значное целое число.

Получение свечей K-line / OHLCV

Формат запроса

import requests

BASE_URL = "https://api.hyperliquid.xyz"

def fetch_candles(coin, interval, start_ms, end_ms):
    """
    coin      : торговый инструмент, например "BTC"
    interval  : таймфрейм, например "1m", "5m", "1h", "1d"
    start_ms  : начало периода, timestamp в миллисекундах
    end_ms    : конец периода, timestamp в миллисекундах
    """
    payload = {
        "type": "candleSnapshot",
        "req": {
            "coin":      coin,
            "interval":  interval,
            "startTime": start_ms,
            "endTime":   end_ms
        }
    }

    resp = requests.post(f"{BASE_URL}/info", json=payload)
    resp.raise_for_status()
    return resp.json()

# Пример: получить 1-часовые свечи BTC за последние 7 дней
import time

end_ms   = int(time.time() * 1000)
start_ms = end_ms - 7 * 24 * 3600 * 1000
candles  = fetch_candles("BTC", "1h", start_ms, end_ms)

Поля в ответе

Каждая свеча содержит поля, названия которых стоит сверять с актуальной официальной документацией:

  • t: время начала свечи, timestamp в миллисекундах
  • o: цена открытия, open
  • h: максимум, high
  • l: минимум, low
  • c: цена закрытия, close
  • v: объем, volume
  • n: количество сделок

Пагинация

У одного запроса обычно есть лимит на количество возвращаемых записей. Если тебе нужен длинный период, данные лучше тянуть частями:

def fetch_candles_paginated(coin, interval, start_ms, end_ms, page_size_ms):
    """
    Делит временной диапазон на отрезки, последовательно забирает данные и объединяет результат.

    page_size_ms: размер одного отрезка в миллисекундах.
                  Подбирай его с учетом interval.
    """
    all_candles = []
    cursor = start_ms

    while cursor < end_ms:
        batch_end = min(cursor + page_size_ms, end_ms)
        batch = fetch_candles(coin, interval, cursor, batch_end)
        all_candles.extend(batch)

        if not batch:
            break

        # Следующая страница начинается с timestamp последней свечи + 1 мс
        cursor = batch[-1]["t"] + 1

        time.sleep(0.2)  # чтобы не упереться в rate limit

    return all_candles

История funding rate

Funding rate — один из ключевых механизмов бессрочников. Исторические ставки фондирования полезны для анализа настроений рынка, оценки стоимости удержания позиции и исследования арбитражных идей.

def fetch_funding_history(coin, start_ms, end_ms):
    payload = {
        "type": "fundingHistory",
        "req": {
            "coin":      coin,
            "startTime": start_ms,
            "endTime":   end_ms
        }
    }

    resp = requests.post(f"{BASE_URL}/info", json=payload)
    resp.raise_for_status()
    return resp.json()

В ответе обычно есть значение funding rate для каждого расчетного периода и соответствующий timestamp. Эти данные можно использовать, чтобы:

  • анализировать изменение баланса лонгов и шортов;
  • искать экстремальные сигналы рыночных настроений;
  • рассчитывать стоимость удержания позиции во времени.

Пользовательские сделки и история ордеров

Интерфейсы, связанные с приватными пользовательскими данными, требуют адрес кошелька, а в некоторых случаях — подпись. OneKey аппаратный кошелек может безопасно подписывать такие запросы: приватный ключ остается внутри защищенного элемента устройства и не раскрывается серверу или Python-скрипту.

def fetch_user_fills(address, start_ms, end_ms):
    payload = {
        "type": "userFills",
        "req": {
            "user":      address,
            "startTime": start_ms,
            "endTime":   end_ms
        }
    }

    resp = requests.post(f"{BASE_URL}/info", json=payload)
    resp.raise_for_status()
    return resp.json()

История исполнений обычно включает ID ордера, направление, цену исполнения, объем, комиссии и другие поля. Это основа для расчета фактического PnL, оценки проскальзывания и проверки качества исполнения стратегии.

Ликвидации

Рыночные данные по ликвидациям помогают изучать структуру рынка и поведение участников в экстремальных движениях:

def fetch_liquidations(start_ms, end_ms):
    payload = {
        "type": "liquidations",
        "req": {
            "startTime": start_ms,
            "endTime":   end_ms
        }
    }

    resp = requests.post(f"{BASE_URL}/info", json=payload)
    resp.raise_for_status()
    return resp.json()

Хранение данных: CSV и база данных

Сохранение в CSV

На этапе быстрого прототипирования CSV — самый простой вариант:

import csv

def save_candles_to_csv(candles, filepath):
    if not candles:
        return

    fieldnames = ["t", "o", "h", "l", "c", "v", "n"]

    with open(filepath, "w", newline="", encoding="utf-8") as f:
        writer = csv.DictWriter(f, fieldnames=fieldnames)
        writer.writeheader()

        for candle in candles:
            writer.writerow({k: candle.get(k, "") for k in fieldnames})

Сохранение в базу данных

Если данных много или тебе нужны быстрые запросы, лучше использовать SQLite для локального сценария или PostgreSQL для продакшена:

import sqlite3

def init_db(db_path):
    conn = sqlite3.connect(db_path)
    conn.execute("""
    CREATE TABLE IF NOT EXISTS candles (
        coin     TEXT,
        interval TEXT,
        t        INTEGER,
        o        REAL,
        h        REAL,
        l        REAL,
        c        REAL,
        v        REAL,
        n        INTEGER,
        PRIMARY KEY (coin, interval, t)
    )
    """)
    conn.commit()
    return conn

def insert_candles(conn, coin, interval, candles):
    rows = [
        (coin, interval, c["t"], c["o"], c["h"], c["l"], c["c"], c["v"], c["n"])
        for c in candles
    ]

    conn.executemany(
        "INSERT OR IGNORE INTO candles VALUES (?,?,?,?,?,?,?,?,?)",
        rows
    )
    conn.commit()

PRIMARY KEY (coin, interval, t) защищает от дублирования при повторной загрузке одного и того же периода и упрощает инкрементальное обновление.

Rate limits и практические замечания

У Hyperliquid API есть ограничения по частоте запросов. На момент чтения ориентируйся на актуальную официальную документацию. На практике полезно:

  • добавлять задержку между запросами в цикле, например 200–500 мс;
  • реализовать retry с exponential backoff;
  • при HTTP 429 автоматически ждать и пробовать снова;
  • большие исторические выгрузки запускать вне пиковых периодов;
  • кэшировать уже загруженные диапазоны локально, чтобы не дергать API повторно.

Сравнение с другими источниками данных

Плюс нативного Hyperliquid API в том, что данные идут из первичного источника и обычно имеют минимальную задержку. Если тебе нужен ресерч сразу по нескольким биржам или протоколам, можно комбинировать Hyperliquid с другими источниками. Документация dYdX и документация GMX также описывают свои исторические API. Дизайн интерфейсов отличается, но базовые идеи похожи: endpoint, тип данных, временной диапазон, пагинация и хранение результата.

Частые вопросы

Q1: Какой минимальный таймфрейм доступен для свечей?

Смотри описание candleSnapshot в официальной документации Hyperliquid. Поддерживаются разные интервалы, включая минутные, часовые и дневные. Конкретные значения interval лучше проверять по актуальной документации: при некорректном параметре API вернет ошибку.

Q2: Насколько далеко назад можно получить исторические данные?

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

Q3: Сколько времени занимает загрузка большого объема истории?

Зависит от диапазона, таймфрейма и пагинации. Например, для 1-часовых свечей за всю доступную историю с учетом rate limits загрузка может занять от нескольких минут до десятков минут. Лучше один раз положить данные в базу и дальше обновлять их инкрементально.

Q4: Зачем здесь OneKey кошелек?

Публичные рыночные данные — свечи, funding rate и похожие наборы — обычно доступны без аутентификации. Но приватные пользовательские данные, например история сделок и ордеров, могут требовать подпись. OneKey аппаратный кошелек помогает подписывать такие запросы безопасно: приватный ключ не попадает на сервер или в скрипт сбора данных.

Q5: Как обрабатывать пропуски в данных?

Сетевые ошибки, сбои API или неудачные retry могут оставить gaps в истории. Хорошая практика — логировать каждый загруженный временной диапазон, периодически сканировать базу на пропуски и отдельно дозагружать недостающие участки. Для бэктестов это критично: gaps могут исказить сигналы и результаты стратегии.

Итог

Hyperliquid historical data API дает хорошую основу для квантового ресерча: свечи, funding rate, пользовательские исполнения и ликвидации можно собрать сравнительно небольшим Python-скриптом. Если тебе нужны приватные данные и подписи, аппаратный кошелек OneKey помогает не выносить приватный ключ в среду, где работает сборщик данных.

А если после анализа ты хочешь перейти к практической торговле бессрочниками, удобный рабочий процесс — использовать OneKey Perps внутри экосистемы OneKey. Попробуй или скачай OneKey, подключи кошелек и используй OneKey Perps как более безопасный и понятный путь от данных и гипотез к реальным действиям на рынке.

Риск-предупреждение: исторические данные отражают только прошлое состояние рынка и не говорят, что будет дальше. Квантовые стратегии на истории подвержены переобучению, а результаты в реальной торговле могут сильно отличаться от бэктеста. Торговля бессрочными контрактами и использование плеча несут высокий риск и могут привести к потере средств. Этот материал предназначен для технического обучения и не является инвестиционной, финансовой или юридической рекомендацией.

Защитите свое криптопутешествие с OneKey

View details for Магазин OneKeyМагазин OneKey

Магазин OneKey

Самый продвинутый аппаратный кошелек в мире.

View details for Загрузить приложениеЗагрузить приложение

Загрузить приложение

Предупреждения о мошенничестве. Поддержка всех монет.

View details for OneKey SifuOneKey Sifu

OneKey Sifu

Ясность в криптовалюте — на расстоянии одного звонка.