Примеры настройки сложного резерва с использованием формул
Формулы для резерва
С помощью специальных шорткодов есть возможность сделать общий резерв для нескольких валют, конвертировать резерв в другую валюту (например из USD в BTC) и многое другое.
В панели управления сайтом в разделе "Модули" → "Модули" активируйте модуль "Формула для резерва", если он деактивирован.
Список доступных шорткодов
corresXX — сумма корректировок резерва валюты.
excursum_giveXX — сумма резерва заявок по валюте "Отдаю".
excursum_getXX — сумма резерва заявок по валюте "Получаю".
excursum_autoXX — сумма резерва заявок по валюте "Получаю" со статусами заявок из настроек в разделе "Настройки обменника" → "Настройки резерва".
cfilereserve_ZZ — значение резерва валюты для строки ZZ из файла с резервом для парсинга.
dfilereserve_ZZ — значение резерва направления обмена для строки ZZ из файла с резервом для парсинга.
payoutsXX — сумма партнерских выплат по валюте.
[parser_binance_btcusdt] — курс из раздела "Парсеры 2.0" → "Курсы источников". В данном разделе шорткод имеет вид [binance_btcusdt], но при использовании его в формуле для резерва, требует добавить в шорткод приставку parser_, чтобы шорткод имел такой вид [parser_binance_btcusdt]. Аналогичное правило распространяется на шорткоды для пользовательского коэффициента.
XX — это ID валюты, который отображается в панели управления сайтом в разделе "Валюты". Можно указывать несколько ID через запятую.
ZZ — номер строки в файле с резервами для парсинга. Можно указывать несколько ID через запятую.
Пример привязки резерва одной и более валют к другой валюте
Рассмотрим пример, с помощью которого покажем как привязать резерв валюты "Монобанк" к резерву "Приват24".
В панели управления в разделе "Валюты" узнаем ID валют для "Приват24" (ID 5) и "Монобанк" (ID 47):
Перейдем к редактированию валют "Приват24" и "Монобанк". В настройках обеих валют для параметра "Резерв валют" выберем опцию "По формуле".
В появившемся ниже поле "Формула для резерва" укажем следующую формулу в настройках обеих валют:
Усложним рассматриваемый пример: привяжем резерв валют "Монобанк" (ID 47) и "Ощадбанк" (ID 23) к резерву "Приват24" (ID 5). Тогда для всех трех валют нужно добавить задать следующий формулу:
В панели управления сайтом в разделе "Модули" → "Модули" активируйте модуль "Ссылка для обновления резерва валюты (по Cron)", если он был деактивирован. В разделе "Валюты" для валют "Монобанк", "Ощадбанк" и "Приват24" появится кнопка "Ссылка". Для каждой валюты из примера нажмите на данную кнопку и скопируйте адрес открывшейся страницы.
Каждую скопированную ссылку добавьте в планировщик задач (cron) на сервере. Ссылку можно запускать каждую минуту. Пример команды для планировщика задач в Unix-формате для панели управления ISP Manager:
где ХХ — ID валюты.
Для каждого сервера команда из примера может иметь другой вид. Изменения касаются части команды /usr/bin/wget -t 1 -O —
. Правильную команду вы можете уточнить у технической поддержки своего хостинга.
Пример создания одинакового резерва у валют (используем резерв, вычисляемый по заявкам)
К примеру, у нас есть 4 валюты. Их ID равны 5, 42, 47, 61. Наша задача сделать так, чтобы у всех валют резерв стал одинаковый.
Нужно определиться, какая из валют будет основной. В нашем случае, пусть это будет валюта с ID 47.
Формула будет следующая:
[сумма корректировок резервов валют с нашими ID 5,42,47,61] + [сумма «отдаю для резерва» из заявок, где валюта отдаю ID 5,42,47,61] (это то, что наш сайт получил по заявкам) - [сумма «получаю для резерва» из заявок, где валюта получаю ID 5,42,47,61] (это то, что наш сайт отдал по заявкам) - [выплаты партнёрских средств валют с нашими 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, которая обновляет всем полям свое значение резерва.
Пример создания одинакового резерва у валют (используем резерв, получаемый от мерчанта автовыплаты)
К примеру, у нас есть 4 валюты. Их ID равны 5, 42, 47, 61. Наша задача сделать так, чтобы у всех валют резерв стал одинаковый.
Нужно определиться, какая из валют будет основной. В нашем случае, пусть это будет валюта с ID 47.
Формула у нас будет следующая:
[шорткод_автовыплаты] - [сумма «получаю для резерва» из заявок, где валюта получаю ID 5,42,47,61 (это то, что наш сайт отдал по заявкам) - [выплаты партнёрских средств валют с нашими 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])
Разберем формулу: [usdttrc_westwallet] - резерв, получаемый от мерчанта (шорткод в настройках мерчанта)
[excursum_auto368], [excursum_auto348], [excursum_auto362], [excursum_auto355], [excursum_auto404] - шорткод, который суммирует значения "Получаю для резерва" всех обменов, в которых указанные валюты в "Получаю"
[parser_usdtbtc], [parser_usdtdoge], [parser_usdteth], [parser_usdtsol] - шорткоды парсера из раздела "Парсеры 2.0 -> Источники курсов". Для корректного использования шорткода необходимо подставить parser_ к самому шорткоду парсера (parser_ + usdtbtc)
связать с резервом: 348, 362, 355, 404
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
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
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
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
Last updated