В этой статье подробно рассмотрим Tester Light.
Открываем OsEngine:
Из главного меню запускаем Tester Light:
Попадаем в окно настроек тестера:
Для начала разберемся, как работает эмулятор биржи. Что ему можно подавать на вход и как настраивать бумаги. Нажимаем на кнопку «Connection servers»:
Появится панель управления ходом тестирования. Она пригодится для подачи данных в тестер. А пока нажмём на кнопку «More settings»:
Чтобы запустить тестирование, необходимо подключить исторические данные нужного нам тикера.
Источник.
В Os Engine существует два способа подключения исторических данных, которые можно увидеть, если нажать на значок стрелочек:
- Set.
- Folder.
Set — модуль для скачивания и хранения исторических данных свечей, тиков и срезов стакана с помощью коннекторов.
Если используется этот способ трансляции данных, то в строке выбора тестируемого инструмента «Sets»:
- Жмем на стрелочки.
- Выбираем сет данных из тех, которые вы уже скачали.
Folder – загрузка заранее скаченных или собранных вручную данных из папки. Необходимо указать путь к папке со скаченными тикерами с помощью кнопки «Find in folder». В папке можно хранить только тикеры одного таймфрейма.
Вы можете скачивать данные в любую папку своего компьютера.
- Открываем нужную папку. Выбираем папку с таймфреймом.
- Жмем «Ок».
Данные хранятся в текстовых файлах, как в примере:
Данные появляются в строке:
«Translation type» содержит 5 разных видов данных, которые служат для различных задач и помогают улучшать результаты оптимизации.
- Жмем на стрелочки.
- Выбираем нужный вид данных.

- Candle — готовые свечки.
- TickAllCandleState – тики и все изменения свечей.
- TickOnlyReadyCandle – тики, а свечи только по их завершению.
- MarketDepthAllCandleState – стаканы и все изменения свечей.
- MarketDepthOnlyReadyCandle – стаканы, а свечи только по их завершению.
Тикеры станут видны ниже под настройками после выбора данных и успешной их подгрузки.
Период, за который берутся данные, выставляется автоматически.
Добавление робота.
Возвращаемся в основное меню тестера и жмем на кнопку «Добавить бота»:
Открывается панель «Создания робота»:
1. «Name» — в эту строку вписываем любое имя выбранного робота. В дальнейшем его нельзя будет изменить.
2. «Location» — нажимаем на стрелочки, выбираем место создания робота (3).
- «Script» — при выборе открывается список роботов, которых вы написали или добавили самостоятельно. Также здесь есть множество примеров бесплатных готовых скриптов. Пользуйтесь!
- «Include» — встроенные бесплатные роботы, которыми так же можно воспользоваться.
Весь список роботов, которые есть в наличии, можно пролистывать колесиком мыши или бегунком.
Можно воспользоваться поиском, если нужно найти определенного робота или скрипт.
- Введите название или одно слово из названия.
- Стрелками перелистывайте страницы, в которых встречается слово, которое вы ввели в строке поиска.
- Количество страниц, на которых встречается это слово.
- «Accept» — кнопка подтверждения выбора.
Если все сделано правильно, то робот появится в строке:
Удаление роботов.
Если вы хотите удалить робота, которого ранее добавили в тестер, то жмем кнопку «Delete».
Всплывет окно подтверждения действия:
- «No» - отменяет выбранную команду.
- «Accept» — подтверждает выбранное действие.
Роботы могут быть как с параметрами, так и без. Если бот, которого вы добавили в тестер, не имеет параметров, то при нажатии на кнопку — «Parameters», всплывет окно оповещения о том, что параметры отсутствуют, и вы просто пропустите этот пункт настроек:
Поскольку у нас в примере робот с параметрами, то при нажатии на кнопку «Parameters» у нас появляется соответствующее окно, в котором мы задаем настройки:
- Настраиваем базовые настройки и дополнительные, если они есть.
- Меняем режим с «Off» на тот, который нам нужен.
- После выполнения всех нужных действий жмем «Accept».

Чарт.
Далее идем в «Control»:
Чтобы робот подключился к серверу и начал получать данные, надо нажать на кнопку «Data settings»:

1. Тип комиссии имеет три режима:
- None — не учитывать комиссию.
- OneLotFit — комиссия по лотам.
- Persent — комиссия в %.
2. Значение комиссии для каждой биржи индивидуально.
3. Класс бумаг. Фильтр для следующего поля. Выбираем нужный нам класс.
4. Инструмент, данные по которому будут браться, и которые мы будем тестировать. Ставим галочку.
5. TimeFrame – временной интервал.
6. Accept — кнопка подтверждения.

Риск-менеджер.
Эта функция позволяет следить за просадкой.
Вызывая Risk manager, можно настраивать работу этой функции.
Здесь можно установить роботу лимит убытков на день и тип реакции на этот убыток.
Сопровождение позиций.
Для любой позиции, открытой в рамках робота, можно назначить стандартные способы по ее сопровождению.
Разберем подробно появившееся окно:
1. Stop.
- Обычный стоп приказ, который будет выставлен по реальной цене входа в позицию ± величина «От входа до Стопа». Дополнительно можно выставить проскальзывание, с которым в систему будет выставлен конечный ордер на покупку/продажу.
2. Position closing. 6. Position opening.
- Этими параметрами можно регулировать то, сколько времени есть у заявки на исполнение. По прошествии этого времени заявка с биржи отзывается.
- Если это заявка на открытие, то в случае полного неисполнения такая позиция бракуется. Если заявка исполнилась частично, то такая позиция считается открытой.
- Макс откат от цены — расстояние в пунктах, на которое цена может «уйти» от цены ордера, после чего ордер будет отозван.
- Если заявка отзывается у ранее открытой позиции, то получается, что закрытие не сработало. В таком случае лучше воспользоваться блоком ниже.
3. Close order reject.
- Бывает такое, что у позиции отзывается или не срабатывает заявка на закрытие. Например, не сработал стоп приказ, так как рынок ушёл от него.
- На этот случай можно выставить реакцию. Market закроет Вашу позицию по рынку. Limit закроет её лимитным ордером с выставленным заранее проскальзыванием.
4. Profit.
- Обычный профит приказ, который будет выставлен по реальной цене входа в позицию ± величина «От входа до Профита». Дополнительно можно выставить проскальзывание, с которым в систему будет выставлен конечный ордер на покупку/продажу.
- Макс откат от цены — расстояние в пунктах, на которое цена может «уйти» от цены ордера, после чего ордер будет отозван.
- Если заявка отзывается у ранее открытой позиции, то получается, что закрытие не сработало. В таком случае лучше воспользоваться блоком ниже.
5. On/Off.
- Ставим галочки там, где хотим, чтобы учитывалось в тестах.
7. Values type – можно выбрать абсолют, шаг цены и проценты.
8. Accept – подтверждаем все настройки.
Построение индекса.
Если в логике робота прописан индекс (в примере на картинке ниже у нас OneLegArbitrage), то чтобы он работал, нужно его добавить и записать формулу, по которой он будет рассчитываться.
Идем в «Настройки данных». Обратите внимание, что у робота 2 вкладки. Если включить вторую вкладку и нажать кнопку Data settings, то всплывет окно стандартных настроек. Здесь нам нужна первая вкладка. В открывшемся окне жмем на «+».
1. Портфель для операций.
- Жмем на стрелочки и выбираем «GodMode».
2. Класс бумаг.
- Снова жмем на стрелочки и выбираем «TestClass».
3. Выбрать инструменты можно вручную, поставив галочки напротив тех, что будем использовать.
4. Если поставить галочку в окошке «Select all», то выберутся все инструменты из списка.
5. После того, как выполнили все необходимые операции, жмем на кнопку «Accept».
Выбранные бумаги добавились, теперь:
При добавлении бумаги ей присваивается номер индекса. Это уникальное имя будет использоваться в формуле.
Пишем формулу расчета (может отличаться от приведенного примера).
Жмем «Accept».
Если нужно удалить бумагу из списка, жмем на «-»:
Закрываем это окно и переходим во вторую вкладку (1).
2. Заходим в Data Settings, открывается окно настроек.
3. Выбираем инструмент, которым будем торговать — тот, что мы задействовали в нашей формуле, которую писали в настройках в первой вкладке.
Для двуногого арбитража выбираем 2 торгуемых инструмента.
Таким образом нужно добавить всех роботов, которыми вы планируете торговать индексный арбитраж.
Запуск тестирования.
Для того, чтобы начать тест, идем в «Connection Servers»:
Открывается Эмулятор биржи:
1. Нажатие на кнопку «Start test» начинает тестирование с самого начала. В этот момент в эмуляторе стираются все Ваши старые позиции. Портфель приходит в исходное состояние. Начинается побаровая/потиковая подача данных из сервера.
2. Кнопка «>>>>>>» позволяет включить тестирование в режим перемотки. В этом режиме все визуальные представления панели исчезают. В этом режиме тестирование идёт в десятки раз быстрее, так как прорисовка элементов является самой тяжелой в роботе.
3. Кнопка «||» - останавливает на паузу и запускает процесс подачи данных.
4. Кнопка «+1» - подгружает одну свечку и переходит в состояние паузы.
5. Кнопка «>> next pos» - переход к следующей сделке.
6. Кнопка «>> go to» – позволяет перейти к интересующей нас дате:
Ставим нужную дату с помощью календаря, либо передвигаем оранжевый бегунок и жмем «Accept».
Журнал.
Всю статистику по тестам можно посмотреть в журнале. Журнал доступен по нажатию кнопки «Journal» в главном меню:
Эквити.
Открываем журнал и попадаем во вкладку «Equity». В данной вкладке представлена графическая информация о приросте счета. Отображается общая прибыль, а также отдельно по лонговым и шортовым сделкам:
Слева находится панель, которая позволяет посмотреть изменения в конкретный момент времени:
- При помощи бегунков выставляем нужную дату.
- Нажимаем «Reload».
- И видим, как изменяется наша эквити.
Статистика.
- Profit/Loss — прибыль или убыток в результате всех операций.
- Profit/Loss % — прибыль или убыток в % в отношении капитала.
- Position count — ...
- Average trade time — арифметическое среднее время удержания позиции.
- Sharp ratio - показатель эффективности инвестиционного портфеля, который вычисляется как отношение средней премии за риск к среднему отклонению портфеля.
- Profit Factor – отношение полученной прибыли за определенный временной промежуток к убыткам.
- Recovery – показывает на сколько прибыль превышает глубину максимальной просадки.
- Average P/L 1 contract — усреднённое значение прибыли с движения в абсолютном выражении без учёта объёма. Без учёта объёмов, которыми заходим. Только движение инструмента от входа до выхода.
- Average P/L 1 contract % — усреднённое значение прибыли с движения в процентном выражении без учёта объёма. Без учёта объёмов, которыми заходим. Только движение инструмента от входа до выхода.
- Average P/L classic — усреднённое значение прибыли с движения в абсолютном выражении с учётом объёма.
- Average P/L portfolio % - усреднённое значение прибыли с движения в процентном выражении с учётом объёма, рассчитанный относительно предыдущего значения портфеля.
- Profit positions — ...
- Profitable % — процент прибыльных сделок от общего их числа.
- Average P/L 1 contract — среднее движение инструмента за время нахождения нас в позиции.
- Average P/L 1 contract % — среднее движение инструмента в % за время нахождения нас в позиции.
- Average P/L classic - средняя прибыль с позиции.
- Average P/L portfolio % — средняя прибыль с позиции в отношении портфеля.
- Maximum in a row — количество прибыльных позиции подряд.
- Loss positions — ...
- Loss positions % — процент убыточных сделок от общего их числа.
- Average P/L 1 contract — среднее движение инструмента за время нахождения нас в позиции.
- Average P/L 1 contract % — среднее движение инструмента в % за время нахождения нас в позиции.
- Average P/L classic — средний убыток с позиции.
- Average P/L portfolio % - средний убыток с позиции в отношении портфеля.
- Maximum in a row — количество убыточных позиции подряд.
Просадка.
Вкладка показывает динамику изменения просадки за торгуемый период.
Объем.
Вкладка показывает максимальный торгуемый объем:
Эта вкладка будет полезна для контроля и мониторинга объемов торгов. Это очень удобно, когда подключено множество различных торговых алгоритмов и торговля ведется на различных инструментах.
Открытые позиции.
Вкладка показывает текущие открытые позиции, которые бот ведет в данный момент:
- Bot – название робота, который осуществляет трейд.
- Security – наименование инструмента.
- Dir. – направление сделки Buy или Sell.
- State – текущее состояние трейда.
- Vol – объем сделки, которым бот должен войти в рынок.
- Now – исполненный объем.
- Wait – объем не исполненный, но ожидает исполнения.
- Enter price – цена, по которой бот зашел в позицию.
- Exit price – цена, по которой бот вышел из позиции.
- Profit – вариационная маржа от данного трейда.
- Stop activation – цена активации стоп заявки. После достижения данной цены будет выставлена заявка.
- Stop price – цена, по которой бот исполнит стоп заявку.
- Profit Activation – цена активации профит заявки. После достижения данной цены будет выставлена заявка.
- Profit Price — цена, по которой бот исполнит профит заявку.
Закрытые позиции.
В этой вкладке отображаются все закрытые сделки — таблица всех исполненных трейдов:
Выше был рассмотрен общий журнал. Чтобы посмотреть сведения по каждому отдельному боту, нужно сделать следующее:
- Жмем кнопку «Chart» напротив интересующего нас бота.
Затем:
- «Cointrol».
- «Journal».
Попадаем в журнал нужного нам робота, где можем посмотреть информацию по каждой вкладке так же, как и в общем журнале:
Если нас не устраивает результат, то можно пойти в «Параметры», поменять настройки и снова запустить процесс тестирования.
Но лучше, прежде, чем менять старые настройки, их лучше записать или заскринить, чтобы была возможность сравнить старые и новые настройки, а при необходимости вернуть так, как было.
Удачных алгоритмов!
Комментарии открыты для друзей!
OsEngine: https://github.com/AlexWan/OsEngine
FAQ: https://o-s-a.net/os-engine-faq
Поддержка OsEngine: https://t.me/osengine_official_support
Подробнее https://smart-lab.ru/compan...
















































