# Курсы из файла

{% hint style="danger" %}

### Автоматическое обновление курсов через планировщик задач (CRON)

Чтобы курсы валют на вашем обменнике всегда были актуальными и автоматически обновлялись без вашего участия, необходимо настроить автоматическое обновление через специальный планировщик задач (CRON).

**Как настроить автоматическое обновление курсов:**

1. Перейдите по указанной ссылке на страницу **«Планировщик задач (CRON)».**
2. На открывшейся странице подробно описано, как правильно настроить CRON-задание. Чётко следуйте указанным инструкциям — это позволит вам настроить автоматическое обновление без ошибок.
3. После того как вы завершите настройку, курсы валют начнут обновляться автоматически, регулярно и без вашего участия.

**Как проверить работу автоматического обновления:**

Если вы хотите убедиться, что автоматическое обновление работает правильно:

* Перейдите в вашу панель управления и добавьте специальный виджет [«История обновления данных»](https://docs.iexexchanger.com/osnovnye/parser-kursov/opcii/data-poslednego-obnovleniya-kursov) на рабочий стол.
* В этом виджете будет отображаться информация о последних обновлениях курсов валют и времени выполнения задачи.
  {% endhint %}

{% content-ref url="../../nachalo-raboty/nastroiki-servera/planirovshik-zadach-cron" %}
[planirovshik-zadach-cron](https://docs.iexexchanger.com/nachalo-raboty/nastroiki-servera/planirovshik-zadach-cron)
{% endcontent-ref %}

***

Модуль **«Курсы из файла»** — это простой и эффективный способ автоматически загружать и обновлять курсы валют прямо из подготовленного вами файла.

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

Это решение экономит ваше время, снижает вероятность ошибок и делает работу с обменными операциями ещё удобнее.

## Как это работает

{% stepper %}
{% step %}

### Подготовка файла

Вы создаёте текстовый файл и добавляете туда курсы валют в нужном формате.
{% endstep %}

{% step %}

### Загрузка файла

Вы размещаете файл по прямой ссылке в интернете (например, на вашем сервере или облачном хранилище).
{% endstep %}

{% step %}

### Автоматическая обработка

Система самостоятельно скачивает файл, проверяет и обрабатывает данные, выполняет вычисления и обновляет базу данных.
{% endstep %}

{% step %}

### Готово

Курсы валют обновлены и готовы к использованию.
{% endstep %}
{% endstepper %}

***

## Правила подготовки файла

Файл должен иметь одно из расширений: `.txt`, `.csv` или `.json`. Система автоматически определяет тип файла по его расширению:

* **.txt** — самый гибкий и функциональный формат. Поддерживает формулы, проценты, переменные и позволяет указать несколько валютных пар в одной строке. Рекомендуется к использованию.

  Пример содержимого `.txt` файла:
* **csv** — простой формат, в котором валютные пары и их значения разделяются запятыми.
* **.json** — структурированный формат, где курсы представлены парами ключ-значение.

{% tabs %}
{% tab title="TXT" %}

```
USD - RUB : 91.6
BTC - USDT, ETH - USDT : 61500
MAIN = BTC - USDT
ETH - USD : (MAIN) + 10%
USD - RUB : 91.6
BTC - USDT : 61505
RUB - USD : (USD - RUB)
EUR - USD : 1.07 + 0.01
ETH - USDT : (BTC - USDT) + 5%
```

{% endtab %}

{% tab title="CSV" %}

```csv
BTC - USDT, 61500
ETH - USD, (BTC - USDT) - 2000
USD - RUB, 91.6
TRX - USD, (BTC - USDT) * 0.85
```

{% hint style="warning" %}
В CSV каждая строка должна содержать две колонки: валютная пара и значение.
{% endhint %}
{% endtab %}

{% tab title="JSON" %}

```json
{
  "BTC - USDT": 61500,
  "ETH - USD": "(BTC - USDT) - 2000",
  "USD - RUB": 91.6,
  "TRX - USD": "(BTC - USDT) * 0.85 + 1.5%"
}
```

{% endtab %}
{% endtabs %}

Рекомендуется использовать формат `.txt`, так как он предоставляет максимальную гибкость и удобство для работы с более сложными формулами и расчётами.

{% hint style="warning" %}

## Общие рекомендации

* Размер файла не должен превышать 2 МБ
* Кодировка файла — UTF-8
* Формулы могут включать: +, -, \*, /, %, скобки ()
* Можно использовать переменные и несколько пар в одной строке (только в .txt)
* Названия валют (части валютных пар) должны начинаться с латинской буквы и могут содержать буквы (A-Z), цифры (0-9) и подчёркивание (\_). Максимальная длина каждой части валютной пары — 10 символов (первая буква + до 9 дополнительных символов).
  {% endhint %}

***

## Что может быть указано в файле?

В файле можно указывать данные в самых разнообразных форматах: от простых числовых значений до сложных формул и выражений. Поддерживается гибкая математика, возможность применения переменных, расчёт процентов и указание нескольких пар в одной строке. Ниже перечислены примеры и пояснения по использованию каждого варианта. Это позволяет вам настроить курсы максимально точно и удобно, учитывая специфику вашего обменного сервиса.

### <mark style="color:green;">Файл поддерживает</mark>

| Тип данных                       | Пример строки                                   | Как это работает                                                         |
| -------------------------------- | ----------------------------------------------- | ------------------------------------------------------------------------ |
| Простое число                    | USD - RUB : 91.6                                | Просто устанавливает указанный курс                                      |
| Математическое выражение         | BTC - USDT : 61505 + 1 / 2                      | Вычисляется формула, можно использовать +, -, \*, /, скобки              |
| Обратный курс                    | RUB - USD : (USD - RUB)                         | Пересчитывает как 1 / (USD - RUB)                                        |
| Использование процентов          | EUR - USD : (USD - EUR) + 5%                    | Прибавляет 5% к рассчитанному значению (аналогично и - 3%, \* 120%)      |
| Несколько пар в строке           | BTC - USDT, ETH - USDT : 61500                  | Одно и то же значение применяется ко всем указанным парам                |
| Переменные (алиасы)              | MAIN = BTC - USDTETH - USD : (MAIN) + 10        | Сохраняет значение переменной и использует её в дальнейших формулах      |
| Любой порядок строк              | BTC - USD : (BTC - USDT) \* (USDT - USD)        | Поддерживает зависимые вычисления. Очерёдность строк не имеет значения   |
| Автоисправление формата          | <p>btc:usdt : 61000<br>btc -usdt : 61000</p>    | Приводит названия валют в нужный формат: BTC - USDT                      |
| Коды валют с подчёркиванием      | USDT\_TRC20 - BTC : 61000                       | Поддерживает сложные коды, например USDT\_ERC20, USD\_CASH, BTC\_TESTNET |
| Математика с переменными         | <p>VAL = BTC - USD<br>USD - RUB : (VAL) + 2</p> | Можно использовать переменные в любой части выражения                    |
| Объединение выражений            | BTC - USDT : ((BTC - USD) / (USDT - USD)) + 10  | Позволяет строить вложенные вычисления                                   |
| Произвольное количество пробелов | BTC   -   USDT :  61000                         | Система сама нормализует отступы и пробелы                               |
| Поддержка дробных и целых чисел  | USD - RUB : 84, BTC - USD : 0.000024            | Поддерживаются значения с высокой точностью (до 18 знаков)               |

### <mark style="color:red;">Файл не поддерживает</mark>

Эти данные не будут обработаны (система просто их проигнорирует):

| Что делать нельзя             | Пример (неправильно)         | Почему это неправильно                                                                                                                                               |
| ----------------------------- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Неправильный код валюты       | 123BTC - USD : 100           | Код валюты должен начинаться с заглавной латинской буквы и содержать от 3 до 10 символов (A–Z, 0–9, подчёркивание). Код 123BTC — недопустим.                         |
| Пропуск двоеточия :           | USD - RUB 84.1               | После валютной пары обязательно должно быть двоеточие : — иначе строка не распознаётся.                                                                              |
| Не числовое значение          | USD - RUB : семьдесят четыре | Значение курса должно быть числом или корректной формулой. Текст будет проигнорирован.                                                                               |
| Деление на ноль               | USD - BTC : 1 / 0            | Вычисление вызывает ошибку. Результат будет 0, но в лог запишется предупреждение.                                                                                    |
| Ссылка на несуществующую пару | RUB - USDT : (AAA - BBB)     | Если (AAA - BBB) не была определена ранее — строка пропускается.                                                                                                     |
| Пустое значение               | BTC - USDT :                 | Если значение отсутствует — строка игнорируется.                                                                                                                     |
| Слишком длинный код валюты    | LONG\_CURRENCY - USD : 123   | Код валюты должен содержать от 3 до 10 символов (первая буква + до 9 дополнительных символов). Код LONG\_CURRENCY превышает допустимую длину и будет проигнорирован. |

***

## Скорость обработки файла

| Количество строк | Время загрузки (примерное) |
| ---------------- | -------------------------- |
| до 100           | 0.01 секунда               |
| до 500           | 0.05 секунд                |
| до 1000          | 0.1 секунда                |
| до 10 000        | около 0.5 секунд           |

***

## Как начать использовать функцию «Курсы из файла»?

{% stepper %}
{% step %}

### Создайте файл

Создайте простой текстовый файл (например: `kurcy.txt`) и вставьте туда курсы в правильном формате (см. выше).
{% endstep %}

{% step %}

### Загрузите файл

Загрузите этот файл в любое место, где можно получить прямую ссылку (ваш сайт, сервер, облако).

Пример ссылки: `https://вашсайт.com/kurcy.txt`
{% endstep %}

{% step %}

### Добавьте ссылку в систему

Перейдите в административную панель или личный кабинет вашей системы, вставьте ссылку в соответствующее поле для функции **«Курсы из файла».**
{% endstep %}

{% step %}

### Запустите обновление

Система автоматически скачает файл и обработает данные.
{% endstep %}
{% endstepper %}

***

## Какие математические операции можно использовать?

<table><thead><tr><th>Действие</th><th width="61.27734375">Знак</th><th>Пример записи</th><th>Как считается?</th><th>Результат</th></tr></thead><tbody><tr><td>Сложение</td><td>+</td><td>BTC - USD : 25000 + 10</td><td>25000 + 10</td><td>25010</td></tr><tr><td>Вычитание</td><td>-</td><td>EUR - USD : 1.1 - 0.05</td><td>1.1 - 0.05</td><td>1.05</td></tr><tr><td>Умножение</td><td>*</td><td>ETH - USD : 1500 * 2</td><td>1500 × 2</td><td>3000</td></tr><tr><td>Деление</td><td>/</td><td>BTC - EUR : 25000 / 2</td><td>25000 ÷ 2</td><td>12500</td></tr><tr><td>Процент</td><td>%</td><td>USD - EUR : 1 + 5%</td><td>1 + 5% (от 1) → 1 + 0.05</td><td>1.05</td></tr><tr><td>Скобки</td><td>( )</td><td>RUB - USD : (USD - RUB)</td><td>1 ÷ (USD - RUB)</td><td>обратный курс</td></tr></tbody></table>

{% hint style="info" %}

## Использование скобок ( ) для расчётов:

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

**Например:**

* USD - RUB : 74.1
* RUB - USD : (USD - RUB)

В этом случае курс RUB - USD будет автоматически рассчитан как обратное значение курса USD - RUB.
{% endhint %}

<details>

<summary>Что такое «обратный курс»?</summary>

Например, если у вас уже известен курс пары:

* **BTC - USD : 25000**

  Это значит, что 1 биткоин стоит 25000 долларов.

Теперь вам нужен обратный курс, то есть сколько долларов стоит 1 биткоин и наоборот. Чтобы не считать вручную, вы просто указываете обратную пару таким образом:

* **USD - BTC : (BTC - USD)**

Система автоматически понимает это как команду:

«возьми уже существующий курс пары BTC - USD и рассчитай его обратное значение».

Расчёт выглядит так:

```bash
USD - BTC = 1 / (BTC - USD) = 1 / 25000 = 0.00004
```

Таким образом, указывать (BTC - USD) — это удобный и простой способ сообщить системе, что нужно автоматически рассчитать обратный курс на основе уже имеющегося курса валютной пары.

</details>

***

## Настройка в панели управления

В разделе **«Парсер курсов — Курсы из файла»** вы можете настроить автоматическую загрузку курсов валют из заранее подготовленного файла.&#x20;

<figure><img src="https://1156649716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYuqSN6CIJoIeh8EPb0uE%2Fuploads%2Fcn3aEsr3vmSDaaDD83bB%2Fimage.png?alt=media&#x26;token=615046a8-4dde-4929-bda8-b09d99c520b0" alt="" width="298"><figcaption></figcaption></figure>

Это удобное решение позволяет быстро и без ошибок загружать актуальные курсы, избавляя вас от необходимости вручную вводить данные.

Система скачивает указанный вами файл по ссылке, распознаёт его содержимое и автоматически обновляет курсы валютных пар, которые вы добавили в систему. Названия пар в файле и в вашей системе должны полностью совпадать.

В панели управления откройте раздел «Парсер курсов — Курсы из файла». Здесь вы можете добавить валютные пары и указать ссылку на файл с курсами. Названия валютных пар должны полностью совпадать с названиями пар, указанными внутри вашего файла курсов.

Система автоматически загрузит курсы из указанного файла, обработает их и обновит все добавленные вами валютные пары.

<figure><img src="https://content.gitbook.com/content/YuqSN6CIJoIeh8EPb0uE/blobs/fZWIZLydLxYYnhPkPJYQ/2024-11-22_19-55-25.png" alt=""><figcaption></figcaption></figure>

### Добавление новой валютной пары

Чтобы добавить новую валютную пару из файла, нажмите кнопку **«Добавить пару»**, расположенную в правом верхнем углу страницы.

<figure><img src="https://content.gitbook.com/content/YuqSN6CIJoIeh8EPb0uE/blobs/sa6Sg6oIafmYotCLDyi7/2024-11-22_19-56-14.png" alt=""><figcaption></figcaption></figure>

Затем заполните открывшуюся форму:

<figure><img src="https://1156649716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYuqSN6CIJoIeh8EPb0uE%2Fuploads%2F16ekR1mcV8X0jN0knBnx%2Fimage.png?alt=media&#x26;token=8704b7a1-5959-4674-8303-805dfcf07a2f" alt="" width="375"><figcaption></figcaption></figure>

* **Источник —** Выберите ранее добавленный источник файла курсов или создайте новый, указав название и прямую ссылку на ваш файл.
* **Название —** Введите название валютной пары точно так же, как указано в вашем файле, соблюдая все пробелы и символы. *(Например: BTC - USD)*
* **Знаки после запятой —** Укажите количество знаков после запятой для отображения курса. Рекомендуется использовать не менее 8-10 знаков, чтобы обеспечить точность расчётов.
* **Статус —** Установите статус пары. Пары с отключённым статусом не будут автоматически обновляться и использоваться в расчётах.

### Добавление нового источника

<figure><img src="https://1156649716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYuqSN6CIJoIeh8EPb0uE%2Fuploads%2Favpy6XKLX4ZnL2hdvTyN%2Fimage.png?alt=media&#x26;token=afbefb91-26d7-432f-b952-e8a7ad77a336" alt="" width="563"><figcaption></figcaption></figure>

Если у вас ещё нет подходящего источника, создайте его прямо в форме добавления пары:

* В поле **«Название»** укажите удобное для вас название нового источника.
* В поле **«Ссылка»** вставьте прямую ссылку на заранее подготовленный файл с курсами.

После нажатия на кнопку «Добавить источник» новый источник станет доступен для выбора при добавлении следующих пар.

***

## Привязка курса валют из файла к направлению

После загрузки и настройки курсов из файла необходимо привязать их к конкретным направлениям обмена. Это обеспечит автоматическое и регулярное обновление курсов валют при совершении операций обмена на вашем сервисе.

Выполните указанные ниже шаги, чтобы легко и быстро подключить актуальные курсы из файла к нужным направлениям.

{% stepper %}
{% step %}

### Выберите направление обмена

В панели управления перейдите в раздел **«Основное — Направление обмена — Список направлений».**

<figure><img src="https://1156649716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYuqSN6CIJoIeh8EPb0uE%2Fuploads%2Fxm8tP7N6SaZyuvq3GuzY%2Fimage.png?alt=media&#x26;token=60be28a3-99cc-4eb5-acd1-41695132fb29" alt=""><figcaption></figcaption></figure>

Найдите необходимое направление (например, *Сбербанк RUB → Bitcoin BTC*) и нажмите **значок ✏️ (карандаш)** для редактирования.

{% hint style="info" %}
**Совет:** используйте поиск или фильтры по статусам, если не можете найти направление.
{% endhint %}
{% endstep %}

{% step %}

### Переход к настройке курса обмена

В открывшемся меню слева перейдите: **«Обмен — Курс обмена»**

<figure><img src="https://1156649716-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FYuqSN6CIJoIeh8EPb0uE%2Fuploads%2FT8eJ7Cx969DkTht9EoGg%2Fimage.png?alt=media&#x26;token=1a33dbec-547e-4c64-afae-7ec17421011d" alt=""><figcaption></figcaption></figure>

В разделе **«Курс обмена из файла»** откройте выпадающий список и выберите нужный курс валюты из ранее загруженных данных (например, USD - RUB или BTC - USDT).&#x20;

Если список слишком большой, начните вводить название валютной пары, чтобы быстро найти нужный курс.
{% endstep %}

{% step %}

### Сохранение изменений

Убедитесь, что выбранный курс из файла корректно отображается в поле «Курс обмена из файла», затем нажмите кнопку **«Сохранить»**, чтобы применить изменения.
{% endstep %}

{% step %}

### Проверка работы привязанного курса

После сохранения обязательно убедитесь в корректности настройки:

1. Перейдите обратно в общий список направлений обмена.
2. Проверьте, что у выбранного вами направления отображается актуальный курс из файла.
3. Рекомендуется выполнить тестовый обмен, чтобы убедиться в правильности и точности расчётов.
   {% endstep %}
   {% endstepper %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.iexexchanger.com/osnovnye/parser-kursov/kursy-iz-faila.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
