

В этом видео рассмотрим один из способов узнать оптимальное соотношение объёмов между роботами. Ансамблирование объёмов, которое можно делать вручную в журнале OsEngine. Эта информация актуальна, если вы торгуете несколькими роботами одновременно.
VK Видео:
RuTube:

Как не попасть на «логические ошибки тестирования» и сделать робота правильно.
Заметка про то, как организовать логику робота, если Вы собираетесь вести большие тесты на свечных данных, а так поступают (или должны бы поступить) 95% всех, кто торгует роботами.
В общем, тема важная.
Основной её тейк такой: Если делаешь робота для тестов на свечках, старайся делать всю логику в событии завершения свечи.
И далее почему.
Отдельно на этом остановлюсь. И Арбитражи, и скринеры, и ребалансировщики, и тесты на одном инструменте – всё это просто и быстро тестируется на свечных данных.
При этом, если использовать ленту сделок для тестов, сразу же можно напороться на увеличение сложности тестирования в десятки раз (а то и в сотни).
Поэтому, если у тебя не ХФТ, использовать надо для тестов свечи.
В рамках слоя создания роботов есть события, подходящие для создания логики на тестах. В основном это конечно же:

Рассмотрим пример того, как усреднять позицию, выставляя в рынок одновременно несколько ордеров.
Это стало возможно совсем недавно, т.к. камрады из сообщества очень просили. Методы, которыми будем пользоваться для усреднения позиций, называются BuyAtLimitToPositionUnsafe и SellAtLimitToPositionUnsafe. В отличие от старых методов (Без приписки Unsafe), данные методы не убирают предыдущие ордера на усреднение, и можно выставить в рынок множество ордеров.
Точка входа у робота контртредовая на канале Envelops.
Итоговая логика робота на графике выглядит так:
Шорт, прикрытый стоп ордером, выход в плюс через профит, и два лимитных ордера на бирже для усреднения.
На ГитХаб в репозитории OsEngine это находится здесь:
https://github.com/AlexWan/OsEngine
Внутри проекта здесь:

Рассмотрим пример того, как выходить из позиции двумя (вообще можно больше, но в примере 2) лимитными ордерами одновременно.
Это стало возможно совсем недавно, т.к. камрады из сообщества очень просили. Метод, которым будем пользоваться для закрытия позиций, называется CloseAtLimitUnsafe. Отличие от CloseAtLimit такое:
Точка входа у робота контртредовая на канале Envelops.
Итоговая логика робота на графике выглядит так:
Шорт, прикрытый стоп ордером, и два лимитных ордера на бирже для закрытия в прибыль.
На ГитХаб в репозитории OsEngine это находится здесь:

Паттерн позволяет разделить логику тестирования от логики реального входа внутри робота для того, чтобы при входе и выходе не «рисовать свечи» своими большими заявками.
Очень важная заготовка паттерна управления позицией для тех, у кого много денег на счету. В том числе разберём исходный код, чтобы Вы могли модернизировать свои способы входа в реале, опираясь на данные исходники. В примере логика айсберга выделена в отдельный объект и использована многопоточность, но её надо будет переиспользовать без изменений, поэтому не пугайтесь, кто не программист, переиспользовать удастся. Будете входить, как захотите в реале.
Итоговая логика робота на графике в реале выглядит так:
В примере на графике получилось даже зайти лучше, чем если бы мы это делали одним ордером.
Сам робот – классический отбойник от боллинджера с выходом в % по стопу и профиту. Выход также в реале через «кастомный айсберг».
На ГитХаб в репозитории OsEngine это находится здесь:

В этом видео подробно рассмотрим Журнал сделок в OS Engine. А также проведем тесты ГРААЛЬНОГО робота и на его примере подробно объясним, какая нужная информация по тестам (или торговле) записывается в журнал.
VK Видео:
RuTube:

Изменения, баг-фикс и улучшения, которые были внесены в проект за предыдущий месяц.
Приближаемся к продакшен-реди версии. Около нового года можно будет об этом говорить, поэтому фокус смещается на инструкции и удобство работы с проектом для начинающих.
Сам ГАЙД здесь: https://smart-lab.ru/company/os_engine/blog/1024149.php
Он делается для того, чтобы было удобно и быстро искать всё в одном месте. Вся информация по алготрейдингу и созданию торговых роботов, которая Вам может понадобиться в одном месте.
Новое за месяц:


Сегодня рассмотрим пример того, как можно усредняться через отложенные ордера на открытие других позиций.
Данный тип усреднения позволяет в полной мере тестировать торговую логику робота на свечных данных, т.к. использует заявки на усреднение типа BuyAtStop и SellAtStop.
На ГитХаб в репозитории OsEngine это находится здесь:
https://github.com/AlexWan/OsEngine
Внутри проекта здесь:

VK Видео:
RuTube:

В данном посте будем учиться запускать «профилирование» в Visual Studio, чтобы глазами увидеть место самых больших нагрузок у бота.
Ну и в целом заканчиваем нашу минисерию постов про производительность роботов и как делать так, чтобы у Вас никакие очереди не забивались, а роботы работали быстро и качественно.
Профилировка производительности C# — это процесс анализа производительности программы путём мониторинга использования процессора различными функциями и сегментами кода.
Профилируя приложение C#, можно определить, какие части кода занимают больше всего времени процессора и вызывают проблемы с производительностью. Эта информация важна для оптимизации приложения и улучшения его общей производительности.
С точки зрения прикладного:
Профилировка производительности – один из способов запуска проектов на СиШарп (OsEngine), который помогает увидеть «узкие» места в коде, где больше всего расходуется ЦП.
Так проект OsEngine можно запустить в нескольких режимах:

VK Видео:
RuTube:

В данной статье поговорим о проблемах «перегрузки» в пользовательской логике в роботе. Очень условно поговорим про поточную модель OsEngine и о том, почему нельзя нагружать поток робота «лишней» работой или укладывать «Спать».
Для начала давайте взглянем на поток, который отдаёт данные в роботов в реале. Для этого нужно открыть класс AServer. Это вот здесь:


В OsEngine скрипты роботов могут храниться как внутри проекта, так и снаружи, в виде текстовых файлов.
Если роботы (и индикаторы) внутри проекта, то их можно «дебажить» и правит, так что Visual Studio будет помогать.
Если роботы (и индикаторы) как файлы, то их можно очень быстро переносить из версии в версию OsEngine.
И то, и другое имеет свои преимущества и нужно в разные стадии жизни робота. В этой статье поговорим о том, как роботов (и индикаторы) переносить из проекта в скрипты и обратно.
Задача: У Вас есть полностью оттестированный и готовый робот внутри проекта. Например, у Вас есть робот «MyEnvelopeTrend». В проекте он находится здесь:

Прошло большое обновление коннектора ByBit. При помощи реализации механизма контроля ордеров пользователя на бирже убраны некоторые технологические риски.
Что новенького:
Кроме того, напоминаю, что OsEngine и СмартЛабу несколько месяцев назад биржа выдала 20 % скидку на комиссии. Ссылка на регистрацию со скидкой в 20%!
Основная статья-инструкция по ByBit: https://smart-lab.ru/company/os_engine/blog/989307.php
Исходный код подключения: https://github.com/AlexWan/OsEngine/tree/master/project/OsEngine/Market/Servers/Bybit
Удачных алгоритмов!