> For the complete documentation index, see [llms.txt](https://docs.iexexchanger.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.iexexchanger.com/guide/kursy/bestchange/tegi-i-formuly.md).

# Теги и формулы

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

**Используя возможности этих тегов, вы сможете:**

* Автоматически выбирать оптимальный курс из предложенных обменниками на BestChange.
* Настраивать гибкие условия для выбора обменника в зависимости от рейтингов, резервов и доверия.
* Применять коррекции курсов на основе внешних источников (например, Binance и других платформ).
* Использовать условные выражения для изменения курсов в зависимости от времени суток, лимитов, резервов и рыночной ситуации.
* Рассчитывать сложные аналитические показатели: медианный, средневзвешенный курс, спреды и разницу между курсами.

## Список всех доступных тегов:

| Тег                                                   | Описание (что делает тег)                                                                        |
| ----------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| \[pos:N]                                              | Курс указанной позиции из BestChange                                                             |
| \[exchanger:N.field]                                  | Данные обменника по позиции (например, резерв, возраст, отзывы)                                  |
| \[skip\_exchanger:positions\|names]                   | Пропуск обменников по номерам позиций или названиям                                              |
| \[correct:X,Y,Z%]                                     | Ограничение курса X внешним курсом Y плюс указанный процент Z%                                   |
| \[exchanger\_rating:N]                                | Рейтинг обменника на позиции N                                                                   |
| \[min:X,Y]                                            | Минимальный курс из указанных источников                                                         |
| \[max:X,Y]                                            | Максимальный курс из указанных источников                                                        |
| \[cross\_rate:X,Y]                                    | Кросс-курс валют или источников (X/Y)                                                            |
| \[external\_fee:X,Y%]                                 | Внешний курс X минус указанная комиссия Y%                                                       |
| \[exchanger\_trust:N]                                 | Уровень доверия обменника на позиции N                                                           |
| \[liquidity:N]                                        | Показатель ликвидности обменника позиции N                                                       |
| \[time:hour\|minute\|weekday]                         | Получение текущего часа, минуты или дня недели                                                   |
| \[reserve\_filter:positions\|min\_reserve:X]          | Выбор позиций с резервом не меньше X                                                             |
| \[weighted\_avg:positions]                            | Средневзвешенный курс по резервам указанных позиций                                              |
| \[fallback:X,Y]                                       | Запасной курс (Y), если основной (X) недоступен                                                  |
| \[ranked\_rate:positions]                             | Ранжированный курс (с учётом рейтингов) по указанным позициям                                    |
| \[round:X,Y]                                          | Округление числа X до Y знаков после запятой                                                     |
| \[spread\_external:X,Y]                               | Спред между курсом X и внешним курсом Y                                                          |
| \[rate:N]                                             | Основной курс позиции N                                                                          |
| \[rankrate:N]                                         | Ранговый курс позиции N                                                                          |
| \[reserve:N]                                          | Резерв по позиции N                                                                              |
| \[reserve\_min:positions]                             | Минимальный резерв из указанных позиций                                                          |
| \[reserve\_max:positions]                             | Максимальный резерв из указанных позиций                                                         |
| \[avg:positions]                                      | Средний арифметический курс указанных позиций                                                    |
| \[diff:X,Y]                                           | Разница между курсами X и Y                                                                      |
| \[spread:X,Y]                                         | Спред между позициями X и Y                                                                      |
| \[median:positions]                                   | Медианный курс указанных позиций                                                                 |
| \[minrate:positions]                                  | Минимальный курс среди указанных позиций                                                         |
| \[maxrate:positions]                                  | Максимальный курс среди указанных позиций                                                        |
| \[inmin:N]                                            | Минимальный лимит обмена для позиции N                                                           |
| \[inmax:N]                                            | Максимальный лимит обмена для позиции N                                                          |
| \[if] условие значение-да \[else] значение-нет \[/if] | Условное вычисление курса по указанному условию с возможностью использования \[elseif] и \[else] |

## Подробное описание тегов условий и переменных <a href="#podrobnoe-opisanie-tegov-uslovii-i-peremennykh" id="podrobnoe-opisanie-tegov-uslovii-i-peremennykh"></a>

### Тег \[pos:N] — Курс позиции из BestChange

Тег позволяет получить курс конкретной позиции из текущего списка BestChange.

**Синтаксис:**

```
[pos:N]
```

**Простой пример:**

```
[pos:1]
```

*Курс первой позиции BestChange.*

**Расширенный пример:**

```
[pos:2,+1%]
```

*Курс второй позиции, увеличенный на 1%.*

**Сложный пример:**

```
[weighted_avg:[pos:1],[pos:2],[pos:3]]
```

*Средневзвешенный курс первых трёх позиций.*

#### Дополнительные примеры

<details>

<summary>Пример 1: Сравнение разницы между конкурентами (позициями)</summary>

Если разница между курсом позиции №2 и позиции №3 составляет 0,5% или меньше, то используется курс позиции №3, иначе курс позиции №2.

```
[if] ([pos:2]-[pos:3])/[pos:2]<=0.005 [pos:3] [else] [pos:2] [/if]
```

* Берётся курс позиции №2 и сравнивается с курсом позиции №3.
* Если разница между ними ≤ 0,5%, то выбирается позиция №3 (более выгодный курс).
* Если разница больше 0,5%, остаётся позиция №2.

</details>

<details>

<summary>Пример 2: Условный выбор лучшей позиции среди первых трёх</summary>

Используем позицию №1, если она лучше позиции №2 не менее чем на 0,5%. Если нет — проверяем разницу между позицией №2 и №3, и аналогично выбираем.

```
[if] ([pos:1]-[pos:2])/[pos:1]>=0.005 [pos:1] 
[elseif] ([pos:2]-[pos:3])/[pos:2]>=0.005 [pos:2] 
[else] [pos:3] [/if]
```

* Сначала проверяется разница между позициями №1 и №2.
* Если позиция №1 выгоднее позиции №2 более чем на 0,5%, выбираем №1.
* Если разница меньше, проверяем позиции №2 и №3 по аналогии.
* Если обе разницы менее 0,5%, выбирается позиция №3.

</details>

<details>

<summary>Пример 3: Сравнение с внешним источником</summary>

Используем курс позиции №1, если он ниже внешнего источника Binance (с учётом комиссии 0.1%). Если выше, то используем внешний источник.

```
[if] [pos:1]<=[external_fee:[binance-usdt_btc],0.1%] [pos:1] 
[else] [external_fee:[binance-usdt_btc],0.1%] [/if]
```

* Сравниваем курс первой позиции с внешним курсом Binance, за вычетом 0.1% комиссии.
* Используем более выгодный из них.

</details>

Используйте этот тег, чтобы указать конкретную позицию, на основе которой нужно установить курс. Можно использовать проценты и любые дополнительные расчёты.

***

### Тег \[exchanger:N.field] — Данные обменника по позиции

Позволяет получить любые данные обменника (резерв, возраст, отзывы и др.) из позиции N в списке BestChange.

**Синтаксис:**

```
[exchanger:позиция.поле]
```

**Простой пример:**

```
[exchanger:1.reserve]
```

*Резерв обменника первой позиции.*

**Расширенный пример:**

```
[if][exchanger:1.reserve]>10000 [pos:1] [else] [pos:2] [/if]
```

*Если резерв первой позиции больше 10000, используется её курс, иначе второй позиции.*

**Сложный пример:**

```
[set]min_reserve=5000[/set]
[if][exchanger:1.reserve]>[min_reserve] [pos:1] 
[elseif][exchanger:2.reserve]>[min_reserve] [pos:2] 
[else][pos:3][/if]
```

*Последовательная проверка резервов у нескольких обменников.*

Используйте этот тег для фильтрации обменников по любым критериям: резерв, отзывы, возраст и т.д.

### Тег \[skip\_exchanger:positions|names] — Пропуск обменников

Позволяет исключать из расчётов обменники по номеру позиции или названию.

**Синтаксис:**

```
[skip_exchanger:позиции|названия]
```

**Простой пример:**

```
[skip_exchanger:1,2|50Cents]
```

*Исключить обменники на позициях 1,2 и с названием “50Cents”.*

**Расширенный пример:**

```
[skip_exchanger:1,2,3|SuperChange,50Cents,FastChange]
```

*Исключить несколько позиций и обменников сразу.*

**Сложный пример:**

```
[weighted_avg:[skip_exchanger:1,2|SuperChange,50Cents],[pos:3],[pos:4]]
```

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

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

***

### Тег \[correct:X,Y,Z%] — Ограничение курса

Ограничивает курс X курсом внешнего источника Y плюс указанный процент Z%.

**Синтаксис:**

```
[correct:курс,внешний_источник,процент]
```

**Простой пример:**

```
[correct:[pos:1],[binance-usdt_btc],0.5%]
```

*Курс позиции 1 ограничен курсом Binance плюс 0.5%.*

**Расширенный пример:**

```
[correct:[weighted_avg:1,2,3],[rapira_btc-usdt_ask],0.1%]
```

*Средневзвешенный курс ограничен курсом внешнего источника Rapira.*

**Сложный пример:**

```
[set]max_limit=[correct:[pos:1],[binance-usdt_btc],0.5%][/set]
[if][pos:2]<[max_limit] [pos:2] [else] [max_limit] [/if]
```

*Максимальный предел курса на основе внешнего источника.*

***

### Тег \[exchanger\_rating:N] — Рейтинг обменника на позиции

Получение рейтинга обменника на конкретной позиции.

**Синтаксис:**

```
[exchanger_rating:N]
```

**Простой пример:**

```
[exchanger_rating:1]
```

*Рейтинг обменника первой позиции.*

**Расширенный пример:**

```
[if][exchanger_rating:1]>90 [pos:1] [else] [pos:2] [/if]
```

*Если рейтинг обменника выше 90, берем его курс.*

**Сложный пример:**

```
[set]min_rating=80[/set]
[if][exchanger_rating:1]>[min_rating] [pos:1] 
[elseif][exchanger_rating:2]>[min_rating] [pos:2] 
[else][pos:3][/if]
```

*Последовательная проверка рейтингов обменников.*

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

***

### Теги \[min:X,Y] и \[max:X,Y] — Минимальный или максимальный курс

Выбор минимального или максимального значения курса из указанных источников.

**Синтаксис:**

```
[min:курс1,курс2]
[max:курс1,курс2]
```

**Простой пример:**

```
[min:[pos:1],[pos:2]]
```

*Минимальный курс из двух позиций.*

```
[max:[pos:1],[binance-usdt_btc]]
```

*Максимальный курс между позицией и Binance.*

**Расширенный пример:**

```
[min:[weighted_avg:1,2],[external_fee:[binance-usdt_btc],0.1%]]
```

*Минимальный средневзвешенный курс позиций и внешнего источника с комиссией.*

**Сложный пример:**

```
[set]best_rate=[max:[pos:1],[pos:2],[pos:3]][/set]
[correct:[best_rate],[binance-usdt_btc],0.5%]
```

*Максимальный курс из нескольких позиций с последующей коррекцией.*

Используйте эти теги для автоматического определения оптимального курса обмена.

***

### Тег \[cross\_rate:X,Y] — Кросс-курс валют или источников

Вычисляет кросс-курс между двумя указанными валютами или источниками (отношение X к Y).

#### Синтаксис:

```
[cross_rate:валюта_X,валюта_Y]
```

#### Простой пример:

```
[cross_rate:[pos:1],[pos:2]]
```

*Отношение курса позиции 1 к позиции 2.*

#### Расширенный пример:

```
[cross_rate:[weighted_avg:1,2,3],[binance-usdt_btc]]
```

*Отношение средневзвешенного курса BestChange к внешнему курсу Binance.*

***

### Тег \[external\_fee:X,Y%] — Внешний курс с комиссией

Получает внешний курс с вычетом указанной комиссии.

#### Синтаксис:

```
[external_fee:источник,комиссия%]
```

#### Простой пример:

```
[external_fee:[binance-usdt_btc],0.1%]
```

*Курс Binance с вычетом 0.1% комиссии.*

#### Расширенный пример:

```
[external_fee:[pos:1],0.5%]
```

*Курс первой позиции с вычетом 0.5% комиссии.*

Используйте, чтобы автоматически вычитать комиссию из внешних источников или собственных курсов.

***

### Тег \[exchanger\_trust:N] — Уровень доверия обменника

Получает уровень доверия обменника на указанной позиции.

#### Синтаксис:

```
[exchanger_trust:N]
```

#### Простой пример:

```
[exchanger_trust:1]
```

*Уровень доверия обменника на позиции 1.*

#### Расширенный пример:

```
[if][exchanger_trust:1]>90 [pos:1] [else] [pos:2][/if]
```

*Использовать курс позиции 1, если её доверие выше 90.*

***

### Тег \[reserve\_filter:positions|min\_reserve:X] — Фильтрация по резервам

Позволяет выбрать позиции с резервом не менее указанного значения.

#### Синтаксис:

```
[reserve_filter:позиции|min_reserve:X]
```

#### Простой пример:

```
[reserve_filter:1,2,3|min_reserve:10000]
```

*Первая позиция с резервом от 10000 и выше.*

#### Расширенный пример:

```
[reserve_filter:1,2,3,4|min_reserve:5000]
```

*Выбор позиций с достаточным резервом из нескольких вариантов.*

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

***

### Тег \[weighted\_avg:positions] — Средневзвешенный курс

Расчёт средневзвешенного курса позиций с учётом их резервов.

#### Синтаксис:

```
[weighted_avg:позиции]
```

#### Простой пример:

```
[weighted_avg:1,2,3]
```

*Средневзвешенный курс первых трёх позиций.*

#### Расширенный пример:

```
[weighted_avg:[skip_exchanger:1,2|50Cents],3,4]
```

*Средневзвешенный курс после исключения обменников.*

#### Сложный пример:

```
[correct:[weighted_avg:1,2,3],[binance-usdt_btc],0.5%]
```

*Средневзвешенный курс с ограничением внешним курсом.*

Используйте для наиболее точного определения курса с учётом резервов обменников.

***

### Тег \[fallback:X,Y] — Запасной курс

Использует запасной курс (Y), если основной курс (X) недоступен.

#### Синтаксис:

```
[fallback:основной_курс,запасной_курс]
```

#### Простой пример:

```
[fallback:[pos:1],[binance-usdt_btc]]
```

*Использовать Binance, если позиция 1 недоступна.*

#### Расширенный пример:

```
[fallback:[weighted_avg:1,2],[external_fee:[binance-usdt_btc],0.1%]]
```

*Запасной курс с комиссией.*

Используйте этот тег для обеспечения непрерывности работы расчёта курсов при недоступности основного источника.

***

### Тег \[ranked\_rate:positions] — Ранжированный курс позиций

Получает курс лучшей позиции из указанных, с учетом их рейтинга и надежности.

#### Синтаксис:

```
[ranked_rate:позиции]
```

#### Простой пример:

```
[ranked_rate:1,2,3]
```

*Лучший курс из первых трёх позиций.*

#### Расширенный пример:

```
[ranked_rate:[skip_exchanger:1|SuperChange],2,3]
```

*Лучший курс из указанных позиций после исключения обменника.*

***

### Тег \[round:X,Y] — Округление чисел

Округляет число до указанного количества знаков после запятой.

#### Синтаксис:

```
[round:число,знаков]
```

#### Простой пример:

```
[round:[pos:1],2]
```

*Курс позиции 1, округлённый до 2 знаков.*

#### Расширенный пример:

```
[round:[weighted_avg:1,2,3],4]
```

*Средневзвешенный курс, округлённый до 4 знаков.*

***

### Тег \[spread\_external:X,Y] — Спред с внешним источником

Получает спред (разницу) между указанным курсом и внешним источником.

#### Синтаксис:

```
[spread_external:курс,внешний_курс]
```

#### Простой пример:

```
[spread_external:[pos:1],[binance-usdt_btc]]
```

*Спред между позицией 1 и Binance.*

#### Расширенный пример:

```
[spread_external:[weighted_avg:1,2,3],[external_fee:[binance-usdt_btc],0.1%]]
```

*Спред между средневзвешенным курсом и внешним курсом Binance с комиссией.*

***

### Теги \[rate:N] и \[rankrate:N] — Основной и ранговый курс позиции

Позволяют получить курс позиции (обычный или ранговый) из BestChange.

#### Синтаксис:

```
[rate:N]
[rankrate:N]
```

#### Простой пример:

```
[rate:1]
[rankrate:1]
```

*Обычный и ранговый курс первой позиции.*

#### Расширенный пример:

```
[if][rankrate:1]>[rate:1] [rankrate:1] [else] [rate:1][/if]
```

*Использовать лучший курс из двух.*

#### Сложный пример:

```
[weighted_avg:[rate:1],[rankrate:2],[rate:3]]
```

*Средневзвешенный курс разных типов.*

***

### Тег \[reserve:N] — Резерв позиции

Получает текущий резерв валюты обменника по указанной позиции.

#### Синтаксис:

```
[reserve:N]
```

#### Простой пример:

```
[reserve:1]
```

*Резерв первой позиции.*

#### Расширенный пример:

```
[if][reserve:1]>50000 [pos:1] [else] [pos:2][/if]
```

*Выбор позиции с резервом больше 50000.*

***

### Теги \[reserve\_min:positions] и \[reserve\_max:positions] — Мин./макс. резерв позиций

Позволяют определить минимальный или максимальный резерв среди нескольких позиций.

#### Синтаксис:

```
[reserve_min:позиции]
[reserve_max:позиции]
```

#### Простой пример:

```
[reserve_min:1,2,3]
[reserve_max:1,2,3]
```

*Мин. и макс. резервы первых трёх позиций.*

#### Расширенный пример:

```
[if][reserve_max:1,2,3]>100000 [weighted_avg:1,2,3] [else] [pos:4][/if]
```

*Средневзвешенный курс, если максимальный резерв достаточен.*

***

### Теги \[diff:X,Y] и \[spread:X,Y] — Разница и спред между курсами

Получают разницу (X–Y) и спред (абсолютная разница) между курсами.

#### Синтаксис:

```
[diff:курс1,курс2]
[spread:курс1,курс2]
```

#### Простой пример:

```
[diff:[pos:1],[pos:2]]
[spread:[pos:1],[pos:2]]
```

*Разница и спред между первой и второй позицией.*

#### Расширенный пример:

```
[spread:[weighted_avg:1,2],[binance-usdt_btc]]
```

*Спред между средневзвешенным и внешним курсом.*

***

### Тег \[median:positions] — Медианный курс позиций

Определяет медианный (срединный) курс среди указанных позиций.

#### Синтаксис:

```
[median:позиции]
```

#### Простой пример:

```
[median:1,2,3]
```

*Средний курс из трёх указанных позиций.*

#### Расширенный пример:

```
[median:[pos:1,+0.5%],[pos:2],[pos:3,-0.3%]]
```

*Медианный курс с индивидуальными корректировками курсов.*

#### Сложный пример:

```
[correct:[median:1,2,3],[binance-usdt_btc],0.3%]
```

*Медианный курс позиций с ограничением относительно внешнего источника.*

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

***

### Тег \[minrate:positions] — Минимальный курс из указанных позиций

Получает минимальный курс среди перечисленных позиций.

#### Синтаксис:

```
[minrate:позиции]
```

#### Простой пример:

```
[minrate:1,2,3]
```

*Минимальный курс среди первых трёх позиций.*

#### Расширенный пример:

```
[minrate:[pos:1,+1%],[pos:2,-0.5%],[pos:3]]
```

*Минимальный курс после корректировки каждой позиции.*

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

***

### Тег \[maxrate:positions] — Максимальный курс из указанных позиций

Определяет максимальный курс из перечисленных позиций.

#### Синтаксис:

```
[maxrate:позиции]
```

#### Простой пример:

```
[maxrate:1,2,3]
```

*Максимальный курс среди первых трёх позиций.*

#### Расширенный пример:

```
[maxrate:[pos:1,-1%],[pos:2,+0.5%],[pos:3]]
```

*Максимальный курс после модификации.*

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

***

### Тег \[inmin:N] — Минимальный лимит обмена позиции

Показывает минимальную сумму обмена для позиции N.

#### Синтаксис:

```
[inmin:N]
```

#### Простой пример:

```
[inmin:1]
```

*Минимальный лимит позиции 1.*

#### Расширенный пример:

```
[if][inmin:1]<=1000 [pos:1] [else] [pos:2][/if]
```

*Выбор позиции, исходя из лимита обмена.*

***

### Тег \[inmax:N] — Максимальный лимит обмена позиции

Показывает максимальную сумму обмена для позиции N.

#### Синтаксис:

```
[inmax:N]
```

#### Простой пример:

```
[inmax:1]
```

*Максимальный лимит позиции 1.*

#### Расширенный пример:

```
[if][inmax:1]>=5000 [pos:1] [else] [pos:2][/if]
```

*Использовать позицию с достаточным максимальным лимитом.*

Используйте этот тег для выбора обменников, способных удовлетворить крупные обменные операции.

***

### Тег \[if] — Условные вычисления

Выполняет расчёт в зависимости от условий. Поддерживает \[else] и \[elseif].

**Синтаксис:**

```
[if] условие значение-да [else] значение-нет [/if]

[if] условие1 значение-да1 [elseif] условие2 значение-да2 [else] значение-нет [/if]
```

**Простой пример:**

```
[if] [pos:1]>[pos:2] [pos:1] [else] [pos:2] [/if]
```

*Выбирает лучший курс из двух позиций.*

**Расширенный пример:**

```
[if][time:hour]>=22 [pos:1,+0.5%] [else] [pos:1][/if]
```

Используйте тег \[if] для создания динамичных формул, которые будут изменять курс на основе текущих рыночных условий или внутренних требований вашей платформы.
