> For the complete documentation index, see [llms.txt](https://xbots.gitbook.io/x-bots.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://xbots.gitbook.io/x-bots.io/torgovlya/reverse-backtester-rukovodstvo.md).

# Reverse Backtester — руководство

> Инструмент доступен по адресу: [**https://reverse.x-bots.tech**](https://reverse.x-bots.tech/). Не требует регистрации, работает в браузере.

***

> **Reverse Backtester** — бесплатный онлайн‑инструмент для подбора параметров стратегии **Reverse**.\
> При срабатывании **SL** позиция **переворачивается** (лонг ⇄ шорт), а объём **увеличивается по множителю**.\
> Рост объёма ограничивается глубиной серии **K** (из неё получается максимальный рабочий объём **MaxVol**).

***

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

* [Что делает бэктестер](#chto-delaet-bektester)
* [Быстрый старт](#bystryi-start)
* [Интерфейс и настройки](#interfeis-i-nastroiki)
  * [1) Пресеты](#id-1-presety)
  * [2) Кэш и риск‑алерты](#id-2-kesh-i-risk-alerty)
  * [3) Комиссии](#id-3-komissii)
  * [4) Фандинг](#id-4-fanding)
  * [5) Диапазоны параметров](#id-5-diapazony-parametrov)
  * [6) Старт, план и прогресс](#id-6-start-plan-i-progress)
  * [7) Результаты, метрики, детали](#id-7-rezultaty-metriki-detali)
  * [8) Экспорт в X‑Bots](#id-8-eksport-v-x-bots)
* [Рекомендации по практике](#rekomendacii-po-praktike)
* ### [<sub>Количество потоков (воркеров)</sub>](#kolichestvo-potokov-vorkerov-1)
* [Ограничения и допущения](#ogranicheniya-i-dopusheniya)
* [FAQ](#faq)
* [Словарь метрик](#slovar-metrik)
* [История версий](#istoriya-versii)
* [Дорожная карта](#dorozhnaya-karta)

***

### Что делает бэктестер

1. Загружает **минутные свечи** по выбранным парам:
   * по **количеству свечей**,
   * по **готовому периоду** (1–24 мес),
   * либо по **диапазону дат** через календарь.
2. Перебирает **диапазоны параметров** (min/max/step) и симулирует сделки по логике Reverse.
3. Считает **PnL**, **ROI**, **DD**, глубины серий, **win‑rate**, статистики по PnL.
4. Учитывает **комиссии** (maker/taker) и **фандинг** (два режима).
5. Показывает **TOP‑10** по выбранному критерию, **детали сделок**, **графики**.
6. Копирует готовую **конфигурацию JSON** для запуска в **X‑Bots**.
7. Хранит свечи в **локальном кэше** (ускоряет повторные прогоны).

***

### Быстрый старт

1. **Пары → Выбрать пары…**\
   Отметьте `BTCUSDT` (рекомендуется начинать с одной пары).
2. **Способ загрузки**:
   * «**По количеству свечей**» → `20000`,\
     или «**Период**» → `2 года`,\
     или «**Диапазон дат**» → выберите даты в календаре.
3. **Старт‑направление** → `Лонг`.
4. **Критерий сортировки** → `Доходность (Profit)` (или выберите свой).
5. Проверьте **диапазоны Base/Mult/TP/SL/K** (можно оставить предустановки).
6. Нажмите **Старт**. Дождитесь конца: полоса прогресса станет «шашечной», затем появится «Готово».
7. В таблице откройте **Детали** понравившегося сета. Посмотрите графики/метрики и сделки.
8. Нажмите **Копировать конфигурацию** — вставьте JSON в импорт **X‑Bots**.

***

### Интерфейс и настройки

#### 1) Пресеты

Верхний блок, компактная «панель запуска».

**1.1. Локальные пресеты**

* **Выбор пресета** — список сохранённых локально.
* **Сохранить текущий** — записывает все параметры формы.
* **Удалить** — удаляет выделенный пресет.
* **Скопировать ссылку‑пресет** — создаёт URL с закодированной конфигурацией.\
  Получатель открывает ссылку — форма подставляется автоматически.

> Пресеты хранятся в браузере. Ссылку можно отправлять коллегам.

**1.2. Выбор пар**

* **Фьючерсные пары Bybit (USDT)** → **Выбрать пары…**\
  Откроется модальное окно с:
  * строкой **поиска**,
  * кнопками **Все / Снять**,
  * списком пар с чекбоксами.
* Рекомендуется выбирать **одну** пару.\
  Если выбрано **несколько**, расчёт идёт **по очереди**, результаты всех пар попадают в одну таблицу. В строках есть колонка **«Пара»**.

**1.3. История (какой объём свечей брать)**

* **Способ загрузки**:
  * **По количеству свечей** — укажите число в поле **«Свечей (1m)»**.\
    Рекомендуем **10–30 тыс.** для быстрых прогонов. Больше — дольше.
  * **Период** — готовый список: `1, 2, 3, 6, 9 месяцев`, `1 год`, `1.5 года`, `2 года`, `Другое (дней)…`.\
    Выберите нужное — система сама вычислит даты «с» и «по».
  * **Диапазон дат** — укажите даты **с** и **по** через календарь.\
    Если указана только дата «по», начало берётся по выбранному периоду.

В статусе после загрузки отображается фактический **диапазон дат** и **количество полученных свечей**.

**1.4. Старт‑направление**

* **Лонг** — первая сделка открывается в лонг.
* **Шорт** — первая сделка открывается в шорт.

Правила переключения:

* после **TP** направление **сбрасывается к стартовому**;
* после **SL** — направление **переворачивается**.

**1.5. Критерий сортировки**

Определяет порядок строк TOP‑10 и общей таблицы.

Готовые варианты:

* **Доходность (Profit)** — максимальный суммарный PnL.
* **ROI %** — максимальный ROI.
* **Recovery‑Factor** — максимальный `Profit / |DD $|`.
* **Минимальная DD %** — приоритет у наименьшей относительной просадки; при равенстве — больше ROI.
* **Win‑rate %** — максимальная доля прибыльных сделок.
* **Avg depth** — минимальная средняя глубина серий.
* **Max depth** — минимальная максимальная глубина серий.
* **DD $** — минимальная абсолютная просадка.
* **Пользовательский (строка)** — задаёте порядок и направление сравнения самостоятельно.

**Синтаксис кастомного критерия**

Строка вида:ddPct, roi, -avgDepth, +profit

* Список полей через запятую.
* **`+`** — **максимизировать**, **`-`** — **минимизировать**.
* Без знака допустимо, но лучше явно указывать направление.

Поддерживаемые поля (основные):\
`profit, roi, ddAbs, ddPct, recFactor, winrate, dealsTotal, dealsTP, dealsSL, cyclesTotal, cyclesTP, cyclesFail, avgDepth, maxDepth, fAvgDepth, fMaxDepth, kUsed, fundTotal`

Примеры:

* **Минимизировать просадку, потом максимизировать ROI, затем Profit**

-ddPct, +roi, +profit

* **Максимизировать Recovery‑Factor, при равенстве минимизировать Max depth**

+recFactor, -maxDepth

***

#### 2) Кэш и риск‑алерты

* **Игнорировать кэш** — всегда загружать данные заново.
* **Очистить кэш пары** — удалить сохранённые свечи для отмеченных пар.
* **Кэш: используется / игнорируется** — индикатор состояния.
* **Порог DD %** — если `DD %` результата **выше**, строка подсвечивается как рискованная.
* **Мин. TP cycles** — если число удачных серий **меньше** порога, строка тоже подсвечивается.
* **Алерты: включены** — напоминание о подсветке риска в таблице.

> **TTL кэша**: \~30 минут. По истечении — свечи будут запрошены снова.

**Правила подсветки риска**

Строка подчёркивается, если:

* `DD % > порога`, **или**
* `TP cycles < минимума`, **или**
* `F‑Max depth ≥ K-1` **и** `Fail (SL) > 0`.

***

#### 3) Комиссии

**Учитывать комиссии** — *Включено / Выключено*.\
При выключении комиссии в расчёт не включаются.

**Профиль**:

* **Bybit деривативы** — maker **0.02 %**, taker **0.055 %** (подставляются автоматически).
* **Кастом** — ручной ввод:
* **Maker, %**
* **Taker, %**

**Режим исполнения**:

* **Обе стороны — taker**
* **Обе стороны — maker**
* **Вход maker, выход taker** *(по умолчанию)*

**Включать комиссии в TP/SL**:

* **Нет — только в PnL**\
  TP/SL считаются «по чистым уровням», комиссия списывается отдельно.
* **Да — корректировать цели**\
  Уровни TP/SL **смещаются**, чтобы «после комиссий» результат соответствовал введённым %.

***

#### 4) Фандинг

**Режим фандинга**:

* **Выключено** — фандинг игнорируется.
* **Дискретный (только в момент события)**\
  Если позиция открыта **на момент события**, списывается/начисляется **полная ставка** за событие.
* **Средняя ставка × число событий**\
  Берётся **средняя ставка** за весь период истории и умножается на число событий, попавших внутрь интервала сделки. Быстро и сглаженно.

**Использовать mark‑price ставки** — включить, чтобы опираться на ставки, рассчитанные по **mark‑price**.

**Ставок загружено** — количество событий в выбранном интервале.

**Средняя ставка, % / событие** — средняя ставка за событие (в процентах).

**Знак начисления**

* При **положительной** ставке **лонги платят**, **шорты получают**.
* При **отрицательной** — наоборот.

***

#### 5) Диапазоны параметров

Каждый параметр задаётся **min / max / step**. Все комбинации перебираются.

* **Base — базовый объём (USDT)**\
  Стартовый объём в серии.
* **Mult — множитель**\
  Во сколько раз увеличивать объём после **каждого SL**.\
  Объём ограничивается сверху — см. **K** и **MaxVol**.
* **TP %** — тейк‑профит, в процентах.
* **SL %** — стоп‑лосс, в процентах.
* **K — количество переворотов**\
  Максимальная длина серии. На каждом SL: `dir *= -1`, `vol = min(MaxVol, vol * Mult)`.\
  При достижении предела — серия помечается как **Fail (SL)**.
* **Воркеров (параллельность)**\
  Сколько потоков использовать. Выбирайте 4–8 на средних ПК.\
  Больше потоков — быстрее, но выше нагрузка на ЦП.

**MaxVol (расчётный)**

* при `K = 1`: `MaxVol = Base`;
* иначе приблизительно: `MaxVol ≈ Base × Mult^(K-1)` (берётся фактическое достигнутое значение в симуляции).

***

#### 6) Старт, план и прогресс

* **Старт** — запуск загрузки свечей (или кэша) и перебора сетов.
* **Всего комбинаций** — «план» — точное число проверяемых комбинаций.
* **Прогресс** — линия с процентом.\
  На финальной сортировке отображается «шашечный» узор — это нормально.
* **Статус** — текущая стадия: «Загрузка свечей…», «Перебор…», «Готово…».
* **Диапазон** — временной интервал истории и фактическое число свечей.

При выборе **нескольких пар** в статусе видно, какая пара сейчас обрабатывается; результаты всех пар сводятся в одну таблицу.

***

#### 7) Результаты, метрики, детали

**7.1. Таблица TOP‑10**

Показывает десять лучших строк по выбранному критерию. Колонки:

* **#** — место в рейтинге.
* **Пара** — символ инструмента.
* **Base (USDT)**, **Mult**, **TP**, **SL**, **K**.
* **K\_used** — максимальная достигнутая глубина в серии.
* **Deals / TP / SL** — количество сделок, TP и SL.
* **WR %** — win‑rate.
* **Fail (SL)** — число серий, где дошли до предела и завершились SL.
* **MaxVol (USDT)** — максимальный рабочий объём.
* **ROI %** — `Profit / MaxVol × 100`.
* **Профит** — суммарный PnL.
* **DD $** — абсолютная просадка (минимум накопленного PnL).
* **DD %** — `|DD $| / MaxVol × 100`.
* **Детали** — переход к подробному отчёту.
* **Конфигурация** — копирование JSON для X‑Bots.

**Подсветка риска** — см. правила в разделе «Кэш и риск‑алерты».

**7.2. Детали результата**

**Карточки метрик**:

* **Profit**, **ROI %**, **DD $**, **DD %**, **Recovery‑Factor**.
* **MaxVol**, **K\_used**.
* **Сделки**, **TP сделок**, **SL сделок**, **Win‑rate %**.
* **Фандинг, USDT**.
* **Cycles (всего)**, **TP cycles**, **F‑серии (Fail = SL)**, **Незавершённые серии (Tail)**.
* **Avg depth**, **Max depth**, **F‑Avg depth**, **F‑Max depth**.
* **Средний / Медианный PnL**, **StdDev PnL**.
* **Макс. подряд TP / SL**.
* **P95 drawdown** — 95‑й перцентиль просадки.

**Графики**:

* **Equity‑кривая** — накопленный PnL по сделкам.
* **Месячный PnL** — столбцы по месяцам.
* **Гистограмма PnL** — распределение по сделкам.

**Месячная сводка** — таблица `месяц → суммарный PnL`.

**Сделки** — карточки:

* тип (**TP/SL**), время;
* **dir** (long/short);
* **entry / exit**;
* **vol (USDT)**, **qty**;
* **fees**, **funding**;
* **pnl**.\
  Есть пагинация (≈40 сделок на страницу).

***

#### 8) Экспорт в X‑Bots

Кнопка **«Копировать конфигурацию»** формирует JSON:

* **positionSide** = выбранное **старт‑направление**.
* **takeProfit.value** = `TP / 100`.
* **stopLoss.value** = `SL / 100`.
* **stopLoss.budgetMultiplier** = `Mult`.
* **safety.baseOrderAmount** = `Base`.
* **safety.baseOrderMaxAmount** = округлённый `MaxVol`.
* В имени автоматически вставляются **пара** и **дата/время**.

Скопируйте JSON → вставьте в импорт **X‑Bots** → при необходимости поправьте → сохраните и запустите.

### Рекомендации по практике

1. **Стартуйте узко.** С маленькими диапазонами и крупными шагами. Нашли область интереса — **сузьте** вокруг неё и уменьшите шаги.
2. **Следите за MaxVol.** Это ваш «потолок» риска. Высокий MaxVol увеличивает Profit, но и **DD** тоже растёт. Сверяйте с реальным бюджетом.
3. **Смотрите на связку метрик.** Profit/ROI сам по себе мало что говорит. Сравнивайте с **DD %**, **Recovery‑Factor**, **depth**, **Fail (SL)**.
4. **Проверяйте устойчивость.** Прогоняйте на **других периодах** (другая волатильность, тренды/флэты). Хорошие сеты остаются «в строю».
5. **Издержки включайте на верификации.** На прикидке можно отключить комиссии/фандинг; перед внедрением — **включите** и убедитесь, что картина не «ломается».
6. **Не гонитесь за экстремальными глубинами K.** Большой K тянет за собой экспоненциальный рост MaxVol и рисков. Лучше найти компромисс.
7. **Несколько пар** гоняйте **последовательно** и сравнивайте итоги построчно, пока не нужен «портфельный отчёт».

***

### ⚙️ Количество потоков (воркеров)

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

#### Что это такое

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

#### Как выбрать

🔢 В поле **"Потоков"** вы можете задать, сколько параллельных задач запустить:

* На большинстве ноутбуков и ПК 4–8 потоков работают стабильно.
* Если не уверены — укажите **4** как универсальное безопасное значение.
* Если знаете, сколько ядер у вашего процессора — можно указать это число (например, 8).

#### Рекомендации

* **Больше потоков — быстрее расчёт**, но и выше нагрузка на устройство.
* **Если браузер начал тормозить** — уменьшите количество потоков и попробуйте снова.
* На **мобильных устройствах** или слабых ноутбуках используйте 2–4 потока.
* Не запускайте несколько вкладок с тестером одновременно — это снижает эффективность.

💡 Если оставить поле пустым или указать некорректное значение — система может не начать перебор. Убедитесь, что указано положительное целое число (1, 2, 4, 8...).

### Ограничения и допущения

* Тайм‑фрейм — **1m**.
* Данные — **Bybit Linear, USDT**.
* Исполнение — **без проскальзывания/спреда** (используются уровни из свечи).
* Кэш хранится локально и живёт **около 30 минут**.
* При выборе нескольких пар расчёт идёт **по очереди**, сводного портфельного отчёта пока нет.

***

### FAQ

**Свечи не загружаются.**\
Проверьте тикер. Если он верный — подождите 30–60 секунд и повторите. Публичный API может временно ограничивать частоту запросов. При необходимости включите «Игнорировать кэш».

**Можно выбрать другой тайм‑фрейм?**\
Нет. 1‑минутный ТФ оставляет максимально точную логику для реверса и выбора TP/SL.

**Почему строка в таблице подсвечена?**\
Сработало правило риска: `DD %` выше порога, или `TP cycles` ниже минимума, или был **Fail** на пределе глубины (`F‑Max depth ≥ K-1` и `Fail > 0`).

**Что означает Fail (SL)?**\
Серия дошла до предельной глубины, увеличить объём дальше нельзя — и серия завершилась **SL**.

**Зачем режим фандинга «Средняя ставка × число событий»?**\
Быстрый и сглаженный способ оценить влияние. Если результат устраивает — перепроверьте «Дискретным» режимом.

**Как ускорить работу?**\
Снизить период/число свечей, сузить диапазоны, уменьшить число параметров, подобрать разумное число **воркеров** (обычно 4–8), использовать кэш.

***

### Словарь метрик

* **Profit** — суммарный PnL (USDT).
* **ROI %** — `Profit / MaxVol × 100`.
* **DD $** — минимальное значение накопленного PnL (по модулю — глубина просадки в деньгах).
* **DD %** — `|DD $| / MaxVol × 100`.
* **Recovery‑Factor** — `Profit / |DD $|`.
* **Deals / TP / SL** — сделки всего / успешные / убыточные.
* **WR % (Win‑rate)** — `TP / Deals × 100`.
* **Cycles** — количество серий (вход → TP/SL).
* **TP cycles** — число серий, закрывшихся TP.
* **Fail (SL)** — число серий, дошедших до предельной глубины и завершившихся SL.
* **Tail** — незавершённые на конце истории серии.
* **Avg depth** — средняя глубина серий.
* **Max depth** — максимальная глубина.
* **F‑Avg / F‑Max depth** — средняя/максимальная глубина среди неудачных серий (Fail).
* **K\_used** — фактически достигнутая максимальная глубина.
* **MaxVol** — максимальный рабочий объём в серии.
* **fundTotal** — суммарный фандинг (USDT).
* **mean/median/std** — средний/медианный/стандартное отклонение PnL по сделкам.
* **maxTPS / maxSLS** — максимальные серии подряд по TP/SL.
* **P95 drawdown** — 95‑й перцентиль просадки по equity.

***

### История версий

#### 1.7

* Комиссии (maker/taker), режимы исполнения, опция «включать в TP/SL».
* Фандинг: **«Дискретный»** и **«Средняя ставка × число событий»**, mark‑price.
* Расширенные метрики: win‑rate, средние/медианные/стандартное отклонение PnL, max подряд TP/SL, P95 DD, Recovery‑Factor, глубины серий.
* Графики: **Equity**, **месячный PnL**, **гистограмма PnL**.
* **Кэш свечей** с сжатием, ускорение повторных прогонов.
* **Пресеты**, **ссылки‑пресеты**.
* **Риск‑алерты** с подсветкой.
* **Периоды / Диапазон дат** и **модальный выбор пар**.
* **Параллельные воркеры**.

#### 1.6

* Фиксированный TF 1m.
* Улучшенная сортировка по DD %.
* Месячные сводки, пагинация.
* Кнопка «Копировать конфигурацию».
* Предустановленные значения для быстрого старта.

***

### Дорожная карта

Ниже — направления, **которые ещё не реализованы** (всё добавленное в 1.7 из прежнего плана уже выполнено).

#### Ближайшие релизы

* **Портфельные отчёты**
  * Сводные метрики по набору пар: суммарный Profit, агрегированные DD %, сводные графики, корреляции месячных PnL.
* **Walk‑Forward / Out‑of‑Sample**
  * Деление истории на окна «обучение/тест», отчёт устойчивости по окнам.
* **Теплокарты параметров**
  * 2D‑heatmap (например, TP × SL или Base × Mult) с метрикой по цвету.
* **Отчёты**
  * Генерация HTML/PDF с ключевыми графиками и таблицами.
* **Публичный шаринг**
  * Публичная ссылка на отчёт (по желанию, с анонимизацией имени).

#### Ускорение и точность

* **WASM‑ядро**
  * Переписать симулятор на Rust/AssemblyScript → ускорение ×3–×5.
* **Проскальзывание/спред**
  * Модели: фиксированный спред (bps), волатильностная, «только вход», «вход+выход».
* **Ценовая база**
  * Выбор логики исполнения по Last/Mark/Mid, привязка фандинга к mark‑price.
* **Профили бирж**
  * Предустановки комиссий/фандинга/лотов для разных бирж.

#### Автоматизация

* **Headless/CLI**
  * Серверный режим, REST‑API, CLI для пакетных задач.
* **Прямой импорт в X‑Bots**
  * Кнопка «Создать бота» с отправкой через API (по подтверждению пользователя).

#### R\&D

* **Монте‑Карло‑стрессы**
  * Перемешивание последовательностей, бутстрэп‑оценка устойчивости.
* **Границы безопасности**
  * Автостоп перебора при достижении порогов (макс. подряд SL, DD %, время в просадке).
* **Композитные критерии**
  * Взвешенные рейтинги, например:\
    `Score = ROI% – k × DD% – m × DurationP95`.
* **Портфельный оптимизатор**
  * Подбор наборов сетов с целевой метрикой и ограничениями на суммарную просадку.
* **Капитал‑менеджмент**
  * Сценарии распределения капитала между ботами/сетами.

Обратная связь

Если есть идеи или вопросы — напишите в поддержку X‑Bots или оставьте пожелания в сообществе. Предложения по метрикам и улучшениям приветствуются.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://xbots.gitbook.io/x-bots.io/torgovlya/reverse-backtester-rukovodstvo.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
