Модуль BackTest

Модуль BackTest предназначен для тестирования автоторговли и отработки навыков ручной торговли на исторических данных трейдов от разных бирж. Модуль BackTest работает только с PRO версией терминала MoonBot и активируется за Moon Credits.


Важно! В скальпинге нет повторяемости результата при повторном прогоне одной и той же записи рынка!

* Ниже в конце инструкции будет более детальное пояснение этому.


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


Бектест в скальпинге, и в частности в терминале MoonBot, нужен не для повторения результата 1 в 1, а для того, чтобы посмотреть общее поведение стратегий на различных примерах рыночных ситуаций, и настроить их оптимальным образом под них.


Окно BackTest в терминале MoonBot вызывается через Меню - BackTest и выглядит следующим образом (примеры для скачивания архивов с бирж Binance Futures Daily и Gate Spot Montly):

Окно BackTest состоит из двух основных областей управления:


1) Верхняя область, которая используется для самого процесса бектеста и включает в себя кнопки: "Выбрать файл", "Старт", "Стоп", "Проводник", "Ножницы", а также шкалу прогресса проигрывания .bin файла. При нажатии на надпись "Help" откроется эта страница нашего сайта с подробной инструкцией использования функционала BackTest.


2) Нижняя область, которая используется для скачивания примеров файлов .bin, а также скачивания файлов .bin с данными от различных бирж и включает в себя две зоны:

а) Зону с кнопкой "Скачать примеры".

б) Зону "Архивы бирж": с меню выбором вида биржи, меню Spot или Futures, меню для выбора скачивания архива за день (Daily) или за весь месяц (Montly), поле для выбора монеты, меню для выбора конкретной даты или месяца, кнопки "Скачать данные" со шкалой прогресса скачивания данных.

После нажатия на кнопку "Скачать данные" правее шкалы прогресса скачивания данных будут появляться записи вида: прогресс скачивания архива (Recvd 1 / 183 Mb ... Recvd 183 / 183 Mb), распаковки архива (unpack data..), парсинга данных по дням (Parsing 01.07.2025...Parsing 31.07.2025). После успешного завершения всех операций появится надпись "Done".


Если указать неверное название монеты или дату, за которую нет архивных данных на бирже, то при нажатии на кнопку "Скачать данные" возникнет надпись "Not Found", то есть, что архивные данные для скачивания не обнаружены.

Скачивать данные с Binance Spot можно, начиная с 17-08-2017 (первый доступный файл Binance_BTC_spot 17-08-2017.bin).

Скачивать данные с Binance Futures можно, начиная с 01-01-2020 (первый доступный файл Binance_BTC_futures 01-01-2020.bin).

Скачивать данные с Gate Spot можно, начиная с 01-01-2018 (первый доступный файл Gate_BTC_spot 01-01-2018.bin).

Скачивать данные с Gate Futures можно, начиная с 16-11-2019 (первый доступный файл Gate_BTC_futures 16-11-2019.bin).


Нижнюю область окна BackTest можно скрыть, если нажать на кнопку “...” (троеточие) для светлых тем или на кнопку "Hide" для темных тем.


Бектест осуществляется с помощью проигрывания файлов с записями в них исторических данных трейдов, файлы с этими данными имеют расширение .bin. Где их можно взять:


1)   Нажать на кнопку "Скачать примеры" и скачать заранее подготовленные примеры волатильных фрагментов графиков монет с расширением .bin с нашего сервера, которые будут сохранены в папку BackTest (эта папка создается терминалом MoonBot автоматически в своём корневом каталоге). В данный момент в папку BackTest сохраняются следующие примеры файлов с расширением .bin:

Demo_BANANAS31 09-07-2025 10-18.bin

Demo_GMX 09-08-2025 23-14.bin

Demo_GMX 10-08-2025 06-33.bin

Demo_HAEDAL 21-05-2025 17-04.bin

Demo_LA 11-08-2025 00-39.bin

Demo_LAYER 10-08-2025 05-39.bin

Demo_REQ_05-21-04-23-57.bin

Demo_TREE_07-29-17-16-05.bin


2)   Скачать суточные архивы с разных бирж в нижней области окна BackTest (для этого нужно выбрать биржу, рынок, пару, день или месяц целиком, нажать кнопку “Скачать данные”, после чего файлы .bin будут скачены и сохранены в папку BackTest, в подпапку вида “LTC-2025-07” (монета-год-месяц). Данные с биржи Binance можно скачивать как по одному конкретному дню (Daily), так и за месяц целиком (Montly), а для биржи Gate можно скачивать данные только за месяц целиком (Montly).


3)   Также можно использовать готовые файлы .bin из папки Logs или Logs\Important, где они сохраняются автоматически терминалом MoonBot в результате сделок в отчете, то есть когда вы ранее открывали сделку в отчете в окне Pump Chart, то для просмотра сделки на графике в статичном виде использовался такой .bin файл из папки Logs, а теперь его же можно использовать для проигрывания на графике с через окно BackTest.


Также, из длинных записей исторических данных трейдов в .bin файлах можно вырезать только интересные и более короткие фрагменты, которые будут нужны для быстрого тестирования определенных стратегий. Для этого нажмите кнопку "Проводник", выберите в нужной папке файл .bin, нажмите на Ок и он откроется в статичном виде в окне Pump Chart. Затем в окне BackTest нажмите кнопку “Ножницы”, с зажатой клавишей Ctrl кликните левой кнопкой мышки на графике монеты на начало первого фрагмента, потом проведите мышкой до окончания второго фрагмента, при этом выделяемая зона будет отмечаться зеленой прямоугольной областью, а затем на финальном месте отпустите левую кнопку мышки. После этого терминал предложит сохранить выделенный фрагмент в отдельном файле .bin в папку BackTest, который можно будет далее использовать для бектеста.


С помощью кнопки "Ножницы" таким же образом можно вырезать интересные фрагменты и сохранять их в файлы .bin на графиках монет главного окна терминала или на графиках в Chart окнах, но только до превращения их в мини свечи.


Последовательная запись и сохранение нескольких файлов .bin в один с помощью окна BackTest:

Если у Вас есть разные фрагменты графика с историческими данными по одной монете записанные в разное время, условно файлы BTC1.bin и BTC2.bin, то их можно соединить в один .bin файл. Для этого в окне BackTest проделайте следующие операции:

1) Нажмите на кнопку "Выбрать файл", чтобы выбрать первый фрагмент BTC1.bin.

2) Нажмите на кнопку "Старт" и проиграйте первый фрагмент BTC1.bin на графике монеты.

3) Нажмите на кнопку "Выбрать файл", чтобы выбрать второй фрагмент BTC2.bin.

4) Нажмите на кнопку "Старт" и проиграйте второй фрагмент BTC2.bin на графике монеты.

5) Нажмите на кнопку "Ножницы" и далее с зажатой клавишей Ctrl кликните левой кнопкой мышки на графике монеты на начало первого фрагмента, потом проведите мышкой до окончания второго фрагмента, при этом выделяемая зона будет отмечаться зеленой прямоугольной областью, а затем на финальном месте отпустите левую кнопку мышки.

6) После этого в терминале появится окно с уведомлением вида:

Warning

Шеф, сохраняем фрагмент графика ВТС, интервал с 14:58:37 по 15:03:06 (269 сек) в файл BackTest\*.bin ?

Да / Нет

7) После подтверждения сохранения файла он будет записан в папку BackTest\Demo_BTC 23-08-2025 14-58.bin

Расшифровка обозначений в файле .bin:

Demo - приставка, указывающая, что это демонстрационный файл.

BTC - имя монеты, на которой были записаны исторические данные трейдов.

23-08-2025 - дата записи файла (23 августа 2025г.).

14-58 - часы и минуты начала записи файла (в 14 часов 58 минут).


"Склейка" нескольких фрагментов графиков в окне Pump Chart с помощью окна BackTest:


"Склейка" нескольких фрагментов графиков - это недокументированная функция в терминале MoonBot. Для этого, при открытом окне "BackTest", откройте через Меню - Trades History или с помощью нажатия на кнопку "Проводник" последовательно 2 или более файлов .bin с названием одной и той же монеты. В этом случае трейды из нового файла будут добавляться к предыдущему графику, а не затирать его. Для "склейки" нужно подбирать фрагменты графиков без пробелов и, если, например, у Вас файлы .bin нарезаны в среднем по 10 минут, то их нужно склеивать через 7-9 минут.


Внимание! Проигрывать файлы .bin от разных монет, которые есть на бирже на одном графике нельзя и соответственно нельзя последовательно записать их или "склеить", то есть каждый файл .bin будет проигрываться строго на графике своей монеты.

Если оба файла .bin принадлежат монетам, которые удалены с биржи, например Coin1Delist.bin и Coin2Delist.bin, то их можно проиграть на маркете ETH и соответственно последовательно записать или "склеить" данные от них, так как для проигрывания файлов .bin делистнутых монет всегда используется график монеты ETH.


После окончания подготовки .bin файлов с записью исторических данных трейдов для удобства можно свернуть нижнюю область окна BackTest кнопкой “…” или "Hide" и оставить только верхнюю область загрузки и проигрывания .bin файлов для проведения бектеста.


Для запуска бектеста:


Нажмите на кнопку "Выбрать файл", откроется проводник, из нужной папки выберите файл .bin, например BackTest\Demo_LA 11-08-2025 00-39.bin и нажмите Ок. Название этого файла появится в окне BackTest.


Подготовьте и активируйте стратегии, которые будут участвовать в бектесте, включите в терминале общий режим "ЭМУЛЯТОР " через Меню - Режим эмуляции и кнопку Autodetect: ON.


Нажмите кнопку “Старт” в окне BackTest.


Начнется воспроизведение записи исторических данный трейдов из файла Demo_LA 11-08-2025 00-39.bin и сразу откроется график монеты LA, данные по которой были записаны в этот файл .bin. Если этой монеты уже нет на рынке, то проигрывание записанного графика будет осуществляться всегда на графике монеты ETH.


За прогрессом проигрывания файла .bin можно следить по шкале под названием файла в окне BackTest.


Проигрывание файла .bin можно остановить в любой момент с помощью нажатия кнопки "Стоп" в окне BackTest.


При повторном нажатии на кнопку "Старт" в окне BackTest выбранный ранее файл .bin будет проигрываться сначала.  

Внимание!

Если общий режим в терминале MoonBot не был переведён вручную в общий режим ЭМУЛЯТОР, а случайно остался реальным, то после нажатия кнопки “Старт” в окне BackTest терминал автоматически включит защиту и переведет общий режим в ЭМУЛЯТОР, чтобы при бектесте не выставлялись ордера с реальным депозитом.

Если при проигрывании файла .bin попытаться вручную перевести общий режим терминала из ЭМУЛЯТОР в реальный, то сработает другая защита, а именно в окне BackTest нажмется кнопка "Стоп", проигрывание файла .bin прекратиться и на графике монеты пойдут реальные трейды.


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


В отличие от классических алгоритмов на свечах, где все цифры всегда четко заданы, и можно 10 раз посчитать "2+2=4" и получить

всегда одинаковый результат "4" - у нас в скальпинге цифры случайны!


Причины случайности, которые разобраны ниже на примере двух терминалов MoonBot, которые торгуют одну пару одновременно с одинаковыми настройками, с двух разных выделенных серверов (VDS):


1) Лаг трейдов. 1 терминал получил трейды на 10мс позже другого, и подставил свой ордер на 10мс позже, и дальше ситуация пошла развиваться по полностью другому сценарию: первый терминал купил и продал в плюс, а второй терминал купил позже, НЕ продал в том же месте, и закрыл сделку по стопу. Чем более активен рынок, тем больше выражен этот фактор. Самый яркий пример – это стратегия “MoonStrike”, где в одной и той же ситуации один терминал успевает купить, а другой - нет.

Бектест работает в режиме ЭМУЛЯТОР и специально имеет встроенный фактор случайной задержки, чтобы эмулировать эту ситуацию. 


2) Пересчет всяких параметров не происходит непрерывно в силу дискретности. То есть первый терминал посчитал что-то, второй раз он посчитает новое состояние рынка через время T1. Второй терминал делает такой же расчет чуть в другое время T2, даже 1мс разницы приведет к тому, что в расчет попадет уже новый трейд и результат расчета для второго терминала будет чуть другим. Другие расчетные цифры приведут к другим параметрам ордера, или отсутствию детекта на втором терминале.

Фактор дискретности также имеется и в бектесте, так как момент нажатия на кнопку “Старт” не синхронизирован с циклами пересчета рынка.


3) Аналогичные вещи происходят с Sell ордером, если вы используете те или иные алгоритмы управления Sell ордером, например: PriceDown (снижение Sell ордера по времени), SellLevel (подстройку Sell ордера под предыдущий максимум цены), SellShot (следование Sell ордера в заданных коридорах значений), SellSpread (подстройку Sell ордера под спред цены) и даже StopLoss. Сама операция перестановки Sell ордера не мгновенна. Разные моменты перестановки Sell ордера могут привести к разным итоговым ценам закрытия. В бектесте есть эмуляция времени перестановки ордера: случайная задержка 10-20мс, как и на реальной бирже.