{"id":46236019,"url":"https://github.com/tigusigalpa/bingx-php","last_synced_at":"2026-04-05T07:03:27.741Z","repository":{"id":324931776,"uuid":"1099161418","full_name":"tigusigalpa/bingx-php","owner":"tigusigalpa","description":"BingX PHP client for Swap V2 API with first‑class Laravel integration. Provides modular services for market data, account management, and trading, plus a fluent OrderBuilder, custom exception handling, and commission/leverage utilities for building robust trading bots and tools","archived":false,"fork":false,"pushed_at":"2025-12-21T09:45:40.000Z","size":241,"stargazers_count":14,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-23T02:26:48.225Z","etag":null,"topics":["api","bingx","bingx-api","cryptocurrency","laravel","php"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tigusigalpa.png","metadata":{"files":{"readme":"README-ru.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-18T16:39:50.000Z","updated_at":"2025-12-21T09:45:43.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tigusigalpa/bingx-php","commit_stats":null,"previous_names":["tigusigalpa/bingx-php"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/tigusigalpa/bingx-php","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tigusigalpa%2Fbingx-php","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tigusigalpa%2Fbingx-php/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tigusigalpa%2Fbingx-php/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tigusigalpa%2Fbingx-php/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tigusigalpa","download_url":"https://codeload.github.com/tigusigalpa/bingx-php/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tigusigalpa%2Fbingx-php/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30056056,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T18:21:05.932Z","status":"ssl_error","status_checked_at":"2026-03-03T18:20:59.341Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","bingx","bingx-api","cryptocurrency","laravel","php"],"created_at":"2026-03-03T19:02:46.410Z","updated_at":"2026-04-05T07:03:27.720Z","avatar_url":"https://github.com/tigusigalpa.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BingX PHP SDK\n\n![BingX PHP SDK](https://github.com/user-attachments/assets/bc9acf4c-79c7-4e02-bb8d-75f2d8784b29)\n\u003cdiv align=\"center\"\u003e\n\n[![PHP Version](https://img.shields.io/badge/php-%3E%3D8.1-blue?style=flat-square\u0026logo=php)](https://www.php.net/)\n[![Composer](https://img.shields.io/badge/composer-v2-orange?style=flat-square\u0026logo=composer)](https://getcomposer.org/)\n[![License](https://img.shields.io/badge/license-MIT-green?style=flat-square)](LICENSE)\n[![API v3](https://img.shields.io/badge/BingX%20API-v3-success?style=flat-square)](https://bingx-api.github.io/docs-v3/)\n[![GitHub Stars](https://img.shields.io/github/stars/tigusigalpa/bingx-php?style=flat-square\u0026logo=github)](https://github.com/tigusigalpa/bingx-php)\n[![Latest Release](https://img.shields.io/github/v/release/tigusigalpa/bingx-php?style=flat-square\u0026logo=github)](https://github.com/tigusigalpa/bingx-php/releases)\n[![Test Coverage](https://img.shields.io/badge/coverage-119%2B%20tests-brightgreen?style=flat-square)](#-тестирование)\n\nРусский | [English](README.md)\n\u003c/div\u003e\n\nСамый полный PHP-клиент для биржи [BingX](https://bingx.com). Строите торгового бота, нужны рыночные данные в реальном времени или хотите автоматизировать портфель? Мы вас прикроем.\n\n**Что внутри:** USDT-M и Coin-M фьючерсы, спот, TWAP алгоритмические ордера, трейлинг-стопы, портфельная маржа, копи-трейдинг, субаккаунты, WebSocket и бесшовная интеграция с Laravel. Более 250 методов готовы к использованию.\n\n\u003e 📖 **[Полная документация на Wiki](https://github.com/tigusigalpa/bingx-php/wiki)** — примеры, гайды и справочник API\n\n## Содержание\n\n- [Возможности](#возможности)\n- [🚀 Возможности API v3](#-возможности-api-v3)\n- [Быстрый старт](#быстрый-старт)\n- [Установка](#установка)\n- [Использование](#использование)\n    - [Market Service](#market-service---рыночные-данные)\n    - [Quote API](#quote-api---оптимизированные-рыночные-данные)\n    - [TWAP Orders](#twap-orders---алгоритмическая-торговля)\n    - [Account Service](#account-service---управление-аккаунтом)\n    - [Trade Service](#trade-service---торговые-операции)\n    - [Wallet Service](#wallet-service---управление-кошельком)\n    - [Spot Account Service](#spot-account-service---спотовый-аккаунт)\n    - [Contract Service](#contract-service---стандартные-фьючерсы)\n    - [WebSocket API](#websocket-api)\n    - [Coin-M Perpetual Futures](#coin-m-perpetual-futures---контракты-с-крипто-маржой)\n- [OrderBuilder](#orderbuilder---расширенное-создание-ордеров)\n- [Обработка ошибок](#обработка-ошибок)\n- [Тестирование](#тестирование)\n- [Документация](#документация)\n- [Версии](#версии)\n- [Лицензия](#лицензия)\n\n---\n\n## Возможности\n\n### Что можно делать с этим SDK?\n\n| Сервис                       | Описание                                                         | Методов |\n|------------------------------|------------------------------------------------------------------|---------|\n| **USDT-M Perpetual Futures** |                                                                  |         |\n| **Market Data**        | Рыночные данные, Quote API, символы, цены, свечи, OI             | 46      |\n| **TWAP Service** *(v3)*   | Алгоритмические ордера с временным взвешиванием                  | 7       |\n| **Account Management**       | Баланс, позиции, кредитное плечо, мониторинг рисков              | 45      |\n| **Trade Management**         | Ордера, история сделок, управление позициями, типы v3            | 60      |\n| **Wallet Management**        | Депозиты, выводы, адреса кошельков                               | 6       |\n| **Spot Account Service**  | Спотовый баланс, переводы, внутренние переводы                   | 8       |\n| **Sub-Account Service**   | Управление субаккаунтами, API ключи, переводы                    | 20      |\n| **Copy Trading Service**  | Копи-трейдинг для фьючерсов и спота                              | 13      |\n| **Contract Service**      | Стандартный API контрактов                                       | 3       |\n| **Listen Key Service**    | Аутентификация WebSocket                                         | 3       |\n| **Coin-M Perpetual Futures** |                                                                  |         |\n| **Coin-M Market**         | Информация о контрактах, тикер, глубина, свечи, открытый интерес | 6       |\n| **Coin-M Trade**          | Ордера, позиции, кредитное плечо, маржа, баланс                  | 17      |\n| **Coin-M Listen Key**     | Аутентификация WebSocket для Coin-M                              | 3       |\n\n### Безопасность — мы относимся к ней серьёзно\n\n- **HMAC-SHA256 подписи** на каждый запрос\n- **Автоматическая обработка timestamp** — забудьте про ошибки \"timestamp out of recvWindow\"\n- **Гибкое кодирование** — base64 или hex, на ваш выбор\n- **Защита от replay-атак** через recvWindow\n- **Умные исключения** — точно знаете, что пошло не так\n\n### Создано для разработчиков\n\n- **Fluent интерфейс** — цепочки методов как у профи\n- **Дружит с IDE** — полное автодополнение с типами\n- **Проверено в бою** — 119+ тестов и это не предел\n- **Как вам удобно** — работает с чистым PHP или Laravel\n\n---\n\n## 🚀 Возможности API v3\n\nНовые фишки. Эти функции приносят инструменты институционального уровня каждому.\n\n### TWAP Ордера — Торгуйте как крупные игроки\n\nПробовали купить 10 BTC за раз и смотрели, как цена взлетает против вас? Это проскальзывание, и TWAP решает эту проблему, распределяя ордер во времени:\n\n```php\n// Выполнить покупку 10 BTC за 1 час\n$twap = Bingx::twap()-\u003ebuy(\n    symbol: 'BTC-USDT',\n    quantity: 10.0,\n    duration: 3600,  // секунды\n    positionSide: 'LONG'\n);\n\n// Отслеживать прогресс\n$details = Bingx::twap()-\u003egetOrderDetail($twap['orderId']);\n```\n\n### Новые типы ордеров — Больше способов торговать\n\n**Трейлинг-стоп маркет** — Стоп-лосс, который следует за вашей прибылью:\n```php\n$order = Bingx::trade()-\u003eorder()\n    -\u003efutures()\n    -\u003esymbol('ETH-USDT')\n    -\u003esell()\n    -\u003elong()\n    -\u003etype('TRAILING_STOP_MARKET')\n    -\u003eactivationPrice(3000.0)\n    -\u003ecallbackRate(1.0)  // Отставание 1% от пика\n    -\u003equantity(1.0)\n    -\u003eexecute();\n```\n\n**Триггер-лимит** — Дождитесь своей цены, затем используйте лимит (не маркет):\n```php\n$order = Bingx::trade()-\u003eorder()\n    -\u003efutures()\n    -\u003etype('TRIGGER_LIMIT')\n    -\u003estopPrice(49500.0)  // Триггер\n    -\u003eprice(50000.0)      // Лимит\n    -\u003eexecute();\n```\n\n### Мультиактивная маржа — Используйте весь портфель\n\nЗачем блокировать маржу для каждой позиции, когда весь портфель может обеспечивать всё?\n\n```php\n// Включить портфельную маржу\nBingx::trade()-\u003eswitchMultiAssetsMode(true);\n\n// Проверить детали маржи\n$margin = Bingx::trade()-\u003egetMultiAssetsMargin();\n```\n\n### Мониторинг рисков — Знайте до того, как ликвиднёт\n\nЗнать цену ликвидации *до* того, как вас ликвиднут — это как бы важно:\n\n```php\n$risk = Bingx::account()-\u003egetPositionRisk('BTC-USDT');\necho \"Цена ликвидации: {$risk['liquidationPrice']}\\n\";\necho \"Коэффициент маржи: {$risk['marginRatio']}\\n\";\n```\n\n### Разворот позиции одним кликом — Передумали? Без проблем\n\nРынок развернулся? Переверните позицию одной атомарной операцией — без разрыва, без экспозиции:\n\n```php\n// Развернуть: LONG → SHORT или SHORT → LONG\nBingx::trade()-\u003eoneClickReversePosition('BTC-USDT');\n```\n\n### Отслеживание доходов и P\u0026L — Куда ушли деньги?\n\nРазберите по полочкам прибыль, убытки, комиссии и фандинг:\n\n```php\n// Получить доходы по типу\n$income = Bingx::account()-\u003egetIncomeHistory(\n    symbol: 'BTC-USDT',\n    incomeType: 'REALIZED_PNL'\n);\n\n// История комиссий\n$commissions = Bingx::account()-\u003egetCommissionHistory('BTC-USDT');\n```\n\n### Расширенные рыночные данные — Видьте то, что другие не видят\n\n```php\n// Открытый интерес\n$oi = Bingx::market()-\u003egetOpenInterest('BTC-USDT');\n\n// Информация о ставке финансирования\n$funding = Bingx::market()-\u003egetFundingRateInfo('BTC-USDT');\n\n// Лучшие bid/ask\n$ticker = Bingx::market()-\u003egetBookTicker('BTC-USDT');\n```\n\n\u003e 📘 **[Полное руководство по миграции на API v3](API_V3_MIGRATION.md)** — Ваш существующий код продолжает работать. Новые функции опциональны.\n\n---\n\n## Быстрый старт\n\nДавайте запустим вас за 5 минут.\n\n### С Laravel — Простой путь\n\n```php\n// Получить текущую цену\n$price = Bingx::market()-\u003egetLatestPrice('BTC-USDT');\necho \"Цена BTC: {$price['price']}\";\n\n// Получить баланс аккаунта\n$balance = Bingx::account()-\u003egetBalance();\n\n// Создать ордер используя OrderBuilder\n$order = Bingx::trade()-\u003eorder()\n    -\u003efutures()\n    -\u003esymbol('BTC-USDT')\n    -\u003ebuy()\n    -\u003elong()\n    -\u003etype('LIMIT')\n    -\u003emargin(100)\n    -\u003eprice(50000)\n    -\u003eleverage(10)\n    -\u003estopLossPercent(5)\n    -\u003etakeProfitPercent(15)\n    -\u003eexecute();\n```\n\n### Чистый PHP — Без фреймворка\n\n```php\nuse Tigusigalpa\\BingX\\BingxClient;\nuse Tigusigalpa\\BingX\\Http\\BaseHttpClient;\n\n$http = new BaseHttpClient('API_KEY', 'API_SECRET', 'https://open-api.bingx.com');\n$bingx = new BingxClient($http);\n\n$price = $bingx-\u003emarket()-\u003egetLatestPrice('BTC-USDT');\n```\n\n---\n\n## Установка\n\n### Что понадобится\n\n- **PHP 8.1+** — используем современные фичи\n- **Composer** — для управления зависимостями\n- **Laravel 8-12** — опционально, но упрощает жизнь\n\n### Шаг 1: Добавить репозиторий\n\nВ корневой `composer.json`:\n\n```json\n{\n    \"repositories\": [\n        {\n            \"type\": \"path\",\n            \"url\": \"packages/bingx-php\"\n        }\n    ]\n}\n```\n\n### Шаг 2: Установить пакет\n\n```bash\ncomposer require tigusigalpa/bingx-php:*\n```\n\n### Шаг 3: (Только Laravel) Опубликовать конфигурацию\n\n```bash\nphp artisan vendor:publish --tag=bingx-config\n```\n\n### Шаг 4: Настроить переменные окружения\n\nДобавить в `.env`:\n\n```env\nBINGX_API_KEY=your_api_key_here\nBINGX_API_SECRET=your_api_secret_here\nBINGX_SOURCE_KEY=optional_source_key\nBINGX_BASE_URI=https://open-api.bingx.com\nBINGX_SIGNATURE_ENCODING=base64\n```\n\n### Получение API ключей\n\n1. Зайдите в [BingX API Settings](https://bingx.com/en-US/accounts/api)\n2. Нажмите \"Create API\"\n3. **Важно:** Сохраните Secret Key сразу — вы увидите его только один раз!\n4. Настройте права (чтение, торговля, вывод — что вам нужно)\n5. Храните оба ключа в безопасном месте (не в коде!)\n\n---\n\n## Использование\n\n### Market Service - Рыночные данные\n\n#### Торговые пары и символы\n\n```php\n// Получить все доступные символы (спот + фьючерсы)\n$allSymbols = Bingx::market()-\u003egetAllSymbols();\n// ['spot' =\u003e [...], 'futures' =\u003e [...]]\n\n// Только спотовые пары\n$spotSymbols = Bingx::market()-\u003egetSpotSymbols();\n\n// Только фьючерсные символы\n$futuresSymbols = Bingx::market()-\u003egetFuturesSymbols();\n```\n\n#### Цены и статистика\n\n```php\n// Текущая цена\n$futuresPrice = Bingx::market()-\u003egetLatestPrice('BTC-USDT');\n$spotPrice = Bingx::market()-\u003egetSpotLatestPrice('BTC-USDT');\n\n// 24-часовая статистика\n$ticker = Bingx::market()-\u003eget24hrTicker('BTC-USDT');\n$spotTicker = Bingx::market()-\u003egetSpot24hrTicker('BTC-USDT');\n\n// Все символы сразу\n$allTickers = Bingx::market()-\u003eget24hrTicker();\n```\n\n#### Глубина рынка и свечи\n\n```php\n// Глубина стакана ордеров\n$depth = Bingx::market()-\u003egetDepth('BTC-USDT', 20);\n$spotDepth = Bingx::market()-\u003egetSpotDepth('BTC-USDT', 20);\n\n// Свечи\n$klines = Bingx::market()-\u003egetKlines('BTC-USDT', '1h', 100);\n$spotKlines = Bingx::market()-\u003egetSpotKlines('BTC-USDT', '1h', 100);\n\n// С временным диапазоном\n$klines = Bingx::market()-\u003egetKlines(\n    'BTC-USDT', '1h', 100,\n    strtotime('2024-01-01') * 1000,\n    strtotime('2024-01-02') * 1000\n);\n```\n\n#### Ставка финансирования и маркированная цена\n\n```php\n// История ставки финансирования\n$fundingRate = Bingx::market()-\u003egetFundingRateHistory('BTC-USDT', 100);\n\n// Маркированная цена\n$markPrice = Bingx::market()-\u003egetMarkPrice('BTC-USDT');\n\n// Индекс премии\n$premiumKlines = Bingx::market()-\u003egetPremiumIndexKlines('BTC-USDT', '1h', 100);\n\n// Непрерывные контракты\n$continuousKlines = Bingx::market()-\u003egetContinuousKlines('BTC-USDT', '1h', 100);\n```\n\n#### Сделки\n\n```php\n// Агрегированные сделки\n$aggTrades = Bingx::market()-\u003egetAggregateTrades('BTC-USDT', 500);\n\n// Недавние сделки\n$recentTrades = Bingx::market()-\u003egetRecentTrades('BTC-USDT', 500);\n\n// Спотовые сделки\n$spotAggTrades = Bingx::market()-\u003egetSpotAggregateTrades('BTC-USDT', 500);\n$spotRecentTrades = Bingx::market()-\u003egetSpotRecentTrades('BTC-USDT', 500);\n```\n\n---\n\n### Quote API - Оптимизированные рыночные данные\n\n```php\n// Получить все спецификации контрактов\n$contracts = Bingx::market()-\u003egetContracts();\n\n// Стакан ордеров через Quote API (оптимизированный)\n$depth = Bingx::market()-\u003egetQuoteDepth('BTC-USDT', 20);\n\n// 24-часовой тикер через Quote API\n$ticker = Bingx::market()-\u003egetQuoteTicker('BTC-USDT');\n\n// Ставка финансирования\n$fundingRate = Bingx::market()-\u003egetQuoteFundingRate('BTC-USDT');\n\n// Открытый интерес\n$openInterest = Bingx::market()-\u003egetQuoteOpenInterest('BTC-USDT');\n```\n\n---\n\n### TWAP Orders - Алгоритмическая торговля\n\nTWAP (Time-Weighted Average Price) ордера позволяют исполнять крупные ордера со временем для минимизации влияния на\nрынок.\n\n```php\n// Простой TWAP ордер на покупку\n$order = Bingx::twap()-\u003ebuy(\n    symbol: 'BTC-USDT',\n    quantity: 1.0,\n    duration: 1800, // 30 минут в секундах\n    price: null, // null = рыночная цена\n    positionSide: 'LONG'\n);\n\n// Отменить TWAP ордер\nBingx::twap()-\u003ecancelOrder('orderId', 'BTC-USDT');\n\n// Получить открытые TWAP ордера\n$openOrders = Bingx::twap()-\u003egetOpenOrders('BTC-USDT');\n```\n\n---\n\n### Account Service - Управление аккаунтом\n\n```php\n// Получить баланс аккаунта\n$balance = Bingx::account()-\u003egetBalance();\n\n// Все позиции\n$allPositions = Bingx::account()-\u003egetPositions();\n\n// Получить текущее кредитное плечо\n$leverage = Bingx::account()-\u003egetLeverage('BTC-USDT');\n\n// Установить кредитное плечо\nBingx::account()-\u003esetLeverage('BTC-USDT', 'BOTH', 20);\n\n// Режим маржи (ISOLATED или CROSSED)\n$marginMode = Bingx::account()-\u003egetMarginMode('BTC-USDT');\nBingx::account()-\u003esetMarginMode('BTC-USDT', 'ISOLATED');\n```\n\n---\n\n### Trade Service - Торговые операции\n\n```php\n// Спотовые ордера\n$buy = Bingx::trade()-\u003espotMarketBuy('BTC-USDT', 0.001);\n$sell = Bingx::trade()-\u003espotMarketSell('BTC-USDT', 0.001);\n\n// Фьючерсные ордера\n$longOrder = Bingx::trade()-\u003efuturesLongMarket('BTC-USDT', 100, 10);\n$shortOrder = Bingx::trade()-\u003efuturesShortMarket('BTC-USDT', 100, 10);\n\n// Создать ордер\n$order = Bingx::trade()-\u003ecreateOrder([\n    'symbol' =\u003e 'BTC-USDT',\n    'side' =\u003e 'BUY',\n    'type' =\u003e 'MARKET',\n    'quantity' =\u003e 0.001\n]);\n\n// Отменить конкретный ордер\nBingx::trade()-\u003ecancelOrder('BTC-USDT', '123456789');\n\n// Отменить все ордера для символа\nBingx::trade()-\u003ecancelAllOrders('BTC-USDT');\n```\n\n---\n\n### Wallet Service - Управление кошельком\n\n```php\n// История депозитов\n$deposits = Bingx::wallet()-\u003egetDepositHistory(\n    coin: 'USDT',\n    status: 1,\n    startTime: strtotime('2024-01-01') * 1000,\n    endTime: strtotime('2024-01-31') * 1000\n);\n\n// Адрес для депозита\n$address = Bingx::wallet()-\u003egetDepositAddress('USDT', 'TRC20');\n\n// История выводов\n$withdrawals = Bingx::wallet()-\u003egetWithdrawalHistory(\n    coin: 'USDT',\n    status: 6\n);\n\n// Создать вывод\n$withdrawal = Bingx::wallet()-\u003ewithdraw(\n    coin: 'USDT',\n    address: 'TXxx...xxx',\n    amount: 100.0,\n    network: 'TRC20'\n);\n\n// Информация о монетах\n$coins = Bingx::wallet()-\u003egetAllCoinInfo();\n```\n\n---\n\n### Spot Account Service - Спотовый аккаунт\n\n```php\n// Баланс спотового аккаунта\n$balance = Bingx::spotAccount()-\u003egetBalance();\n\n// Баланс фонда\n$fundBalance = Bingx::spotAccount()-\u003egetFundBalance();\n\n// Универсальный перевод\n$transfer = Bingx::spotAccount()-\u003euniversalTransfer(\n    type: 'FUND_PFUTURES',\n    asset: 'USDT',\n    amount: 100.0\n);\n\n// История переводов\n$history = Bingx::spotAccount()-\u003egetAssetTransferRecords(\n    type: 'FUND_PFUTURES',\n    startTime: strtotime('2024-01-01') * 1000,\n    endTime: strtotime('2024-01-31') * 1000\n);\n\n// Внутренний перевод (основной -\u003e суб-аккаунт)\n$internalTransfer = Bingx::spotAccount()-\u003einternalTransfer(\n    coin: 'USDT',\n    walletType: 'SPOT',\n    amount: 50.0,\n    transferType: 'FROM_MAIN_TO_SUB',\n    subUid: '123456'\n);\n\n// Получить балансы всех аккаунтов\n$allBalances = Bingx::spotAccount()-\u003egetAllAccountBalances();\n```\n\n---\n\n### Sub-Account Service - Управление субаккаунтами\n\n#### Создание и управление субаккаунтами\n\n```php\n// Создать новый субаккаунт\n$result = Bingx::subAccount()-\u003ecreateSubAccount('sub_account_001');\n\n// Получить UID аккаунта\n$uid = Bingx::subAccount()-\u003egetAccountUid();\n\n// Получить список всех субаккаунтов\n$subAccounts = Bingx::subAccount()-\u003egetSubAccountList();\n\n// Получить конкретный субаккаунт с пагинацией\n$subAccounts = Bingx::subAccount()-\u003egetSubAccountList(\n    subAccountString: 'sub_account_001',\n    current: 1,\n    size: 10\n);\n\n// Получить активы субаккаунта\n$assets = Bingx::subAccount()-\u003egetSubAccountAssets('12345678');\n\n// Обновить статус субаккаунта\nBingx::subAccount()-\u003eupdateSubAccountStatus('sub_account_001', 1); // 1: включить, 2: отключить\n\n// Получить балансы всех субаккаунтов\n$balances = Bingx::subAccount()-\u003egetAllSubAccountBalances();\n```\n\n#### Управление API ключами субаккаунтов\n\n```php\n// Создать API ключ для субаккаунта\n$apiKey = Bingx::subAccount()-\u003ecreateSubAccountApiKey(\n    subAccountString: 'sub_account_001',\n    label: 'Trading Bot',\n    permissions: ['spot' =\u003e true, 'futures' =\u003e true],\n    ip: '192.168.1.1' // Опциональный IP whitelist\n);\n\n// Запросить информацию об API ключе\n$apiKeys = Bingx::subAccount()-\u003equeryApiKey('sub_account_001');\n\n// Редактировать API ключ субаккаунта\nBingx::subAccount()-\u003eeditSubAccountApiKey(\n    subAccountString: 'sub_account_001',\n    apiKey: 'your_api_key',\n    permissions: ['spot' =\u003e true, 'futures' =\u003e false],\n    ip: '192.168.1.100'\n);\n\n// Удалить API ключ субаккаунта\nBingx::subAccount()-\u003edeleteSubAccountApiKey('sub_account_001', 'your_api_key');\n```\n\n#### Переводы субаккаунтов\n\n```php\n// Авторизовать субаккаунт для внутренних переводов\nBingx::subAccount()-\u003eauthorizeSubAccountInternalTransfer('sub_account_001', 1); // 1: разрешить, 0: запретить\n\n// Перевод с основного на субаккаунт\n$transfer = Bingx::subAccount()-\u003esubAccountInternalTransfer(\n    coin: 'USDT',\n    walletType: 'SPOT',\n    amount: 100.0,\n    transferType: 'FROM_MAIN_TO_SUB',\n    toSubUid: '12345678'\n);\n\n// Перевод с субаккаунта на основной\n$transfer = Bingx::subAccount()-\u003esubAccountInternalTransfer(\n    coin: 'USDT',\n    walletType: 'SPOT',\n    amount: 50.0,\n    transferType: 'FROM_SUB_TO_MAIN',\n    fromSubUid: '12345678'\n);\n\n// Перевод между субаккаунтами\n$transfer = Bingx::subAccount()-\u003esubAccountInternalTransfer(\n    coin: 'USDT',\n    walletType: 'PERPETUAL',\n    amount: 25.0,\n    transferType: 'FROM_SUB_TO_SUB',\n    fromSubUid: '12345678',\n    toSubUid: '87654321',\n    clientId: 'transfer-001'\n);\n\n// Получить записи внутренних переводов\n$records = Bingx::subAccount()-\u003egetSubAccountInternalTransferRecords(\n    startTime: strtotime('-7 days') * 1000,\n    endTime: time() * 1000,\n    current: 1,\n    size: 50\n);\n\n// Перевод активов субаккаунта\n$assetTransfer = Bingx::subAccount()-\u003esubAccountAssetTransfer(\n    subUid: '12345678',\n    type: 'FUND_PFUTURES',\n    asset: 'USDT',\n    amount: 100.0\n);\n\n// Получить поддерживаемые монеты для переводов субаккаунта\n$supportedCoins = Bingx::subAccount()-\u003egetSubAccountTransferSupportedCoins('12345678');\n\n// Получить историю переводов активов\n$history = Bingx::subAccount()-\u003egetSubAccountAssetTransferHistory(\n    subUid: '12345678',\n    type: 'FUND_PFUTURES',\n    startTime: strtotime('-30 days') * 1000,\n    endTime: time() * 1000\n);\n```\n\n#### Управление депозитами субаккаунтов\n\n```php\n// Создать депозитный адрес для субаккаунта\n$address = Bingx::subAccount()-\u003ecreateSubAccountDepositAddress(\n    coin: 'USDT',\n    network: 'TRC20',\n    subUid: '12345678'\n);\n\n// Получить депозитный адрес субаккаунта\n$depositAddress = Bingx::subAccount()-\u003egetSubAccountDepositAddress(\n    coin: 'USDT',\n    subUid: '12345678',\n    network: 'TRC20'\n);\n\n// Получить историю депозитов субаккаунта\n$deposits = Bingx::subAccount()-\u003egetSubAccountDepositHistory(\n    subUid: '12345678',\n    coin: 'USDT',\n    status: 1, // 0: в ожидании, 1: успешно, 6: зачислено но нельзя вывести\n    startTime: strtotime('-30 days') * 1000,\n    endTime: time() * 1000,\n    limit: 100\n);\n```\n\n---\n\n### Copy Trading Service - Копи-трейдинг\n\n#### Копи-трейдинг фьючерсов\n\n```php\n// Получить текущие ордера отслеживания\n$orders = Bingx::copyTrading()-\u003egetCurrentTrackOrders('BTC-USDT');\n\n// Закрыть позицию по номеру ордера\n$result = Bingx::copyTrading()-\u003ecloseTrackOrder('1252864099381234567');\n\n// Установить тейк-профит и стоп-лосс\nBingx::copyTrading()-\u003esetTPSL(\n    positionId: '1252864099381234567',\n    stopLoss: 48000.0,\n    takeProfit: 52000.0\n);\n\n// Получить детали трейдера\n$details = Bingx::copyTrading()-\u003egetTraderDetail();\n\n// Получить сводку прибыли\n$summary = Bingx::copyTrading()-\u003egetProfitSummary();\n\n// Получить детали прибыли с пагинацией\n$profits = Bingx::copyTrading()-\u003egetProfitDetail(\n    pageIndex: 1,\n    pageSize: 20\n);\n\n// Установить комиссию\nBingx::copyTrading()-\u003esetCommission(5.0); // 5% комиссия\n\n// Получить доступные торговые пары\n$pairs = Bingx::copyTrading()-\u003egetTradingPairs();\n```\n\n#### Копи-трейдинг спота\n\n```php\n// Продать спотовый ордер на основе ID ордера покупки\n$result = Bingx::copyTrading()-\u003esellSpotOrder('1253517936071234567');\n\n// Получить детали спотового трейдера\n$details = Bingx::copyTrading()-\u003egetSpotTraderDetail();\n\n// Получить сводку прибыли спота\n$summary = Bingx::copyTrading()-\u003egetSpotProfitSummary();\n\n// Получить детали прибыли спота\n$profits = Bingx::copyTrading()-\u003egetSpotProfitDetail(\n    pageIndex: 1,\n    pageSize: 20\n);\n\n// Запросить исторические спотовые ордера\n$history = Bingx::copyTrading()-\u003egetSpotHistoryOrders(\n    pageIndex: 1,\n    pageSize: 50\n);\n```\n\n---\n\n### Contract Service - Стандартные фьючерсы\n\n```php\n// Получить все позиции по стандартным контрактам\n$positions = Bingx::contract()-\u003egetAllPositions();\n\n// Получить исторические ордера для конкретного символа\n$orders = Bingx::contract()-\u003egetAllOrders(\n    symbol: 'BTC-USDT',\n    limit: 100,\n    startTime: strtotime('-7 days') * 1000,\n    endTime: time() * 1000\n);\n\n// Запросить баланс аккаунта стандартных контрактов\n$balance = Bingx::contract()-\u003egetBalance();\n\n// С пользовательскими параметрами\n$positions = Bingx::contract()-\u003egetAllPositions(\n    timestamp: time() * 1000,\n    recvWindow: 5000\n);\n```\n\n---\n\n### WebSocket API\n\n```php\nuse Tigusigalpa\\BingX\\WebSocket\\MarketDataStream;\n\n$stream = new MarketDataStream();\n$stream-\u003econnect();\n\n// Подписаться на события\n$stream-\u003esubscribeTrade('BTC-USDT');\n$stream-\u003esubscribeKline('BTC-USDT', '1m');\n$stream-\u003esubscribeDepth('BTC-USDT', 20);\n\n// Обработка сообщений\n$stream-\u003eonMessage(function ($data) {\n    echo \"Данные: \" . json_encode($data) . PHP_EOL;\n});\n\n// Начать прослушивание\n$stream-\u003elisten();\n```\n\n---\n\n### Coin-M Perpetual Futures - Контракты с крипто-маржой\n\nCoin-M фьючерсы — маржа и расчёты в криптовалюте (BTC, ETH и т.д.) вместо USDT. API: `/openApi/cswap/v1/`.\n\n#### Ключевые отличия от USDT-M фьючерсов\n\n| Особенность          | USDT-M Фьючерсы     | Coin-M Фьючерсы                |\n|----------------------|---------------------|--------------------------------|\n| **Валюта маржи**     | USDT (стейблкоин)   | Криптовалюта (BTC, ETH и т.д.) |\n| **Расчёты**          | USDT                | Базовая криптовалюта           |\n| **API путь**         | `/openApi/swap/v2/` | `/openApi/cswap/v1/`           |\n| **Формат символа**   | BTC-USDT            | BTC-USD, ETH-USD               |\n| **Деноминация цены** | USD значение        | Контракты на монету            |\n\n#### Рыночные данные\n\n```php\n// Информация о контрактах\n$contracts = Bingx::coinM()-\u003emarket()-\u003egetContracts();\n\n// Текущая цена и ставка финансирования\n$ticker = Bingx::coinM()-\u003emarket()-\u003egetTicker('BTC-USD');\n\n// Открытые позиции (открытый интерес)\n$openPositions = Bingx::coinM()-\u003emarket()-\u003egetOpenPositions('BTC-USD');\n\n// Данные K-line\n$klines = Bingx::coinM()-\u003emarket()-\u003egetKlines('BTC-USD', '1h', 100);\n\n// Глубина стакана ордеров\n$depth = Bingx::coinM()-\u003emarket()-\u003egetDepth('BTC-USD', 20);\n```\n\n#### Торговые операции\n\n```php\n// Разместить ордер\n$order = Bingx::coinM()-\u003etrade()-\u003ecreateOrder([\n    'symbol' =\u003e 'BTC-USD',\n    'side' =\u003e 'BUY',\n    'positionSide' =\u003e 'LONG',\n    'type' =\u003e 'LIMIT',\n    'quantity' =\u003e 100,\n    'price' =\u003e 50000\n]);\n\n// Получить кредитное плечо\n$leverage = Bingx::coinM()-\u003etrade()-\u003egetLeverage('BTC-USD');\n\n// Установить кредитное плечо\nBingx::coinM()-\u003etrade()-\u003esetLeverage('BTC-USD', 10);\n\n// Получить позиции\n$positions = Bingx::coinM()-\u003etrade()-\u003egetPositions('BTC-USD');\n\n// Получить баланс аккаунта\n$balance = Bingx::coinM()-\u003etrade()-\u003egetBalance();\n```\n\n---\n\n## OrderBuilder - Расширенное создание ордеров\n\n```php\n// Фьючерсный ордер с кредитным плечом\n$order = Bingx::trade()-\u003eorder()\n    -\u003efutures()\n    -\u003esymbol('BTC-USDT')\n    -\u003ebuy()\n    -\u003elong()\n    -\u003etype('LIMIT')\n    -\u003emargin(100)\n    -\u003eprice(50000)\n    -\u003eleverage(10)\n    -\u003eexecute();\n\n// Лонг с процентными стопами\n$order = Bingx::trade()-\u003eorder()\n    -\u003efutures()\n    -\u003esymbol('BTC-USDT')\n    -\u003ebuy()\n    -\u003elong()\n    -\u003etype('LIMIT')\n    -\u003emargin(200)\n    -\u003eprice(50000)\n    -\u003eleverage(10)\n    -\u003estopLossPercent(5)      // Stop Loss 5% ниже\n    -\u003etakeProfitPercent(15)   // Take Profit 15% выше\n    -\u003eexecute();\n```\n\n---\n\n## Обработка ошибок\n\n```php\nuse Tigusigalpa\\BingX\\Exceptions\\{\n    BingxException,\n    AuthenticationException,\n    RateLimitException,\n    InsufficientBalanceException,\n    ApiException\n};\n\ntry {\n    $balance = Bingx::account()-\u003egetBalance();\n} catch (AuthenticationException $e) {\n    // Ошибка аутентификации (неверный ключ/подпись)\n    echo \"Ошибка авторизации: \" . $e-\u003egetMessage();\n} catch (RateLimitException $e) {\n    // Превышен лимит запросов\n    echo \"Превышен лимит. Повторить после: \" . $e-\u003egetRetryAfter();\n} catch (InsufficientBalanceException $e) {\n    // Недостаточно средств\n    echo \"Недостаточный баланс\";\n} catch (ApiException $e) {\n    // Ошибка API (бизнес-логика)\n    echo \"Ошибка API: \" . $e-\u003egetErrorCode() . \" - \" . $e-\u003egetMessage();\n} catch (BingxException $e) {\n    // Общие ошибки библиотеки\n    echo \"Ошибка BingX: \" . $e-\u003egetMessage();\n}\n```\n\n---\n\n## Тестирование\n\n### Установить зависимости\n\n```bash\ncomposer install --dev\n```\n\n### Настроить окружение\n\n```bash\ncp tests/.env.example tests/.env\n```\n\nЗаполнить `tests/.env`:\n\n```env\nBINGX_API_KEY=your_api_key_here\nBINGX_API_SECRET=your_api_secret_here\nBINGX_BASE_URI=https://open-api.bingx.com\nBINGX_TEST_SYMBOL=BTC-USDT\nBINGX_TEST_SYMBOL_SPOT=BTC-USDT\nBINGX_TEST_LEVERAGE=10\nBINGX_TEST_MARGIN=100\nBINGX_TEST_QUANTITY=0.001\n```\n\n### Запустить тесты\n\n```bash\n# Только безопасные тесты (только чтение)\nvendor/bin/phpunit\n\n# Все тесты включая опасные операции\nvendor/bin/phpunit --group dangerous\n\n# Конкретные сервисы\nvendor/bin/phpunit tests/Integration/MarketServiceTest.php\nvendor/bin/phpunit tests/Integration/AccountServiceTest.php\nvendor/bin/phpunit tests/Integration/TradeServiceTest.php\n```\n\n---\n\n## Покрытие API\n\n| Сервис                       | Методов | Статус            |\n|------------------------------|---------|-------------------|\n| **USDT-M Perpetual Futures** |         |                   |\n| Market Service               | 40      | ✅                 |\n| TWAP Service                 | 7       | ✅                 |\n| Account Service              | 40      | ✅                 |\n| Trade Service                | 54      | ✅                 |\n| Wallet Service               | 6       | ✅                 |\n| Spot Account Service         | 9       | ✅                 |\n| Sub-Account Service          | 20      | ✅                 |\n| Copy Trading Service         | 13      | ✅                 |\n| Contract Service             | 3       | ✅                 |\n| Listen Key Service           | 3       | ✅                 |\n| **Coin-M Perpetual Futures** |         |                   |\n| Coin-M Market Service        | 6       | ✅                 |\n| Coin-M Trade Service         | 17      | ✅                 |\n| Coin-M Listen Key Service    | 3       | ✅                 |\n| **Всего**                    | **220** | **100% покрытие** |\n\n---\n\n## Документация\n\n- **Wiki** — [Документация и руководства](https://github.com/tigusigalpa/bingx-php/wiki)\n- **BingX API** — [https://bingx-api.github.io/docs/](https://bingx-api.github.io/docs/)\n- **GitHub репозиторий** — [https://github.com/tigusigalpa/bingx-php](https://github.com/tigusigalpa/bingx-php)\n- **Проблемы и поддержка** — [GitHub Issues](https://github.com/tigusigalpa/bingx-php/issues)\n\n---\n\n## Версии\n\n- **2.2.0** — Coin-M Perpetual Futures API (23 метода), поддержка контрактов с крипто-маржой\n- **2.1.0** — Quote API, TWAP ордера, расширенные торговые функции, управление позициями (160+ методов)\n- **2.0.0** — Полный рефакторинг: модульная архитектура, обработка ошибок, 100% покрытие API\n- **1.0.0** — Базовая аутентификация и обёртки\n- **0.1.0** — Первый релиз\n\n---\n\n## Автор\n\n- **Igor Sazonov** (`@tigusigalpa`)\n- **Email:** [sovletig@gmail.com](mailto:sovletig@gmail.com)\n- **GitHub:** [github.com/tigusigalpa](https://github.com/tigusigalpa)\n\n---\n\n## Лицензия\n\nMIT License — см. файл [LICENSE](LICENSE) для деталей.\n\n---\n\n## Участие в разработке\n\nPull requests приветствуются! Пожалуйста, убедитесь что:\n\n1. Код следует PSR-12\n2. Добавлены тесты для новой функциональности\n3. Обновлена документация\n\n### Начало разработки\n\n```bash\n# Форкнуть репозиторий\ngit clone https://github.com/your-username/bingx-php.git\ncd bingx-php\n\n# Создать ветку функции\ngit checkout -b feature/YourFeature\n\n# Внести изменения и добавить тесты\n# Запустить тесты\nvendor/bin/phpunit\n\n# Закоммитить и отправить\ngit commit -m \"Add your feature\"\ngit push origin feature/YourFeature\n\n# Открыть Pull Request\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftigusigalpa%2Fbingx-php","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftigusigalpa%2Fbingx-php","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftigusigalpa%2Fbingx-php/lists"}