> For the complete documentation index, see [llms.txt](https://premium.gitbook.io/main/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://premium.gitbook.io/main/osnovnye-nastroiki/valyuty-i-napravleniya-obmena/rezervy-valyut/rezerv-ot-drugoi-valyuty/primery-nastroiki-slozhnogo-rezerva-s-ispolzovaniem-formul.md).

# Примеры настройки сложного резерва с использованием формул

## Формулы для резерва <a href="#delaem_y_valyut_odinakovii_rezerv_rezerv" id="delaem_y_valyut_odinakovii_rezerv_rezerv"></a>

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

Перейдите в **"Модули" → "Модули"** и включите модуль **"Формула для резерва"**, если он выключен.

### Список доступных шорткодов <a href="#spisok-dostupnykh-shortkodov" id="spisok-dostupnykh-shortkodov"></a>

* **corresXX** — сумма корректировок резерва валюты.
* **excursum\_giveXX** — сумма резерва заявок по валюте "**Отдаю"**.
* **excursum\_getXX** — сумма резерва заявок по валюте "**Получаю"**.
* **excursum\_autoXX** — сумма резерва заявок по валюте "**Получаю**" со статусами заявок из настроек в разделе "**Настройки обменника"&#x20;*****→*****&#x20;"Настройки резерва"**.
* **cfilereserve\_ZZ** — значение резерва валюты для строки ZZ из файла с резервом для парсинга.
* **dfilereserve\_ZZ** — значение резерва направления обмена для строки ZZ из файла с резервом для парсинга.
* **payoutsXX** — сумма партнерских выплат по валюте.

{% hint style="warning" %}
Если партнёрская программа для направления обмена была выключена, то для параметра **payoutsXX** будут нулевые значения
{% endhint %}

* **\[parser\_binance\_btcusdt]** — курс из раздела "**Парсеры 2.0"&#x20;*****→*****&#x20;"Курсы источников"**.\
  В данном разделе шорткод имеет вид **\[binance\_btcusdt]**, но при использовании его в формуле для резерва, требует добавить в шорткод приставку **parser\_**, чтобы шорткод имел такой вид **\[*****parser\_*****binance\_btcusdt]**.\
  Аналогичное правило распространяется на шорткоды для пользовательского коэффициента.

**XX** — ID валюты, который отображается в панели управления сайтом в разделе "**Валюты**". Можно указывать несколько ID через запятую.

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

<figure><img src="https://2722984412-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fm9kqZXsNykrN6VyxxXBO%2Fuploads%2FLcRDZqj1mr6KF7T7g2M1%2FScreenshot_27.png?alt=media&#x26;token=840d5521-2a75-4cc0-b5d3-2d9fc7809ef7" alt="" width="375"><figcaption></figcaption></figure>

## Пример: привязка резерва одной валюты к другой

Рассмотрим пример, с помощью которого покажем как привязать резерв валюты "Монобанк" к резерву "Приват24".

1. В панели управления в разделе "**Валюты**" узнаем ID валют для "Приват24" (ID 5) и "Монобанк" (ID 47):

<figure><img src="https://2722984412-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fm9kqZXsNykrN6VyxxXBO%2Fuploads%2F2vxayvvjfY0XlJIFOwB3%2FScreenshot_28.png?alt=media&#x26;token=69d1cfad-a304-4349-acfa-93a4c0b39d73" alt="" width="563"><figcaption></figcaption></figure>

2. Перейдем к редактированию валют "Приват24" и "Монобанк". В настройках обеих валют для параметра "**Резерв валют**" выберем опцию "**По формуле**".
3. В появившемся ниже поле "**Формула для резерва**" укажем следующую формулу в настройках обеих валют:

<figure><img src="https://2722984412-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fm9kqZXsNykrN6VyxxXBO%2Fuploads%2FEKbpy716s588HTtlzvOk%2FScreenshot_29.png?alt=media&#x26;token=bbe3df74-35bc-4820-8b1a-3a7c49d7c385" alt="" width="563"><figcaption></figcaption></figure>

Усложним рассматриваемый пример: привяжем резерв валют "Монобанк" (ID 47) и "Ощадбанк" (ID 23) к резерву "Приват24" (ID 5). Тогда для всех трех валют нужно добавить задать следующий формулу:

<figure><img src="https://2722984412-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fm9kqZXsNykrN6VyxxXBO%2Fuploads%2FtfZYh5QcT3fhuHOTJnrF%2FScreenshot_30.png?alt=media&#x26;token=e4febef0-7543-44b0-aa1d-bdc582cc58e7" alt=""><figcaption></figcaption></figure>

4. В панели управления сайтом в разделе "**Модули"&#x20;*****→*****&#x20;"Модули"** активируйте модуль "**Ссылка для обновления резерва валюты (по Cron)**", если он был деактивирован. В разделе "**Валюты**" для валют "Монобанк", "Ощадбанк" и "Приват24" появится кнопка "**Ссылка**". Для каждой валюты из примера нажмите на данную кнопку и скопируйте адрес открывшейся страницы.

<figure><img src="https://2722984412-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fm9kqZXsNykrN6VyxxXBO%2Fuploads%2FerCRVhx6m7YcC6jSdX7K%2FScreenshot_31.png?alt=media&#x26;token=779f67ee-d4b4-477d-bc7a-bd0a82f80793" alt=""><figcaption></figcaption></figure>

5. Каждую скопированную ссылку добавьте в планировщик задач (cron) на сервере. Ссылку можно запускать каждую минуту. Пример команды для планировщика задач в Unix-формате для панели управления ISP Manager:

<figure><img src="https://2722984412-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fm9kqZXsNykrN6VyxxXBO%2Fuploads%2FhAiLwEeIOhzl291Y42mm%2FScreenshot_32.png?alt=media&#x26;token=8b91ff1d-777e-4d4d-ac8d-8a6d5fa3829c" alt=""><figcaption></figcaption></figure>

где **ХХ** — ID валюты.

{% hint style="info" %}
Для каждого сервера команда из примера может иметь другой вид. Изменения касаются части команды `/usr/bin/wget -t 1 -O —`. Правильную команду вы можете уточнить у технической поддержки своего хостинга.
{% endhint %}

<figure><img src="/files/gYN0LrBE9EF8dzsaWyF1" alt="" width="375"><figcaption></figcaption></figure>

## Пример: единый резерв для нескольких валют (используем резерв, вычисляемый по заявкам)

К примеру, у нас есть 4 валюты. Их ID равны **5, 42, 47, 61**. Наша задача сделать так, чтобы у всех валют стал одинаковый резерв.

Нужно определиться, какая из валют будет основной. В нашем случае, пусть это будет валюта с **ID 47.**

Формула будет следующая:

**\[сумма корректировок резервов валют с нашими ID 5,42,47,61]** + **\[сумма «отдаю для резерва» из заявок, где валюта отдаю ID 5,42,47,61] (**&#x44D;то то, что наш сайт получил по заявкам) - **\[сумма «получаю для резерва» из заявок, где валюта получаю ID 5,42,47,61] (**&#x44D;то то, что наш сайт отдал по заявкам) - **\[выплаты партнёрских средств валют с нашими ID 5,42,47,61]**

Таким образом, для основной валюты (**ID 47**), мы создаем формулу:

**\[corres5,42,47,61] + \[excursum\_give5,42,47,61] – \[excursum\_get5,42,47,61] – \[payouts5,42,47,61]**

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

Чтобы при обновлении резерва основной валюты (ID 47), такое же значение становилось и у других валют, нам нужно в поле "**Связать резерв с резервом валюты ID**" указать значение:

**5,42,61**

Теперь, когда будут происходить действия с валютой **ID 47,** будет происходить следующее:

* просчитается резерв по формуле
* значение формулы будет записано в связанные валюты

Это почти то, что нам нужно. Но что делать, когда происходят действия с другими валютами? Как нам обновить резерв основной валюты **ID 47**?

Для этого в настройках каждой валюты мы выберем следующее:

"**Резерв валют**" брать из "**поля для резерва**". Чтобы экономить ресурсы нашего сервера и не высчитывать значение. Оно всё равно будет затерто.

В поле "**Связать резерв с резервом валюты ID**" указываем значение:

**rc47**

Таким образом, при действиях с нашими валютами будет происходить следующее:

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

## Пример: создание одинакового резерва у валют (используем резерв, получаемый от автовыплаты) <a href="#delaem_y_valyut_odinakovii_rezerv_rezerv" id="delaem_y_valyut_odinakovii_rezerv_rezerv"></a>

К примеру, у нас есть 4 валюты. Их ID равны **5, 42, 47, 61**. Наша задача сделать так, чтобы у всех валют стал одинаковый резерв.

Нужно определиться, какая из валют будет основной. В нашем случае, пусть это будет валюта с **ID 47**.

Формула у нас будет следующая:

**\[шорткод\_автовыплаты]** - **\[сумма "получаю для резерва" из заявок, где валюта получаю ID 5,42,47,61 (**&#x44D;то то, что наш сайт отдал по заявкам) - **\[выплаты партнёрских средств валют с нашими ID 5,42,47,61]**

Таким образом, для основной валюты с **ID 47**, мы создаем формулу:

**\[шорткод\_автовыплаты] – \[excursum\_auto5,42,47,61] – \[payouts5,42,47,61]**

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

Чтобы при обновлении резерва основной валюты, такое же значение становилось и у других валют, нам нужно в поле "**Связать резерв с резервом валюты ID**" указать значение:

**5,42,61**

Теперь, когда будут происходить действия с валютой с **ID 47**, будет происходить следующее:

* просчитается резерв по формуле
* значение формулы будет записано в связанные валюты

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

Для этого в настройках каждой валюты мы выберем следующее:

"**Резерв валют**" брать из "**поля для резерва**". Чтобы экономить ресурсы нашего сервера и не высчитывать значение (оно всё равно будет затерто).

В поле "**Связать резерв с резервом валюты ID**" указываем значение:

**rc47**

Таким образом, при действиях с нашими валютами будет происходить следующее:

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

## Пример: создание одинакового резерва у валют (используем резерв, получаемый от автовыплаты) с конвертацией в другие валюты

В этом примере мы используем USDT как основную валюту, значение резерва для неё получаем от мерчанта, для остальных валют используем конвертацию резерва из USDT

Основная валюта:\
**USDT TRC (368)**\
Валюты для приема значения резерва основной валюты:\
**BTC (348),**\
**DOGE (362),**\
**ETH (355),**\
**SOL (404)**\
\
Настройка резервов:\
**USDT TRC (368)**\
**резерв**: по формуле\
**формула резерва**: \[usdttrc\_westwallet] - \[excursum\_auto368] - (\[excursum\_auto348] \* \[parser\_usdtbtc]) - (\[excursum\_auto362] \* \[parser\_usdtdoge]) - (\[excursum\_auto355] \* \[parser\_usdteth]) - (\[excursum\_auto404] \* \[parser\_usdtsol])

{% hint style="info" %}
Разберем формулу:\
\&#xNAN;**\[usdttrc\_westwallet]** - резерв, получаемый от мерчанта (шорткод в настройках мерчанта)

<img src="/files/pED0RIy4hHg2aWTfAdcS" alt="" data-size="original">

**\[excursum\_auto368], \[excursum\_auto348], \[excursum\_auto362], \[excursum\_auto355], \[excursum\_auto404] -** шорткоды, которые суммируют значения "Получаю для резерва" всех обменов, в которых указанные валюты в "Получаю"

**\[parser\_usdtbtc], \[parser\_usdtdoge], \[parser\_usdteth], \[parser\_usdtsol] -** шорткоды парсера из раздела "**Парсеры 2.0"** ➔ "**Источники курсов**". Для корректного использования шорткода необходимо подставить **parser\_** к самому шорткоду парсера (**parser\_usdtbtc).**
{% endhint %}

**связать с резервом**: 348, 362, 355, 404

<figure><img src="/files/Uq3jl7KzqPm5XraHffir" alt=""><figcaption></figcaption></figure>

BTC (348)\
**резерв**: по формуле\
**формула резерва**: (\[usdttrc\_westwallet] - \[excursum\_auto368] - (\[excursum\_auto348] \* \[parser\_usdtbtc]) - (\[excursum\_auto362] \* \[parser\_usdtdoge]) - (\[excursum\_auto355] \* \[parser\_usdteth]) - (\[excursum\_auto404] \* \[parser\_usdtsol])) / \[parser\_usdtbtc]\
**связать с резервом**: rc368

<figure><img src="/files/irWFGonnZuWfBQmT9ThE" alt=""><figcaption></figcaption></figure>

DOGE (362)\
**резерв**: по формуле\
**формула резерва**: (\[usdttrc\_westwallet] - \[excursum\_auto368] - (\[excursum\_auto348] \* \[parser\_usdtbtc]) - (\[excursum\_auto362] \* \[parser\_usdtdoge]) - (\[excursum\_auto355] \* \[parser\_usdteth]) - (\[excursum\_auto404] \* \[parser\_usdtsol])) / \[parser\_usdtdoge]\
**связать с резервом**: rc368

<figure><img src="/files/giPUkyi5VaTnuRleGThg" alt=""><figcaption></figcaption></figure>

ETH (355)\
**резерв**: по формуле\
**формула резерва**: (\[usdttrc\_westwallet] - \[excursum\_auto368] - (\[excursum\_auto348] \* \[parser\_usdtbtc]) - (\[excursum\_auto362] \* \[parser\_usdtdoge]) - (\[excursum\_auto355] \* \[parser\_usdteth]) - (\[excursum\_auto404] \* \[parser\_usdtsol])) / \[parser\_usdteth]\
**связать с резервом**: rc368

<figure><img src="/files/oM0MQKwvHjd8IYDuehsR" alt=""><figcaption></figcaption></figure>

SOL (404)\
**резерв**: по формуле\
**формула резерва**: (\[usdttrc\_westwallet] - \[excursum\_auto368] - (\[excursum\_auto348] \* \[parser\_usdtbtc]) - (\[excursum\_auto362] \* \[parser\_usdtdoge]) - (\[excursum\_auto355] \* \[parser\_usdteth]) - (\[excursum\_auto404] \* \[parser\_usdtsol])) / \[parser\_usdtsol]\
**связать с резервом**: rc368

<figure><img src="/files/dMuLP1nS5Tf61ZH25Hwz" alt=""><figcaption></figcaption></figure>
