> For the complete documentation index, see [llms.txt](https://tools.oxygen.wiki/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tools.oxygen.wiki/docs/soft/perpland.md).

# PerpLand

{% hint style="success" %}
Совместимость: Windows, MacOS, Linux
{% endhint %}

## 📚 Описание проекта

**Perp DEX** - новый тренд в крипте с фармом поинтов на большом количестве разных площадок со фьючерсами. Наш софт помогает открывать зеркальные позиции, накручивать объемы и экономить огромное количество сил и времени при отработке.

Затраты:

* **Backpack 1 acc:** 400-500$ acc
* **Paradex 1 acc:** 400-500$ acc
* **Hyperliquid 1 acc:** 200$-300$ acc&#x20;
* **Lighter 1 acc:** 40$ acc
* **Aster 1 acc:** any size&#x20;
* **Edgex 1 acc**: any size
* **Extended 1 acc**: any size
* **Ethereal 1 acc**: any size
* **Nado 1 acc**: any size&#x20;

Ожидаемый профит:

* **Paradex:** x3-4 к затратам
* **Hyperliquid:** x3-4 к затратам
* **Pacifica:** x3-4 к затратам
* **Backpack:** x2 к затратам
* **Edgex**: x3 к затратам
* **Extended**: x5 к затратам
* **Ethereal**: x8 к затратам
* **Nado:** x3-4 к затратам

Завершенные:

* Aster: x1-x1.1 к затратам
* Lighter: x45 к затратам

{% hint style="info" %}
Подробное описание проектов в этом посте: [ТЫК](https://t.me/blacktaraxacum/3621)
{% endhint %}

***

## 🚀 Доступные в софте активности

<details>

<summary>Поддерживаемые Perp</summary>

* Поддерживается 8 проектов: [Edgex](https://pro.edgex.exchange/referral/ODUVANCHIK), [Extended](https://app.extended.exchange/join/ODUVANCHIK), [Backpack](https://backpack.exchange/refer/bf0da9cf-b0c3-4500-9fc2-c9663002b38f), [Lighter](https://lighter.xyz/), [Paradex](https://app.paradex.trade/r/oduvanchik), [Hyperliquid](https://app.hyperliquid.xyz/join/ODUVANCHIK), [Aster](https://www.asterdex.com/en/referral/581c65), [Pacifica](https://app.pacifica.fi/?referral=oduvanchik), [Ethereal](https://app.ethereal.trade/?ref=TNIB5X6BEAET)
* Возможно использовать любые связки бирж из доступных. \
  Например: Backpack + Lighter, Hyperliquid + Paradex, Lighter + Paradex и тд
* Хеджирование Lighter + Lighter + Lighter/Backpack +Backpack +Backpack /Paradex+Paradex+Paradex (стратегия с 3 аккаунтами)

</details>

<details>

<summary>Объемы</summary>

* Автоматический или ручной подбор аккаунтов
* Зеркальное открытие лимитных ордеров на двух биржах
* Закрытие всех позиций отдельной функцией
* Возможность ожидания положительного спреда для закрытия позиций в плюс по PNL
* Статистика по аккаунтам и позициям &#x20;

</details>

#### **Особенности**

* Бот проверяет баланс на двух запущенных аккаунтах и берет в работу ту сумму, где баланс меньше
* Работа с DEX через WebSocket для высокой производительности и минимальной задержки
* Хедж-стратегии с учётом спредов и фандинга
* Защитные механизмы — автоматическое закрытие позиций при фатальных ошибках и ликвидациях
* Детальная статистика с учетом всех реальных доходов и потерь (комиссии, фандинг, неудачные позиции и т.д.)
* Выбор стратегий, включая те, что оптимизированы под конкретные пары и биржи
* Возможность комбинировать любые поддерживаемые DEX'ы между собой
* **Комьюнити** для отслеживания новых вариантов отработки проекта и внедрение этого в софт

{% hint style="info" %}
За дальнейшими обновлениями можно следить в нашем паблике: <https://t.me/oxygen_tools>
{% endhint %}

***

## ⚙️ Установка

#### **Требования:**

* Установка Node Js: <https://nodejs.org/>

#### **Скачивание:**

1. Перейти в нашего бота: <https://t.me/OduLandBot?start=r_oxygen_x>
2. Личный кабинет -> Доступ к софтам -> Выбрать интересующий вас продукт

<figure><img src="https://4043961612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9XoggI4ezKP2sOs4B2tY%2Fuploads%2FkCMAk5SVTUySYflhdno0%2F05182-ezgif.com-video-to-gif-converter.gif?alt=media&amp;token=8b090cc5-d5c0-4cd5-9f23-cb0d1b37a21e" alt=""><figcaption><p> Скачивание продукта</p></figcaption></figure>

***

## ▶ Первый запуск

1. Разархивируйте софт в удобное для вас место на вашем ПК
2. Запуск производится через .exe файл в корне с софтом. После первого запуска в директории появятся все нужные файлы конфигов
3. Настройте данные для запуска:

* Заполните файлы с данными от аккаунтов (форматы данных будут расписаны ниже)
* Установите оптимальные настройки под ваши требования в config.json

<figure><img src="https://4043961612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9XoggI4ezKP2sOs4B2tY%2Fuploads%2FOK78gW0SUsDaupgXKvMI%2FPerpLand%20Setup.gif?alt=media&amp;token=2f2c9657-8a0c-4b8c-990e-ff7fab97e24a" alt=""><figcaption><p>Запуск софта</p></figcaption></figure>

***

## ✅ Настройка и начало работы

{% hint style="info" %}
**Гайд по созданию .txt с аккаунтами:**

[Создание файла с данными](/docs/soft/gaidy/sozdanie-faila-s-dannymi.md)
{% endhint %}

{% hint style="warning" %}
**Формат прокси**

`host`:`port`:`username`:`password`
{% endhint %}

### Настройки Backpack

#### :file\_folder: config/backpack/accounts.txt

Формат - `label,apiKey,apiSecret,proxy`

`label` - обязательная метка для обозначения аккаунта\
`apiKey` - API ключ аккаунта для доступа к открытию позиций\
`apiSecret` - API секретная фраза для доступа к открытию позиций\
`proxy` - прокси аккаунта

Как получить `apiKey` и `apiSecret`:

1. Зайдите в свой аккаунт Backpack
2. Перейдите в портфолио
3. Внизу нажмите Settings
4. Выберите вкладку API Keys
5. Нажмите на кнопку New API key

<figure><img src="https://4043961612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9XoggI4ezKP2sOs4B2tY%2Fuploads%2F9fAPEznRVulh3pgU8aUl%2Fimage.png?alt=media&amp;token=6e07b840-975c-45b9-9bea-f723654427fe" alt=""><figcaption><p>Создание apiKey + apiSecret</p></figcaption></figure>

***

### Настройки Lighter

#### :file\_folder: config/lighter/accounts.tx

Формат - `label,seed,l1Address,index,proxy`

`label` - обязательная метка для обозначения аккаунта\
`seed` - сид аккаунта из консоли\
`l1Address` - адрес привязанного EVM-кошелька\
`index` - индекс аккаунта из консоли\
`proxy` - прокси аккаунта

Как получить `seed` и `index`:

1. Зайдите в свой аккаунт Lighter через браузер
2. Откройте консоль разработчика (нажмите F12)
3. Вставьте команду ниже и нажмите Enter
4. `seed` и `index` появятся в логах, их можно скопировать

```javascript
const [index, obj] = Object.entries(JSON.parse(localStorage.getItem('signature_v5')))[0];
console.log('index:', index);
console.log('seed:', obj.seed);
```

<figure><img src="https://4043961612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9XoggI4ezKP2sOs4B2tY%2Fuploads%2FGlqksDTc8Q6PpOhGaN6I%2FUDei1K6u9c.png?alt=media&amp;token=69428bfc-f10d-4810-8c8d-381a34268fb1" alt=""><figcaption><p>Получение Index + Seed (F12 -> Console -> Снизу вставляем код и нажимаем Enter)</p></figcaption></figure>

#### :file\_folder: config/lighter\_config.json

`slippage` - проскальзывание, используемое при открытии позиций

`wasm_link` - актуальная ссылка lighter приложения, может обновляться при апдейтах от команды.

Как найти `wasm_link`:

1. Нажмите F12 и обновите страницу
2. Перейдите во вкладку Network
3. Поставьте фильтр запросов Wasm справа сверху
4. В списке запросов найдите тот, в названии которого есть слово "target"
5. Нажмите на него и скопируйте Request URL

<figure><img src="https://4043961612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9XoggI4ezKP2sOs4B2tY%2Fuploads%2FGg1ri0gEee3jVJFM2Ctn%2Fimage.png?alt=media&amp;token=284bba61-bc78-4bdf-aeee-b08d444dadeb" alt=""><figcaption></figcaption></figure>

#### ‼️Возможные ошибки

1. Invalid signature\
   Lighter сменил `seed` для аккаунта, нужно скопировать новые данные `seed` и `index` из браузера и вставить в бота. \
   Это случается если вы авторизовались в аккаунт Lighter с новой подписью после очистки кэша в браузере или с нового антидетект профиля. &#x20;

***

### Настройки Paradex

#### :file\_folder: config/paradex/accounts.txt

Формат - `label,ethereumPrivateKey,paradexAddress,paradexPrivateKey,proxy`

`label` - обязательная метка для обозначения аккаунта\
`ethereumPrivateKey` - приватный ключ кошелька связанного с Paradex аккаунтом\
`paradexAddress` - адрес аккаунта Paradex\
`paradexPrivateKey` - приватный ключ аккаунта Paradex\
`proxy` - прокси аккаунта

Как получить `paradexAddress` и `paradexPrivateKey`:

1. Зайдите в свой аккаунт Paradex
2. Нажмите на адрес кошелька справа сверху
3. Скопируйте Paradex Address и Paradex Private Key

<figure><img src="https://4043961612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9XoggI4ezKP2sOs4B2tY%2Fuploads%2FZNy6xaXJbRrCrQtaeSgb%2Fimage.png?alt=media&amp;token=bcc03097-1238-4ce3-9d8d-271ff26fb3e5" alt=""><figcaption><p>Экспорт paradexAddress + paradexPrivateKey (Адрес -> Wallet) </p></figcaption></figure>

***

### Настройки Hyperliquid

#### :file\_folder: config/hyperliquid/accounts.txt

Формат - `label,ethereumPrivateKey,proxy`

`label` - обязательная метка для обозначения аккаунта\
`ethereumPrivateKey` - приватный ключ кошелька связанного с Hyperliquid аккаунтом\
`proxy` - прокси аккаунта

***

### Настройки Aster

#### :file\_folder: config/aster/accounts.txt

Формат - `label,apiKey,apiSecret,proxy`

`label` - обязательная метка для обозначения аккаунта\
`apiKey`- api ключ аккаунта Aster\
`apiSecret` - секрет от api аккаунта Aster\
`proxy` - прокси аккаунта

Как получить `apiKey` и `apiSecret`:

1. Зайдите в свой аккаунт Aster
2. Нажмите на адрес кошелька справа сверху
3. Скопируйте API key и API secret key

<figure><img src="https://4043961612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9XoggI4ezKP2sOs4B2tY%2Fuploads%2Fk2MnjQJqcPR8CmKciPlZ%2Fimage.png?alt=media&amp;token=58e1346a-e604-4332-8bce-35644c0fd5eb" alt=""><figcaption></figcaption></figure>

***

### Настройки Pacifica

#### :file\_folder: config/pacifica/pacifica.txt

Формат - `label,privateKey,solanaAddress,proxy`

`label` - обязательная метка для обозначения аккаунта\
`privateKey`- приватный ключ от API вашего аккаунта Pacifica\
`solanaAddress` - адрес SOL кошелька, который привязан к аккаунту Pacifica\
`proxy` - прокси аккаунта

Как получить `privateKey`:

1. Зайдите в свой аккаунт Pacifica
2. Перейдите во вкладку API Keys
3. Скопируйте ключ белого цвета

<figure><img src="https://4043961612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9XoggI4ezKP2sOs4B2tY%2Fuploads%2FF4Bks57x3emkac2CVmAI%2Fimage.png?alt=media&amp;token=528730b1-4ae2-4d1a-8ca6-a9f0c52b531b" alt=""><figcaption></figcaption></figure>

***

### Настройки EdgeX

#### :file\_folder: config/edgex/accounts.txt

Формат - `label,console_key,proxy`

`label` - обязательная метка для обозначения аккаунта\
`console_key` - данные аккаунта полученные из консоли браузера\
`proxy` - прокси аккаунта

Как получить `console_key`:

1. Зайдите в свой аккаунт EdgeX через браузер
2. Откройте консоль разработчика (нажмите F12)
3. Вставьте команду ниже и нажмите Enter
4. `console_key` появятся в логах, его можно скопировать

```javascript
const user = JSON.parse(localStorage.getItem('user'))
const currentAccount = user.state.currentActiveAccount
const keys = currentAccount.keys
console.log(`${currentAccount.id},${Object.values(keys.apiKey).join(',')},${keys.l2Key.privateKey}`)
```

<figure><img src="https://4043961612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9XoggI4ezKP2sOs4B2tY%2Fuploads%2FmeFQm4m1FrdB6JcKZGe3%2Fimage.png?alt=media&amp;token=2269f66d-929a-41db-b616-25a3c309b743" alt=""><figcaption></figcaption></figure>

***

### Настройки Extended

#### :file\_folder: config/extended/accounts.txt

Формат - `label`,`apiKey`, `starkPublicKey`, `starkPrivateKey`, `vaultNumber`, `clientId`,`proxy`

`label` - обязательная метка для обозначения аккаунта\
`apiKey`, `starkPublicKey`, `starkPrivateKey`, `vaultNumber`, `clientId` - данные API созданного на аккаунте Extended\
`proxy` - прокси аккаунта

Как получить `apiKey`, `starkPublicKey`, `starkPrivateKey`, `vaultNumber`, `clientId`:

1. Зайдите в свой аккаунт Extended через браузер
2. Перейдите в More -> API
3. Нажмите Generate API Key -> Show API Details
4. Скопируйте все нужные данные

<figure><img src="https://4043961612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9XoggI4ezKP2sOs4B2tY%2Fuploads%2FVlAsSIp1lbMpTOna5B05%2FFrame%201376.png?alt=media&amp;token=dcfbb420-5341-4e9a-bd55-a605dc6385ac" alt=""><figcaption></figcaption></figure>

***

### Настройки Ethereal

#### :file\_folder: config/ethereal/accounts.txt

Формат - `label`,`privateKey`, `proxy`

`label` - обязательная метка для обозначения аккаунта\
`privateKey` - приватный ключ от вашего кошелька связанного с аккаунтом Ethereal\
`proxy` - прокси аккаунта

***

### Настройки TradeXYZ

#### :file\_folder: config/tradexyz/accounts.txt

Формат - `label,ethereumPrivateKey,proxy`

`label` - обязательная метка для обозначения аккаунта\
`ethereumPrivateKey` - приватный ключ кошелька связанного с TradeXYZ аккаунтом\
`proxy` - прокси аккаунта

Чтобы запустить XYZ маркеты (NVDA и др.) надо в поле markets в config.json указать пару в формате `xyz`:`market`. Например xyz:NVDA.

***

### Настройки Nado

#### :file\_folder: config/nado/nado.txt

Формат - `label`,`privateKey`, `proxy`

`label` - обязательная метка для обозначения аккаунта\
`privateKey` - приватный ключ от вашего кошелька связанного с аккаунтом Nado\
`proxy` - прокси аккаунта

***

### Настройки Variational

#### :file\_folder: config/variational/variational.txt

Формат - `label`,`privateKey`, `proxy`

`label` - обязательная метка для обозначения аккаунта\
`privateKey` - приватный ключ от вашего кошелька связанного с аккаунтом Variational\
`proxy` - прокси аккаунта

***

### Настройки 01 Exchange

#### :file\_folder: config/01/01.txt

Формат - `label`,`privateSolanaKey`, `proxy`

`label` - обязательная метка для обозначения аккаунта\
`privateSolanaKey` - приватный ключ от вашего кошелька связанного с аккаунтом 01 Exchange\
`proxy` - прокси аккаунта

***

### config.json

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

> Все timeout в файле указываются в **миллисекундах**

`random_pairs` - будет ли бот случайным образом подбирать аккаунты 1 к 1, или вы хотите указать самостоятельно пары. Если *false*, то: `pairs.txt` -> и с новой строки указываете какие *label* с каким будут в паре, пример:\
\
*Osnova1,Osnova6* \
*Osnova3,Osnova5* \
и тд

`max_leverage` - какое максимальное кредитное плече использовать\
`min_balance` - какой минимальный баланс должен быть на одной из бирж для старта торгов\
`balance_percentage_range` - какой баланс использовать для прокрута\
`markets` - список торговых пар для отработки\
`cycles` - кол-во кругов что сделает бот перед остановкой\
`sleep_between_hedge` - задержка между кругами (циклами)\
`retries` - если бот за N попыток не смог открыть хедж, то все запланированные хеджи для этих аккаунтов отменяются, а также бот будет 5 раз проверять нет ли открытых позиций и закрывать если есть

`use_funding` - если `true` бот будет учитывать фандинг при расчёте спреда (работает только при двух аккаунтах в группе). Это позволяет правильно открывать позиции при противоположных ставках фандинга на двух DEX.

`balance_percentage_range` - какой баланс использовать для прокрута

`min_live_time` - сколько по времени держать позицию открытой\\

\
`wait_spread_timeout` - при выборе пары, сколько ждать подходящий спред. если за указанное время не будет подходящих цен для открытия ордера, то бот выберет новую пару\\

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

\
`wait_close_spread_timeout` - закрывать ли позицию после `min_live_time` если неподходящий спред. Если *false*, то бот будет бесконечно ждать пока не появится возможность закрыть позицию в 0, или в указанные вами спреды . Если *true*, то бот будет ждать `wait_spread_timeout`, и если не смог дождаться нужной разницы, то просто закроет 2 позы с текущих значений

`OXYGEN_API_KEY` - API Ключ вашего Oxygen.Tools аккаунта для доступа к софтам

{% hint style="info" %}
`Логин, Пароль, API Ключ` — находятся в личном кабинете телеграм бота\
<https://t.me/OduLandBot?start=r_oxygen_x>\
\
Личный кабинет -> Доступ к софтам -> API Ключ
{% endhint %}

<figure><img src="https://4043961612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9XoggI4ezKP2sOs4B2tY%2Fuploads%2FYFuRxKQgROwHn33boVHg%2FFind%20Login%20and%20API%20key.gif?alt=media&amp;token=55a6e71c-f4b6-44a2-b667-3752f29ada05" alt=""><figcaption><p>Авторизация</p></figcaption></figure>

### groups.txt

В этом файле вы можете настроить какие аккаунты будут хеджироваться друг с другом.&#x20;

**Доступные стратегии:**

* 2 аккаунта (например: backpack + paradex)
* 3 аккаунта (например: lighter1 + lighter2 + lighter3)\
  \*работает только для связки аккаунтов одной биржи

**Форматы данных:**

* 2 аккаунта — `backpack1,lighter1`&#x20;
* 3 аккаунта — `lighter1,lighter2,lighter3;50,20-25,20-30`&#x20;

Бот автоматически распознает связки аккаунтов указанные в файле, меняет стратегию если 2 биржи или 3 биржи.

**Что значит количество аккаунтов, и для чего это нужно?:**

**2 аккаунта**\
Бот открывает на одной бирже лонг на 50% суммы, а на другой шорт так же на 50%. Привычный способ отработки перпов.

**3 аккаунта**\
Бот открывает на одном аккаунте биржи лонг/шорт на 50% суммы, а на двух остальных зеркальную сделку на те же 50% суммы, но которая разделится на два аккаунта.&#x20;

Формат - `lighter1,lighter2,lighter3;50,20-25,20-30`&#x20;

`50,20-25,20-30` - это распределение ликвидности между аккаунтами.\
Можно указывать как точные значения - `50,27,23` , так и плавающие - `50,20-25,20-30` (бот будет рандомить)

Например: вы указали такие значения - `50,20-25,20-30` \
Распределение для группы аккаунтов по итогу может быть следующим: \
Аккаунт 1 - 50% от суммы\
Аккаунт 2 - 22% от суммы\
Аккаунт 3 - 28% от суммы

Стратегия на 3 аккаунта сделана для точечной отработки одной биржи. Например если вы хотите крутить только Lighter.

При отработке одной биржи на 2 аккаунтах — на одном лонг, а на другом шорт, вы получите блокировку с шансом 98%.\
Но если вы используете 3 аккаунта, то шанс поймать блокировку стремится к 0%. Бот будет брать 1 аккаунт за главного, при чем каждый раз разного, и открывать полную позицию, а противоположную сделку разделит на другие аккаунты поровну.

Так если `lighter1` откроет лонг на 500$, то `lighter2` и `lighter3` откроют шорты на 500$ общей суммы но с распределением, которое вы указали в формате (например 220$ и 280$).

<figure><img src="https://4043961612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9XoggI4ezKP2sOs4B2tY%2Fuploads%2FG43w9Eb7YinnxJdLEs1S%2Fimage.png?alt=media&amp;token=83970821-bbe0-4ae9-81ad-1c84a369359c" alt=""><figcaption><p>Пример стратегии на 3 аккаунта</p></figcaption></figure>

***

## 🧠 Логика софта

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

### Поиск монеты

1. Выбирает случайную монет из списка `markets`&#x20;
2. Ждёт на ней подходящий `min_spread` по таймеру из `open_spread_timeout`
3. Если за `open_spread_timeout` не удалось дождаться нужного `min_spread`, то выбирает другую случайную монету из markets

### Открытие сделки

Сделки открываются на % от баланса, который указан в `balance_percentage_range`

1. Как только бот находит нужный `min_spread` на выбранной монете, он анализирует стакан под ваш объём предполагаемого ордера, и если всё хорошо, то он выставляет лимитный ордер на двух биржах
2. Ожидание заполнения выставленных ордеров длиться `wait_order_fill_timeout`   \
   \
   2.1 Если по какой-то причине на одной из бирж за время `wait_order_fill_timeout` не заполнился полностью ордер, то бот продаёт позиции на двух биржах по маркету (запоминает объём и записывает комиссии, но отобразит это только в таблице с подсчетом успешного круга открытия и закрытия)

### Жизнь ордера

Бот будет держать открытыми заполненные позиции на биржах ориентируясь на `min_live_time`, после его окончания перейдет к закрытию сделки.&#x20;

#### Отслеживание ликвидаций

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

### Закрытие сделки

1. Бот начинает ожидание спреда от "0 до `min_spread`" на монете. Если в настройке `use_close_spread_timeout` стоит `true`, то ориентируется на время из `wait_close_spread_timeout`. Если false, то ждёт бесконечно
2. Как только бот видит подходящий `min_spread` в стакане, он выставляет ордера на продажу и ждёт `wait_order_fill_timeout`. Если за время `wait_order_fill_timeout` на какой-то из бирж бот не дождался полного заполнения ордера, то он обе биржи закрывает по маркету
3. Если `use_close_spread_timeout` установлен на `true`, то он начинает искать возможность закрытия в диапазоне между "0 и `min_spread`". Это ожидание длиться столько же, сколько и время `wait_close_spread_timeout`.
4. Если бот не смог дождаться спреда даже в 0, то начинает искать в диапазоне от "минус `min_spread` до плюс `min_spread`", например: от -0.04% до 0.04%. Проверка такого диапазона будет длиться `wait_close_spread_timeout`.
5. Если даже так дождаться не удалось, то закрывает ордера по маркету

***

{% hint style="info" %}
Все дальнейшие обновления будут публиковаться в нашем паблике: <https://t.me/oxygen_tools>

Ветка в закрытом комьюнити для обсуждения: <https://t.me/c/1908008923/61461/64129>
{% endhint %}

<figure><img src="https://4043961612-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F9XoggI4ezKP2sOs4B2tY%2Fuploads%2FnrX6MAHDDes7CX3O5VmV%2Fperpl.gif?alt=media&amp;token=52bf6bca-843b-41ac-95de-6c26c02061ad" alt=""><figcaption><p>Интерфейс софта</p></figcaption></figure>
