Демо-режим! Все данные только для просмотра. Изменения не сохраняются.
📈 Настройка курсов обмена
Информация
Slug:
rates-configuration.html
Обновлено:
30.05.2026 15:03
30.05.2026 15:03
Размер:
10.12 KB
10.12 KB
Путь:
/resources/docs/user/rates-configuration.html
Ссылки
Публичная ссылка:
Ссылка в админке:
📈 Настройка курсов обмена
Двухуровневая система курсов
1. Внешние курсы (External Rates)
Источник: Рыночные данные, получаемые автоматически из внешних API.
Содержат: "Сырые" данные с биржи:
- external_rate - среднерыночный курс
- bid_price - цена покупки (зеленый стакан)
- ask_price - цена продажи (красный стакан)
- volume_24h - объем торгов за 24 часа
- change_24h - изменение цены за 24 часа (%)
- spread - разница между ask и bid
Управление: Обновляются автоматически по расписанию (каждый час). Ручное редактирование не предусмотрено.
2. Курсы обмена (Exchange Rates)
Назначение: Конечный курс, который видит клиент на сайте.
Содержат: Настройки для конкретной пары валют:
- Ручной курс - фиксированное значение
- Использовать внешний курс как базу - галочка для применения наценки
- Наценка/скидка % - процент к внешнему курсу
- Мин/макс сумма - лимиты для этой пары
- Приоритет - чем выше число, тем выше приоритет
📝 Примечание: Запись в exchange_rates может ссылаться на запись в external_rates через поле external_rate_id.
Если стоит галочка "Использовать внешний курс", поле "Ручной курс" игнорируется.
Типы курсов обмена
| Тип курса | Как рассчитывается | Когда использовать |
|---|---|---|
| Внешний + наценка | Цена из стакана × (1 + наценка%) | Для автоматического следования рынку со своей наценкой |
| Ручной (фиксированный) | Игнорирует внешние API. Всегда показывает фиксированное значение | Акции, специальные предложения |
| Партнерский внешний | Использует API партнера (если указан) или общий API | Для партнеров с собственным источником курсов |
Создание курса обмена
- Перейдите в раздел Курсы обмена
- Нажмите Добавить курс в правом верхнем углу
- Выберите:
- Партнер (если оставить пустым - курс будет общим)
- Из валюты - что отдает клиент
- В валюту - что получает клиент
- Выберите тип курса:
- Для ручного курса: заполните поле Ручной курс
- Для внешнего курса: поставьте галочку Использовать внешний курс как базу и укажите наценку
- Укажите лимиты (мин/макс сумму)
- Нажмите Сохранить
Массовое редактирование общих курсов
Для удобства администрирования доступно массовое редактирование всех общих курсов в одной таблице:
- Перейдите в раздел Курсы обмена
- Прокрутите вниз до блока "Настройка общих курсов обмена"
- В таблице вы можете:
- Редактировать существующие курсы
- Добавлять новые строки кнопкой "Добавить курс"
- Удалять строки кнопкой
- После внесения изменений нажмите Сохранить все курсы
⚠️ Важно: В режиме массового редактирования все старые общие курсы удаляются и заменяются новыми.
Сохраняйте изменения только после полной настройки всех необходимых пар.
Обновление внешних курсов из API
Внешние курсы обновляются автоматически по расписанию (каждый час). Также можно обновить вручную:
- Перейдите в раздел Курсы обмена
- Нажмите кнопку Обновить курсы в правом верхнем углу
- Выберите API источник из выпадающего списка или используйте "Все активные API"
- Подтвердите обновление
📝 Примечание: При обновлении из API старые внешние курсы не удаляются, а обновляются.
Если API недоступен, старые курсы сохраняются.
Просмотр стакана заявок (Order Book)
Для каждой валютной пары доступен просмотр стакана заявок (bid/ask):
- Перейдите в раздел Курсы обмена → Внешние курсы
- Нажмите кнопку (иконка графика) в строке нужной пары
- В модальном окне отобразится:
- Bid - лучшие цены покупки (зеленый стакан)
- Ask - лучшие цены продажи (красный стакан)
- Spread - разница между ask и bid
- Топ-5 заявок - по 5 лучших цен покупки и продажи
Диагностика проблем с курсами
| Симптом | Решение |
|---|---|
| Курс на сайте "Загружается" или не отображается | 1. Проверить, есть ли активная запись в exchange_rates для нужной пары 2. Проверить, заполнено ли поле rate или настроено use_external_rate |
| Курс не обновляется, хотя стоит автообновление | 1. Проверить, что связанная запись в external_rates существует и не устарела 2. Проверить, работает ли крон команда rates:update-from-apis |
| У партнера свой курс, но применяется глобальный | 1. Проверить, что у партнера есть активный курс с более высоким priority 2. Проверить, что курс партнера активен (is_active = true) |
Последнее обновление: 30.05.2026 в 15:03
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Настройка курсов обмена - DEXA</title>
<style>
body { font-family: Arial, sans-serif; line-height: 1.6; color: #333; max-width: 1200px; margin: 0 auto; padding: 20px; }
h1 { color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; }
h2 { color: #34495e; margin-top: 30px; }
h3 { color: #7f8c8d; margin-top: 20px; }
code { background: #f4f4f4; padding: 2px 6px; border-radius: 4px; }
.note { background: #e3f2fd; border-left: 4px solid #2196f3; padding: 15px; margin: 20px 0; }
.warning { background: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; }
table { width: 100%; border-collapse: collapse; margin: 20px 0; }
th, td { border: 1px solid #ddd; padding: 10px; text-align: left; }
th { background: #f5f5f5; }
</style>
</head>
<body>
<h1>📈 Настройка курсов обмена</h1>
<h2>Двухуровневая система курсов</h2>
<h3>1. Внешние курсы (External Rates)</h3>
<p><strong>Источник:</strong> Рыночные данные, получаемые автоматически из внешних API.</p>
<p><strong>Содержат:</strong> "Сырые" данные с биржи:</p>
<ul>
<li><strong>external_rate</strong> - среднерыночный курс</li>
<li><strong>bid_price</strong> - цена покупки (зеленый стакан)</li>
<li><strong>ask_price</strong> - цена продажи (красный стакан)</li>
<li><strong>volume_24h</strong> - объем торгов за 24 часа</li>
<li><strong>change_24h</strong> - изменение цены за 24 часа (%)</li>
<li><strong>spread</strong> - разница между ask и bid</li>
</ul>
<p><strong>Управление:</strong> Обновляются автоматически по расписанию (каждый час). Ручное редактирование не предусмотрено.</p>
<h3>2. Курсы обмена (Exchange Rates)</h3>
<p><strong>Назначение:</strong> Конечный курс, который видит клиент на сайте.</p>
<p><strong>Содержат:</strong> Настройки для конкретной пары валют:</p>
<ul>
<li><strong>Ручной курс</strong> - фиксированное значение</li>
<li><strong>Использовать внешний курс как базу</strong> - галочка для применения наценки</li>
<li><strong>Наценка/скидка %</strong> - процент к внешнему курсу</li>
<li><strong>Мин/макс сумма</strong> - лимиты для этой пары</li>
<li><strong>Приоритет</strong> - чем выше число, тем выше приоритет</li>
</ul>
<div class="note">
<strong>📝 Примечание:</strong> Запись в exchange_rates может ссылаться на запись в external_rates через поле external_rate_id.
Если стоит галочка "Использовать внешний курс", поле "Ручной курс" игнорируется.
</div>
<h2>Типы курсов обмена</h2>
<table>
<thead>
<tr><th>Тип курса</th><th>Как рассчитывается</th><th>Когда использовать</th></tr>
</thead>
<tbody>
<tr>
<td><strong>Внешний + наценка</strong></td>
<td>Цена из стакана × (1 + наценка%)</td>
<td>Для автоматического следования рынку со своей наценкой</td>
</tr>
<tr>
<td><strong>Ручной (фиксированный)</strong></td>
<td>Игнорирует внешние API. Всегда показывает фиксированное значение</td>
<td>Акции, специальные предложения</td>
</tr>
<tr>
<td><strong>Партнерский внешний</strong></td>
<td>Использует API партнера (если указан) или общий API</td>
<td>Для партнеров с собственным источником курсов</td>
</tr>
</tbody>
</table>
<h2>Создание курса обмена</h2>
<ol>
<li>Перейдите в раздел <strong>Курсы обмена</strong></li>
<li>Нажмите <strong>Добавить курс</strong> в правом верхнем углу</li>
<li>Выберите:
<ul>
<li><strong>Партнер</strong> (если оставить пустым - курс будет общим)</li>
<li><strong>Из валюты</strong> - что отдает клиент</li>
<li><strong>В валюту</strong> - что получает клиент</li>
</ul>
</li>
<li>Выберите тип курса:
<ul>
<li>Для ручного курса: заполните поле <strong>Ручной курс</strong></li>
<li>Для внешнего курса: поставьте галочку <strong>Использовать внешний курс как базу</strong> и укажите наценку</li>
</ul>
</li>
<li>Укажите лимиты (мин/макс сумму)</li>
<li>Нажмите <strong>Сохранить</strong></li>
</ol>
<h2>Массовое редактирование общих курсов</h2>
<p>Для удобства администрирования доступно массовое редактирование всех общих курсов в одной таблице:</p>
<ol>
<li>Перейдите в раздел <strong>Курсы обмена</strong></li>
<li>Прокрутите вниз до блока <strong>"Настройка общих курсов обмена"</strong></li>
<li>В таблице вы можете:
<ul>
<li>Редактировать существующие курсы</li>
<li>Добавлять новые строки кнопкой <strong>"Добавить курс"</strong></li>
<li>Удалять строки кнопкой <strong><i class="fas fa-trash"></i></strong></li>
</ul>
</li>
<li>После внесения изменений нажмите <strong>Сохранить все курсы</strong></li>
</ol>
<div class="warning">
<strong>⚠️ Важно:</strong> В режиме массового редактирования все старые общие курсы удаляются и заменяются новыми.
Сохраняйте изменения только после полной настройки всех необходимых пар.
</div>
<h2>Обновление внешних курсов из API</h2>
<p>Внешние курсы обновляются автоматически по расписанию (каждый час). Также можно обновить вручную:</p>
<ol>
<li>Перейдите в раздел <strong>Курсы обмена</strong></li>
<li>Нажмите кнопку <strong>Обновить курсы</strong> в правом верхнем углу</li>
<li>Выберите API источник из выпадающего списка или используйте "Все активные API"</li>
<li>Подтвердите обновление</li>
</ol>
<div class="note">
<strong>📝 Примечание:</strong> При обновлении из API старые внешние курсы не удаляются, а обновляются.
Если API недоступен, старые курсы сохраняются.
</div>
<h2>Просмотр стакана заявок (Order Book)</h2>
<p>Для каждой валютной пары доступен просмотр стакана заявок (bid/ask):</p>
<ol>
<li>Перейдите в раздел <strong>Курсы обмена → Внешние курсы</strong></li>
<li>Нажмите кнопку <strong><i class="fas fa-chart-bar"></i></strong> (иконка графика) в строке нужной пары</li>
<li>В модальном окне отобразится:
<ul>
<li><strong>Bid</strong> - лучшие цены покупки (зеленый стакан)</li>
<li><strong>Ask</strong> - лучшие цены продажи (красный стакан)</li>
<li><strong>Spread</strong> - разница между ask и bid</li>
<li><strong>Топ-5 заявок</strong> - по 5 лучших цен покупки и продажи</li>
</ul>
</li>
</ol>
<h2>Диагностика проблем с курсами</h2>
<table>
<thead>
<tr><th>Симптом</th><th>Решение</th></tr>
</thead>
<tbody>
<tr>
<td>Курс на сайте "Загружается" или не отображается</td>
<td>1. Проверить, есть ли активная запись в exchange_rates для нужной пары<br>2. Проверить, заполнено ли поле rate или настроено use_external_rate</td>
</tr>
<tr>
<td>Курс не обновляется, хотя стоит автообновление</td>
<td>1. Проверить, что связанная запись в external_rates существует и не устарела<br>2. Проверить, работает ли крон команда <code>rates:update-from-apis</code></td>
</tr>
<tr>
<td>У партнера свой курс, но применяется глобальный</td>
<td>1. Проверить, что у партнера есть активный курс с более высоким priority<br>2. Проверить, что курс партнера активен (is_active = true)</td>
</tr>
</tbody>
</table>
</body>
</html>