# Как работает терминал ISA и его взаимодействие с биржей

### Содержание

1. Главный принцип: ISA считает позиции внутри себя
2. Зачем это нужно: возможности локального учёта
3. Локальный хедж в одностороннем режиме
4. Когда расхождение с биржей — это НОРМАЛЬНО
5. Когда расхождение — это проблема
6. Проблема "потерянных" ордеров
7. Что делать если ордер не учёлся
8. Частые вопросы

***

### Главный принцип: ISA считает позиции внутри себя

**Терминал ISA не синхронизирует позиции с биржей.** Вместо этого — он ведёт учёт всех сделок самостоятельно, на основе уведомлений об исполнении ордеров.

Большинство других ботов работают так:

> Запросить биржу → получить текущую позицию → принять решение

ISA работает иначе:

> Получить уведомление об исполнении → записать внутри себя → торговать на основе своего внутреннего состояния

Когда ордер исполняется на бирже, биржа отправляет **уведомление через WebSocket** (постоянное соединение, по которому биржа в реальном времени "толкает" события). ISA получает это уведомление и фиксирует исполнение.

Позиция в ISA — это накопленный итог всех зафиксированных исполнений:

* вход (`ENT`)
* усреднения (`AVG`)
* частичные фиксации прибыли (`PTP`)
* финальный выход (`ETP` / `SL` / `EMR`)

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

Это **осознанное архитектурное решение**, а не ограничение — ниже объясняем почему.

***

### Зачем это нужно: возможности локального учёта

#### Биржа знает только итоговую позицию — не логику

Биржа хранит одну нетто-позицию по инструменту. Она не знает:

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

Всё это — **внутреннее состояние стратегии**, которое ISA хранит самостоятельно. Если бы мы опирались на данные биржи — мы бы теряли всю эту логику при каждом запросе.

#### Нет задержек на запросы к бирже

REST-запрос к бирже занимает 50–300 мс. При локальном расчёте данные о позиции доступны мгновенно — бот реагирует на рынок без дополнительных задержек.

#### Нет проблем с API-лимитами

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

#### Возможность запускать несколько ботов на одной паре

Именно внутренний учёт позволяет запускать несколько ботов на одном торговом инструменте — каждый бот сопровождает свою позицию независимо. На бирже при этом будет одна нетто-позиция, а в ISA — несколько отдельных. Это нормально и ожидаемо.

***

### Локальный хедж в одностороннем режиме

#### Два режима на бирже

Биржи (BingX, Bybit и др.) предлагают два режима:

* **Односторонний (One-way)** — одновременно может быть только одна позиция по инструменту: либо лонг, либо шорт
* **Хедж (Hedge)** — могут одновременно существовать лонг-позиция и шорт-позиция по одному инструменту

ISA работает в **одностороннем режиме** биржи.

#### Как ISA реализует хедж без переключения режима

Представьте ситуацию: у вас запущены два бота на паре BTC/USDT.

* **Бот A** открыл лонг 0.1 BTC
* **Бот B** открыл шорт 0.1 BTC

На бирже в одностороннем режиме эти два ордера взаимно закроют друг друга — биржа покажет нулевую позицию или перевернёт её.

**В ISA всё иначе:** каждый бот сопровождает свою позицию самостоятельно. Бот A "не знает" о Боте B и продолжает вести лонг. Бот B ведёт свой шорт. Внутри терминала ISA одновременно активны два бота с противоположными позициями — это и есть **локальный хедж**.

При этом биржа видит нетто-результат этих двух ботов, а не каждую позицию отдельно. Это нормально — ISA сопровождает логику каждого бота независимо.

#### Почему это лучше, чем хедж-режим биржи

Хедж-режим биржи требует:

* раздельных счетов маржи для Long и Short
* отдельного управления каждой стороной через API
* дополнительной сложности в логике ордеров

Локальный подход ISA проще, надёжнее и не создаёт зависимости от конкретного режима биржи.

***

### Когда расхождение с биржей — это НОРМАЛЬНО

**Расхождение между тем, что показывает ISA и что показывает биржа — не всегда ошибка.**

#### Два бота на одной паре

Если у вас запущены два бота на одной монете — **ожидайте расхождение**. Биржа показывает одну нетто-позицию (сумму всех ваших действий), а ISA показывает две отдельные позиции — по одной на каждый бот.

**Пример:**

* Бот A: лонг 0.2 BTC по средней $90,000
* Бот B: лонг 0.1 BTC по средней $89,000
* Итого в ISA: две активные позиции
* На бирже: одна позиция лонг 0.3 BTC (сумма)

Это правильная работа. Не нужно ничего исправлять.

#### Бот только что открыл/закрыл позицию

Между исполнением ордера на бирже и обновлением интерфейса ISA есть небольшая задержка (секунды). Это нормально — данные актуализируются после получения уведомления.

***

### Когда расхождение — это проблема

Расхождение становится проблемой, если:

* Биржа показывает позицию, а ISA говорит что позиции нет — и это продолжается долго (больше одной свечи)
* Закрытая сделка не отобразилась в истории ISA
* Бот выставляет ордера исходя из неверного представления о позиции

В таком случае — см. следующий раздел.

***

### Проблема "потерянных" ордеров

#### Что значит "ордер потерялся"

Ордер считается потерянным, когда:

* он **исполнился на бирже**
* но **ISA не получила уведомление** об исполнении

Причина — ненадёжность WebSocket соединения:

1. Если соединение разрывается в момент исполнения ордера — уведомление теряется
2. Биржи не всегда повторно отправляют пропущенные события
3. В периоды высокой волатильности нагрузка на серверы биржи может приводить к потере сообщений

Мы знаем об этой проблеме и работаем над её устранением.

#### Как ISA пытается исправить это автоматически

После каждой свечи терминал запускает **проверку ордеров**:

1. Сравнивает список активных ордеров внутри себя со списком активных ордеров на бирже
2. Если ордер есть в ISA, но не найден на бирже — делает REST-запрос истории исполнений
3. Если ордер **исполнился** — восстанавливает его, как если бы WebSocket-уведомление пришло вовремя
4. Если ордер **не найден и не исполнен** — перевыставляет его с новым ID

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

***

### Что делать если ордер не учёлся

#### Признаки

* Биржа показывает позицию, но в ISA её нет (и прошла не одна свеча)
* Сделка закрылась на бирже, но не отображается в истории ISA
* PnL в ISA не совпадает с биржевым

#### Шаг 1: Подождите закрытия свечи

Проверка ордеров запускается на каждом закрытии свечи. На 1-минутном таймфрейме — ждать около минуты. На 1-часовом — до часа. Дайте ISA время на автоисправление.

#### Шаг 2: Перезапустите бота

При запуске бот делает расширенную сверку с биржей. Большинство расхождений исправляется на этом шаге.

#### Шаг 3: Пересоздайте бота

Если перезапуск не помог — **удалите бота и создайте заново** с теми же настройками. Это сбрасывает внутреннее состояние и бот начинает отслеживать позицию с чистого листа. Позиция на бирже при этом не затрагивается.

> Важно: перед пересозданием убедитесь, что на бирже нет активных ордеров от этого бота — отмените их вручную.

#### Шаг 4: Напишите в поддержку

Если ни один из шагов не помог — напишите в поддержку:

* Название бота и торговая пара
* Примерное время проблемы
* Скриншот расхождения (ISA и биржа рядом)

***

### Частые вопросы

**В: Почему бы просто не синхронизировать позицию с биржей при каждом тике?**

О: Биржа не хранит внутреннюю логику стратегии — уровни сетки, историю усреднений, прогресс частичных выходов. Всё это ISA ведёт сама. Кроме того, постоянные REST-запросы создают задержки и быстро исчерпывают API-лимиты биржи.

***

**В: На бирже одна позиция, а в ISA две — это ошибка?**

О: Нет, если у вас запущены два бота на одной паре. ISA ведёт каждый бот отдельно, биржа показывает нетто-итог. Это ожидаемое поведение.

***

**В: Почему ISA не работает в хедж-режиме биржи?**

О: Хедж-режим биржи требует раздельного управления Long и Short аккаунтами, что усложняет логику и создаёт дополнительные точки отказа. Локальный подход ISA даёт те же возможности, оставаясь в более простом одностороннем режиме.

***

**В: Как долго ISA может "не знать" о закрытой позиции?**

О: До следующей свечи. На 1-минутном таймфрейме — около минуты. На 1-часовом — до часа. После закрытия свечи запускается автоматическая проверка.

***

**В: Можно ли доверять статистике PnL при потерянных ордерах?**

О: Если ордер был восстановлен автоматически — статистика точная. Если нет — данные за этот период могут быть неполными. После пересоздания бота история сохраняется, новые сделки будут учитываться корректно.

***

**В: Бот открыл позицию, которой нет на бирже — что делать?**

О: Ордер на вход не дошёл до биржи или был отклонён. Перезапустите бота — при старте он сверяется с биржей. Если не помогло — пересоздайте бота.

***

*Если у вас остались вопросы или вы столкнулись с ситуацией, которая не описана здесь — напишите в поддержку. Ваши отчёты помогают нам улучшать систему.*


---

# 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.ispecalgo.com/isa-algoterminal/kak-rabotaet-terminal-isa-i-ego-vzaimodeistvie-s-birzhei.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.
