TradeTerminal

Универсальный торговый терминал для Bybit и Binance с CLI интерфейсом и архитектурой клиент-сервер, разработанный для минимизации задержки при работе с биржами. Проект создан на Rust и предоставляет мощный набор инструментов для профессиональной торговли криптовалютой.

TradeTerminal Interface

Основные возможности

Торговые операции

  • Размещение ордеров: Market и Limit ордера с быстрым исполнением
  • Риск-менеджмент: Автоматический расчёт размера позиции от риска в USDT с учётом комиссий биржи
  • Take Profit: Настройка выхода из позиции в процентах от входа
  • Trailing Stop: Гибкая система трейлинг-стопов с поддержкой:
    • Абсолютных значений цены и callback в долларах
    • Процентов от текущей цены
    • Соотношений (ratio) для активации на основе расстояния до Stop Loss
  • Auto-Stop (AS): Умный выход из позиции на активных рынках
    • Клик по цене копирует её для быстрого ввода
    • Триггер активируется по достижению цены или процента
    • Таймер ликвидности (2 сек) - закрывает позицию если торговля останавливается
    • Идеально для фиксации прибыли на волатильных участках
  • Hedge Mode: Поддержка одновременных Long/Short позиций на одном инструменте

Интерфейс и управление

  • CLI интерфейс: Удобная командная строка с сокращениями команд
  • Pipe оператор: Комбинирование команд через | для создания сложных сценариев
    • Например: :br 10 94000 | ts 2% 0.5% - открыть позицию и сразу установить trailing stop
  • Цепочки команд: Последовательное выполнение через ;
    • Например: :ca; br 10 94000 - отменить все ордера и открыть новую позицию
  • Просмотр состояния: Отображение открытых ордеров, активных позиций и текущего баланса
  • Управление ордерами: Отмена отдельных ордеров или всех сразу
  • Мультисимвольность: Быстрое переключение между торговыми парами

График и визуализация

  • Встроенный график: Интерактивный график с поддержкой множества таймфреймов
  • Sub-second таймфреймы: Уникальная возможность работы с таймфреймами 1s, 5s, 10s, 30s
    • Использует реальные tick-данные с биржи
    • Агрегация происходит на клиенте для максимальной точности
    • Отображение реальных сделок без дополнительной нагрузки на сервер
  • Стандартные таймфреймы: От 1 минуты до дневных свечей (15m, 1h, 4h, D и др.)
  • Уровни цен: Добавление и удаление горизонтальных уровней
  • Навигация: Прокрутка истории, масштабирование, автоследование за последней ценой
  • Звуковая индикация: Опциональные звуковые сигналы при сделках на бирже
    • Высокий тон - покупка, низкий - продажа
    • Частота увеличивается при росте торговой активности

Архитектура

  • Клиент-сервер: Разделение логики для оптимизации задержки
  • WebSocket: Постоянное соединение для мгновенного получения данных
  • Автообновление: Автоматическое обновление данных о позициях и ордерах
  • Docker поддержка: Простое развёртывание на VPS для минимизации задержки до серверов биржи

Технологический стек

  • Язык: Rust (высокая производительность и безопасность памяти)
  • Протокол: WebSocket для real-time коммуникации
  • Биржи:
    • Bybit API v5 (Testnet и Production)
    • Binance API (Spot и Futures)
  • Развёртывание: Docker, Docker Compose
  • UI: TUI (Text User Interface) с поддержкой вкладок

Расчёт размера позиции

Терминал использует продвинутую формулу расчёта, которая учитывает комиссии биржи:

quantity = risk_usdt / (|entry_price - sl_price| + entry_price * fee * 2)

Параметры:

  • Taker fee: 0.055%
  • Maker fee: 0.02%
  • Комиссия умножается на 2 (вход + выход по SL)

Пример:

  • Риск: $10
  • Entry: 95000, SL: 94000
  • Разница: $1000
  • Fee cost: 95000 × 0.00055 × 2 = $104.5
  • Total risk per unit: $1104.5
  • Quantity: 10 / 1104.5 = 0.00905 BTC

Trailing Stop: типы активации

Абсолютная цена

:ts 97000 500 - активация при достижении цены 97000, callback $500

Процент

:ts 2% 0.5% - активация при росте на 2% от входа, callback 0.5% от текущей цены

Соотношение (Ratio)

:ts 1/3 2% - активация на расстоянии в 3 раза больше, чем до Stop Loss

Формула: trigger = entry ± (|SL - entry| × denominator/numerator)

Пример:

  • Вход: 100
  • SL: 101 (риск 1%)
  • Ratio: 1/3
  • Trigger: 103 (в 3 раза дальше от входа, чем SL)
  • Затем TS движется с callback 2% от текущей цены

Команды терминала

Базовые ордера

:buy 0.01              # Market buy 0.01 BTC
:buy 0.01 95000        # Limit buy @ 95000
:sell 0.01             # Market sell
:sell 0.01 96000       # Limit sell @ 96000

Ордера с риск-менеджментом

:buyrisk 10 94000             # Long market, риск $10, SL @ 94000
:buyrisk 10 94000 95000       # Long limit @ 95000
:buyrisk 10 94000 - 2         # Long market + TP 2%
:sellrisk 10 96000            # Short market, риск $10, SL @ 96000
:sellrisk 10 96000 95000      # Short limit @ 95000
:sellrisk 10 96000 95000 1.5  # Short limit + TP 1.5%

Trailing Stop

:ts 2% 0.5%            # Активация +2%, callback 0.5%
:ts 97000 0.5%         # Активация @ 97000, callback 0.5%
:ts 2% 500             # Активация +2%, callback $500
:ts 1/3 2%             # Активация на ratio 1:3 от SL, callback 2%

Auto-Stop

:as 2 0.545            # Таймер 2 сек, триггер @ 0.545
:as 2 0.2%             # Таймер 2 сек, триггер +0.2%

Логика работы:

  • Цену можно скопировать кликом в интерфейсе
  • При достижении триггера запускается таймер ликвидности
  • Если за 2 секунды нет сделок на бирже - позиция закрывается
  • Защита прибыли на быстрых движениях с последующим затуханием

Комбо команды

:br 10 94000 | ts 2% 0.5%     # Long + trailing stop
:sr 10 96000 | ts 2% 0.5%     # Short + trailing stop
:ca; br 10 94000              # Отменить все + новый ордер

График

:chart                 # Открыть график
:tf 1s                 # Таймфрейм 1 секунда
:tf 5s                 # Таймфрейм 5 секунд
:tf 15                 # Таймфрейм 15 минут
:tf D                  # Дневной таймфрейм
:level 95000           # Добавить уровень
:levels                # Очистить уровни
:sound                 # Вкл/выкл звук трейдов

Управление

:cancel abc123         # Отменить ордер
:cancelall             # Отменить все ордера
:symbol ETHUSDT        # Сменить символ
:help                  # Справка

Сокращения команд

  • :b = :buy
  • :s = :sell
  • :br = :buyrisk
  • :sr = :sellrisk
  • :ts = :trailing-stop
  • :as = :auto-stop
  • :c = :cancel
  • :ca = :cancelall
  • :sym = :symbol
  • :h = :help

Основной интерфейс

  • : - Режим ввода команды
  • Tab - Переключение вкладок
  • r - Обновить данные
  • Esc - Выход из режима ввода
  • q - Выход из программы
  • Ctrl+C - Принудительный выход

График

  • h - Прокрутка влево (назад во времени)
  • l - Прокрутка вправо (вперёд во времени)
  • + / = - Увеличить масштаб
  • - - Уменьшить масштаб
  • 0 - Сбросить к последним свечам

Развёртывание

Локальный запуск

  1. Клонировать репозиторий
  2. Создать .env файл с API ключами:
BYBIT_API_KEY=your_api_key
BYBIT_API_SECRET=your_api_secret
BYBIT_TESTNET=true
  1. Запустить сервер: cargo run --bin trade-server
  2. Запустить клиент: SERVER_URL=ws://127.0.0.1:9000 cargo run --bin trade-client

Развёртывание на VPS

Для минимизации задержки рекомендуется размещать сервер в регионе, близком к серверам бирж (Bybit/Binance: Singapore, Tokyo):

  1. Установить Docker на VPS
  2. Создать .env с API ключами
  3. Запустить: docker-compose up -d
  4. Подключить клиент: SERVER_URL=ws://vps-ip:9000

Сценарии использования

Этот инструмент полезен для:

  • Профессиональной торговли криптовалютой с минимальной задержкой
  • Скальпинга и внутридневной торговли
  • Автоматизации торговых стратегий через pipe и цепочки команд
  • Тестирования торговых идей на Testnet
  • Удалённой торговли через VPS

Открытый исходный код

Выпущен под лицензией MIT. Проект демонстрирует профессиональные практики разработки высокопроизводительных приложений на Rust и может служить образовательным ресурсом для изучения:

  • Архитектуры клиент-сервер на WebSocket
  • Работы с биржевыми API
  • Разработки TUI приложений
  • Риск-менеджмента в торговле

Ссылки

  • Статус: В стадии разработки (приватный репозиторий)
  • Технологии: Rust, WebSocket, Docker, Bybit API, Binance API
  • Лицензия: MIT