Направления и города
Для наличных направлений город становится частью пары и TXT-кода, чтобы курс не смешивался с другими городами.
iEXRates собирает предложения BestChange, рассчитывает итоговые курсы по вашим правилам, следит за конкурентами, публикует TXT-файлы и показывает оператору, почему курс получился именно таким.
Модуль создан для обменников, которым важно не просто получить курс из BestChange, а управлять позицией, маржой, комиссиями, городами, исключениями, формулами и скоростью обновления на большом количестве направлений.
Проект подключается к действующей лицензии iEXExchanger и работает как дополнительный модуль к основной платформе.
В видео показана логика админки: профили, направления, формулы, контроль позиции, TXT-файлы, аналитика обновлений и рабочие экраны оператора.
Администратор задаёт профиль, направления и правила. Дальше система сама обновляет справочники, проверяет доступные пары, получает офферы, применяет формулы, защищает позицию и готовит файлы выдачи для сайта обменника.
Для наличных направлений город становится частью пары и TXT-кода, чтобы курс не смешивался с другими городами.
Можно учитывать резерв, лимиты, метки обменников, black list, свой обменник и нулевые значения.
Система умеет ориентироваться на конкретного конкурента и автоматически вставать выше или ниже него.
Единая настройка языка, типа курса, интервала, таймаута, позиции по умолчанию, своего обменника и TXT-публикации.
Направления можно добавлять по одному или массово, группировать, фильтровать, менять позиции и шаги сразу по выбранным условиям.
В деталях видно базовый оффер, позицию, обменник, формулу, шаг, комиссию, ограничения и итоговое значение для выдачи.
Формула показывает доступные теги, объясняет каждый шаг расчёта и позволяет проверить результат до сохранения. Это удобно, когда курс должен учитывать не одну позицию, а несколько условий сразу.
Лучший курс, конкретная позиция, диапазон позиций, среднее по нескольким местам, свой обменник или конкурент.
Теги вставляются из подсказок, а preview показывает результат до применения к направлению.
Можно ограничить максимальный скачок, минимальный резерв, позицию и поведение, если данных нет.
Поддерживаются +1, -1, +1%, -1%, деление, формульные поправки и отдельные правила для внешних источников.
Для каждого направления можно выбрать обменник-ориентир, режим “встать выше” или “встать ниже”, минимальный шаг, лимит изменения, комиссию и fallback, если нужный конкурент исчез из выдачи.
Направление может ориентироваться не только на позицию, но и на конкретный обменник из выдачи BestChange.
Можно настроить курс так, чтобы он постоянно был чуть выше выбранного конкурента или аккуратно ниже него.
Лимит изменения и антискачок не дают курсу резко уйти из-за случайного оффера или временной ошибки рынка.
Для курса можно задать +1, -1, +1%, -1%, /5, /5% или свою формулу, чтобы сразу учитывать маржу и расходы.
Правила могут учитывать позиции, резерв, лимиты, метки обменников, город и чёрные списки.
Trace показывает, какой оффер выбран, какой шаг применён, где сработала комиссия и почему итог попал в TXT.
Один раз задаются правила, дальше iEXRates сам получает рынок, выбирает корректный оффер, применяет защиту и публикует итоговый курс.
Например, BTC на наличные RUB, с обязательным городом Москва.
Позиция #2, быть выше выбранного обменника или брать среднее по топ-10.
Фильтры, резерв, лимиты, black list, комиссия, округление и защита от резких скачков.
Готовый код вида BTC-CASHRUB_MSK попадает в файл профиля и доступен сайту.
Go-ядро разделяет работу на этапы: справочники, проверка направлений, получение офферов, расчёт, защита позиции и генерация файлов. Это снижает задержки и позволяет масштабировать систему на тысячи пар.
Валюты, города, обменники и метки обновляются на сервере и используются из локального хранилища.
Система может сначала проверить, какие пары реально существуют, чтобы не грузить лишние курсы.
URL/key pool, лимиты, повторы, кеш снимков и fallback помогают выдерживать нестабильность API.
Формулы, позиции, комиссии, шаги и ограничения собираются в один понятный итоговый курс.
Проверяется целевая позиция, конкурент, минимальный шаг и допустимое изменение.
TXT пересобирается только при изменениях, поэтому публикация остаётся быстрой.
Если курс не обновился, оператор видит, что именно произошло: зеркало BestChange не ответило, ключ упёрся в лимит, направление устарело, TXT не успел собраться или формула дала запрещённый результат.
Показывается длительность обновления, количество успешных пар, необновлённые направления и скорость в секунду.
Можно смотреть итоговый курс, raw rate, позицию, spread между местами и поведение конкурентов.
Проблема оформляется как понятная карточка: где упало, что было с ключом, URL, направлением и TXT.
Вход по ключам, группы прав, пользователи и журнал действий помогают безопасно работать команде.
Операционный центр показывает скорость обновления, свежесть TXT, состояние очередей, ошибки API, историю расчётов и качество каждого направления.
Для Binance, Bybit, WhiteBIT, Heleket, файловых и ручных курсов предусмотрены отдельные профили, собственные коды, комиссии, TXT-файлы и серверная пагинация.
iEXRates разделён на админку, API и отдельное Go-ядро. Админка не обращается к BestChange напрямую: она работает с готовыми данными из PostgreSQL, Redis и журналов, а обновление курсов выполняет серверный конвейер.
React/Vite SPA с i18n, TanStack Query, серверными таблицами, виртуальными списками и живыми операционными разделами.
NestJS 11 объединяет admin API, public API, настройки профилей, права доступа, scheduler, очередь задач и события для админки.
iEXRates разворачивается как отдельный серверный продукт: Go-ядро, Docker Compose, Nginx, PostgreSQL, Redis, ClickHouse и публичная выдача TXT-файлов.
Подключение настраивается под ваш обменник: профили, API-ключи, зеркала, направления, формулы, стратегия позиции, TXT-файлы, дополнительные источники и аналитика обновлений.