iEXRates - курси BestChange під контролем

Система, що тримає курси обмінника поряд із потрібною позицією.

iEXRates збирає пропозиції BestChange, розраховує підсумкові курси за вашими правилами, стежить за конкурентами, публікує TXT-файли та показує оператору, чому курс вийшов саме таким.

Модуль створений для обмінників, яким важливо не просто отримати курс із BestChange, а керувати позицією, маржею, комісіями, містами, винятками, формулами та швидкістю оновлення на великій кількості напрямків.

Вартість
топ-1, топ-2, топ-3 та конкретні конкуренти теги, комісії, кроки, округлення та preview окремий файл під кожен профіль швидке оновлення великих списків
100k+
напрямків можна вести через серверну пагінацію та batch-оновлення
2
BestChange окремо, зовнішні джерела окремо - в одній адмінці
24/7
живий стан оновлень, інциденти, логи та свіжість TXT
Тільки для клієнтів iEXExchanger

Проєкт підключається до чинної ліцензії iEXExchanger та працює як додатковий модуль до основної платформи.

Демо

Перегляньте коротке відео з демонстрацією iEXRates

У відео показана логіка адмінки: профілі, напрямки, формули, контроль позиції, файли TXT, аналітика оновлень і робочі екрани оператора.

Відкрити демо в Telegram
BestChange профіліформули та комісіїстеження за обмінникомTXT-публікація
Головна ідея

Не таблиця курсів, а робочий центр управління ринком BestChange

Адміністратор задає профіль, напрямки та правила. Далі система сама оновлює довідники, перевіряє доступні пари, отримує оффери, застосовує формули, захищає позицію та готує файли видачі для сайту обмінника.

Напрямки та міста

Для готівки місто стає частиною пари і TXT-коду, щоб курс не змішувався з іншими містами.

Фільтри офферів

Можна враховувати резерв, ліміти, мітки обмінників, black list, свій обмінник та нульові значення.

Стеження за обмінником

Система вміє орієнтуватися на конкретного конкурента і автоматично вставати вище чи нижче за нього.

Що входить

Основні можливості iEXRates

01 · Профілі

Профіль BestChange

Єдине налаштування мови, типу курсу, інтервалу, таймууту, позиції за замовчуванням, свого обмінника та публікації TXT.

API URL та дзеркала загальні, з пінгом та пріоритетом
ключі зберігаються в базі та управляються з адмінки
кожен профіль отримує окремий файл TXT-файл
02 · Напрями

Пари та масові правила

Напрямки можна додавати по одному або масово, групувати, фільтрувати, змінювати позиції та кроки відразу за вибраними умовами.

групи напрямків зберігаються у базі
кожна вкладка запитує дані окремо
масові операції працюють за серверним фільтром
03 · Розрахунок

Trace кожного курсу

У деталях видно базовий оффер, позицію, обмінник, формулу, крок, комісію, обмеження та підсумкове значення для видачі.

зрозуміле пояснення “як вийшов курс”
нульові та некоректні оффери виключаються
історія допомагає розбирати спірні зміни
Формули

Формули як окремий продукт усередині системи

Формула показує доступні теги, пояснює кожен крок розрахунку та дозволяє перевірити результат до збереження. Це зручно, коли курс має враховувати не одну позицію, а кілька умов одразу.

Попередній перегляд формули
[pos:3] + step_to_competitor - 0.15%
Позиція
#3
Конкурент
Обмінник
Підсумок
0.06784261

Готові стратегії

Найкращий курс, конкретна позиція, діапазон позицій, середнє по кількох місцях, свій обмінник чи конкурент.

Формула вручну

Теги вставляють із підказок, а preview показує результат до застосування до напрямку.

Обмеження результату

Можна обмежити максимальний стрибок, мінімальний резерв, позицію та поведінку, якщо даних немає.

Комісії та поправки

Підтримуються +1, -1, +1%, -1%, поділ, формульні поправки та окремі правила для зовнішніх джерел.

Стеження та комісії

Курс можна вести за конкретним обмінником, вище за нього чи нижче

Для кожного напряму можна вибрати обмінник-орієнтир, режим "встати вище" або "встати нижче", мінімальний крок, ліміт зміни, комісію та fallback, якщо потрібний конкурент зник з видачі.

приклад правила
ОрієнтирОбмінник · #3
Діястати вище на крок
Комісія-0.15%

Стеження за обраним обмінником

Напрямок може орієнтуватися як на позицію, а й у конкретний обмінник з видачі BestChange.

Встати вище або нижче

Можна налаштувати курс так, щоб він постійно був трохи вищим за обраний конкурент або акуратно нижчий за нього.

Захист від стрибків

Ліміт зміни та антистрибок не дають курсу різко піти через випадковий оффер або тимчасову помилку ринку.

Комісії та поправки

Для курсу можна задати +1, -1, +1%, -1%, /5, /5% або свою формулу, щоб одразу враховувати маржу та витрати.

Фільтри за умовами

Правила можуть враховувати позиції, резерв, ліміти, позначки обмінників, місто та чорні списки.

Зрозумілий розрахунок

Trace показує, який оффер обраний, який крок застосований, де спрацювала комісія і чому результат потрапив до TXT.

Приклад роботи

Як власник налаштовує напрямок

Одного разу задаються правила, далі iEXRates сам отримує ринок, вибирає коректний оффер, застосовує захист та публікує підсумковий курс.

1

Вибирається пара

Наприклад, BTC на готівку RUB, з обов'язковим містом Москва.

2

Задається мета

Позиція #2, бути вищою за обраний обмінник або брати середнє по топ-10.

3

Застосовуються правила

Фільтри, резерв, ліміти, black list, комісія, округлення та захист від різких стрибків.

4

Публікується TXT

Готовий код виду BTC-CASHRUB_MSK потрапляє у файл профілю та доступний сайту.

Швидке ядро

Оновлення збудовано як конвеєр, а не як один важкий запит

Go-ядро поділяє роботу на етапи: довідники, перевірка напрямків, отримання офферів, розрахунок, захист позиції та генерація файлів. Це знижує затримки та дозволяє масштабувати систему на тисячі пар.

dictionary.sync

Довідники

Валюти, міста, обмінники та мітки оновлюються на сервері та використовуються з локального сховища.

presence.scan

Перевірка напрямків

Система може спочатку перевірити, які пари реально існують, щоб не завантажувати зайві курси.

rates.fetch

Отримання офферів

URL/key pool, ліміти, повтори, кеш знімків та fallback допомагають витримувати нестабільність API.

rates.calculate

Розрахунок курсу

Формули, позиції, комісії, кроки та обмеження збираються в один зрозумілий підсумковий курс.

guard.apply

Захист позиції

Перевіряється цільова позиція, конкурент, мінімальний крок та допустима зміна.

txt.generate

Генерація файлів

TXT перезбирається лише за змін, тому публікація залишається швидкою.

Операційний центр

Логи, інциденти та аналітика показують не помилку, а причину

Якщо курс не оновився, оператор бачить, що саме сталося: дзеркало BestChange не відповіло, ключ уперся в ліміт, напрямок застарів, TXT не встиг зібратися або формула дала заборонений результат.

Швидкість поновлення

Показується тривалість оновлення, кількість успішних пар, неоновлені напрямки та швидкість за секунду.

Історія та графіки

Можна дивитися підсумковий курс, raw rate, позицію, spread між місцями та поведінку конкурентів.

Інциденти

Проблема оформляється як зрозуміла картка: де впало, що було з ключем, URL, напрямом та TXT.

Права та доступ

Вхід за ключами, групи прав, користувачі та журнал дій допомагають безпечно працювати команді.

Аналітика

Видно, що оновилося, де затримка та чому курс змінився

Операційний центр показує швидкість оновлення, свіжість TXT, стан черг, помилки API, історію розрахунків та якість кожного напряму.

Оновлено
1166
Швидкість
4 961/с
Успішність
100%
BTC → CASHRUB_MSK
позиція #2 · власний крок · TXT готовий
Live
Підсумковий курс
4 414 387.0458
Орієнтир
Обмінник · #2
Додаткові джерела

BestChange залишається основою, але курси можна розширювати зовнішні джерела

Для Binance, Bybit, WhiteBIT, Heleket, файлових та ручних курсів передбачені окремі профілі, власні коди, комісії, TXT-файли та серверна пагінація.

[binance_usdt-btc]
готовий курс, зворотний 1/курс або власна комісія
можна в TXT
[bybit_usdt-btc]
готовий курс, зворотний 1/курс або власна комісія
можна в TXT
[whitebit_usdt-btc]
готовий курс, зворотний 1/курс або власна комісія
можна в TXT
[heleket_usdt-btc]
готовий курс, зворотний 1/курс або власна комісія
можна в TXT
[manual_usdt-btc]
готовий курс, зворотний 1/курс або власна комісія
можна в TXT
Під капотом

На чому побудовано iEXRates

iEXRates розділений на адмінку, API та окреме Go-ядро. Адмінка не звертається до BestChange безпосередньо: вона працює з готовими даними з PostgreSQL, Redis та журналів, а оновлення курсів виконує серверний конвеєр.

Frontend

Адмінка оператора

React/Vite SPA з i18n, TanStack Query, серверними таблицями, віртуальними списками та живими операційними розділами.

React + TanStack Query
кеш запитів, оновлення без перезавантаження та стабільна робота екранів
TanStack Table + Virtual
пагінація, фільтри та віртуальні списки для тисяч записів
Tailwind CSS + Vite
швидка збірка та адаптивний інтерфейс адмінки
TypeScript strict
строга типізація форм, API-контрактів та стану інтерфейсу
Backend

API, воркери та черги

NestJS 11 об'єднує admin API, public API, налаштування профілів, права доступу, scheduler, черга завдань та події для адмінки.

NestJS 11
єдиний API для профілів, напрямків, логів, доступу та джерел
PostgreSQL + Prisma ORM
основна база, суворі моделі та міграції схеми
Redis
гарячий кеш, live-стан, блокування та швидкі знімки
ClickHouse
швидкі журнали, історія оновлень та аналітика подій
Infra

Self-hosted розгортання

iEXRates розгортається як окремий серверний продукт: Go-ядро, Docker Compose, Nginx, PostgreSQL, Redis, ClickHouse та публічна видача TXT-файлів.

Go
worker pool, batch-оновлення, rate limit та атомарна генерація файлів
Docker Compose
єдиний запуск адмінки, API, engine, PostgreSQL, Redis, ClickHouse та Nginx
Nginx
проксіювання API та публічна видача TXT-файлів
Debian 12 / Ubuntu 22.04
рекомендована база для встановлення на сервер
Готово для обмінника

iEXRates закриває весь ланцюжок: від BestChange до готового курсу на сайті

Підключення налаштовується під ваш обмінник: профілі, API-ключі, дзеркала, напрямки, формули, стратегія позиції, TXT-файли, додаткові джерела та аналітика оновлень.