Разработка системы управления позициями на perpetual DEX

Мы разрабатываем кастомные системы управления позициями на perpetual DEX — от простого трекера до полноценного риск-менеджера с автоматическими стоп-лоссами и управлением маржой. Perpetual DEX (dYdX, GMX, Hyperliquid, Gains Network) позволяют торговать с плечом без даты экспирации и без централизова

Направления блокчейн-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1450
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1308
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1003
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1269
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    719
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1009

Мы разрабатываем кастомные системы управления позициями на perpetual DEX — от простого трекера до полноценного риск-менеджера с автоматическими стоп-лоссами и управлением маржой. Perpetual DEX (dYdX, GMX, Hyperliquid, Gains Network) позволяют торговать с плечом без даты экспирации и без централизованного кастодиана. Но их стандартный UI не покрывает задачи программного управления: боты, vaults, протоколы автоматизации требуют собственного решения. Наша команда имеет 5+ лет опыта в разработке DeFi-решений и гарантирует прозрачную интеграцию с любым perpetual DEX. В этой статье разберём архитектурные отличия ключевых perpetual DEX, покажем реальную интеграцию с GMX v2 и дадим готовые шаблоны для трекинга и риск-менеджмента.

Какие архитектурные отличия между orderbook и AMM perpetual DEX?

Orderbook-based (dYdX v4, Hyperliquid)

Классический orderbook, но on-chain или в off-chain orderbook с on-chain settlement. dYdX v4 — отдельный Cosmos appchain, Hyperliquid — собственный L1. Взаимодействие через REST API и WebSocket, аналогично CEX.

Особенность dYdX v4: транзакции отправляются не через Ethereum RPC, а через Cosmos SDK. Другой клиент, другие форматы. @dydxprotocol/v4-client-js — официальный SDK.

Hyperliquid: собственный HTTP API и WebSocket. Подписание через EIP-712 (EVM-совместимо). Наиболее быстрый throughput среди on-chain perps.

AMM-based (GMX v2, Gains Network)

Позиции открываются против liquidity pool, а не counterparty. Price impact есть, orderbook нет. GMX v2 использует синтетические активы через Chainlink price feeds.

GMX v2 контракты: ExchangeRouter для открытия/закрытия позиций, OrderVault для хранения collateral до исполнения. Все операции через createOrder() с параметрами.

Как рассчитывается liquidation price на разных биржах?

Position tracker

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

interface Position { id: string; exchange: "dydx" | "gmx" | "hyperliquid"; market: string; // "ETH-USD" side: "long" | "short"; size: bigint; // в USD entryPrice: number; currentPrice: number; unrealizedPnl: number; liquidationPrice: number; leverage: number; margin: bigint; fundingPaid: number; // накопленные funding payments } 

Источники данных: WebSocket подписки на position updates (dYdX, Hyperliquid), polling через REST каждые 5-30 секунд (GMX через subgraph или прямые контракт вызовы).

Risk manager

Следит за приближением к liquidation и executing stop-loss/take-profit:

const riskThresholds = { liquidationWarning: 0.15, // 15% до ликвидации → алерт autoReduceAt: 0.10, // 10% до ликвидации → уменьшить позицию emergencyCloseAt: 0.05, // 5% до ликвидации → закрыть полностью }; const distanceToLiquidation = (position: Position): number => { const current = position.currentPrice; const liq = position.liquidationPrice; if (position.side === "long") return (current - liq) / current; return (liq - current) / current; }; 

Add margin — первая линия защиты. При приближении к liquidation price — автоматически добавить collateral вместо закрытия позиции. Дешевле по gas и сохраняет позицию. Требует резервного баланса USDC на кошельке.

Partial close — при тяжёлой ситуации уменьшить размер на 30-50%. Снижает размер риска без полного выхода.

Emergency close — полное закрытие рыночным ордером. Высокий slippage, но при реальной угрозе ликвидации — выгоднее потерять 1-2% на slippage, чем 5-15% liquidation penalty.

Funding rate monitor

Funding payments на perpetuals — скрытые издержки, которые при плохом знаке съедают PnL. Отслеживаем:

// Для longs: positive funding rate → вы платите // Для shorts: positive funding rate → вы получаете const calculateFundingCost = ( position: Position, fundingRate8h: number, // например 0.0001 = 0.01% periods: number ): number => { const sign = position.side === "long" ? -1 : 1; return position.size * fundingRate8h * periods * sign; }; 

Если накопленный funding cost превышает expected profit по позиции — кандидат на закрытие независимо от PnL.

Интеграция с GMX v2: пошаговая инструкция

GMX v2 — самый сложный из популярных perpetual DEX для интеграции, потому что все операции асинхронны через order keeper.

  1. Импортировать контракты GMX через npm install @gmx-v2/contracts.
  2. Подключить провайдер Viem и получить экземпляр ExchangeRouter.
  3. Создать и подписать CreateOrderParams.
  4. Отправить транзакцию с executionFee.
  5. Обработать callback afterOrderExecution().
// Открытие long позиции на ETH IExchangeRouter.CreateOrderParams memory params = IExchangeRouter.CreateOrderParams({ addresses: IExchangeRouter.CreateOrderParamsAddresses({ receiver: address(this), callbackContract: address(this), // наш контракт получит callback uiFeeReceiver: address(0), market: ETH_USD_MARKET, initialCollateralToken: USDC_ADDRESS, swapPath: new address[](0) }), numbers: IExchangeRouter.CreateOrderParamsNumbers({ sizeDeltaUsd: 10_000 * 1e30, // $10,000 позиция (30 decimals) initialCollateralDeltaAmount: 1_000 * 1e6, // $1,000 collateral (USDC 6 decimals) triggerPrice: 0, // market order acceptablePrice: minAcceptablePrice, executionFee: executionFee, callbackGasLimit: 700_000, minOutputAmount: 0 }), orderType: Order.OrderType.MarketIncrease, decreasePositionSwapType: Order.DecreasePositionSwapType.NoSwap, isLong: true, shouldUnwrapNativeToken: false, referralCode: bytes32(0) }); exchangeRouter.createOrder{value: executionFee}(params); 

Ордер исполняется keeper-нодами GMX асинхронно. Callback afterOrderExecution() на вашем контракте сигнализирует об исполнении. Если keeper не исполнил за определённое время — ордер можно отменить через cancelOrder().

Расчёт liquidation price на GMX

Параметр Формула
Long liq_price = entry_price * (1 - (margin - borrow_fee) / size)
Short liq_price = entry_price * (1 + (margin - borrow_fee) / size)

borrow_fee накапливается со временем — его нужно учитывать при расчёте текущего состояния. GMX предоставляет Reader контракт с getPositionInfo() который возвращает актуальные данные включая fees.

Сравнительная таблица бирж

Параметр dYdX v4 Hyperliquid GMX v2
Архитектура Cosmos appchain Собственный L1 Arbitrum/AVAX
API REST + WebSocket, Cosmos SDK REST + WebSocket, EIP-712 Контракты Ethereum, async order
Сложность интеграции Средняя Низкая Высокая (async order)
Скорость ~0.5 сек ~0.1 сек ~1-5 мин (keeper)

Стек и инфраструктура

TypeScript + viem для GMX on-chain взаимодействий. @dydxprotocol/v4-client-js для dYdX. Websocket клиенты для real-time данных. PostgreSQL + TimescaleDB для хранения истории позиций и PnL. Redis для кэширования текущего состояния. Grafana дашборд с метриками по всем открытым позициям.

Ориентиры по срокам

Этап Длительность Результат
Аналитика 1-3 дня Требования, выбор стека
Проектирование 2-4 дня Архитектура, схемы
Реализация 5-10 дней Рабочий прототип
Тестирование 2-3 дня Unit + интеграционные тесты
Деплой 1-2 дня Продакшн-окружение

Система трекинга позиций для одного perpetual DEX с алертами — 3-5 дней. Полная система с риск-менеджментом, auto-margin-add и stop-loss/take-profit для одного протокола (GMX или dYdX) — 1-1.5 недели. Мультипротокольная система (GMX + dYdX + Hyperliquid) — 2-3 недели. Стоимость рассчитывается после уточнения целевых бирж и требований к автоматизации.

Получите консультацию по вашему проекту — оценим сложность и сроки. Реализуем под ключ за 2-3 недели.