# Теги и формулы для расчёта курсов BestChange

Эта инструкция поможет вам легко и быстро настроить максимально точные и конкурентоспособные курсы обмена валют и криптовалют на вашей платформе, используя простые и гибкие теги для парсинга данных с 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] для создания динамичных формул, которые будут изменять курс на основе текущих рыночных условий или внутренних требований вашей платформы.


---

# 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/bestchange-api-parser/tegi-i-formuly-dlya-raschyota-kursov-bestchange.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.
