Избранное трейдера Великий Нехочух
В данном посте будем учиться запускать «профилирование» в Visual Studio, чтобы глазами увидеть место самых больших нагрузок у бота.
Ну и в целом заканчиваем нашу минисерию постов про производительность роботов и как делать так, чтобы у Вас никакие очереди не забивались, а роботы работали быстро и качественно.
Профилировка производительности C# — это процесс анализа производительности программы путём мониторинга использования процессора различными функциями и сегментами кода.
Профилируя приложение C#, можно определить, какие части кода занимают больше всего времени процессора и вызывают проблемы с производительностью. Эта информация важна для оптимизации приложения и улучшения его общей производительности.
С точки зрения прикладного:
Профилировка производительности – один из способов запуска проектов на СиШарп (OsEngine), который помогает увидеть «узкие» места в коде, где больше всего расходуется ЦП.
Так проект OsEngine можно запустить в нескольких режимах:
В данной статье поговорим о проблемах «перегрузки» в пользовательской логике в роботе. Очень условно поговорим про поточную модель OsEngine и о том, почему нельзя нагружать поток робота «лишней» работой или укладывать «Спать».
Для начала давайте взглянем на поток, который отдаёт данные в роботов в реале. Для этого нужно открыть класс AServer. Это вот здесь:
Часть третья (скорее всего, заключительная)
Начало здесь
Вторая часть здесь
По наветам Тимофея Мартынова пошел слушать в бальный зал №2 Александра Антонова (Mozgovik Research). Он оттараторил, как зарабатывать на понимании мультипликаторов. Говорил четко, все по делу, практически монотонно. Одним словом, недостижимая высота выступления для простого смертного. Все сказанное представляло собой четкий алгоритм. Осталось написать код и наблюдать за приумножением капитала! Но я не успевал осмысливать сказанное, что поделать, куда мне угнаться за молодежью в век скоростей. А им приходится тягаться с роботами, может, поэтому они превращаются в киборгов. Скачаю презентацию и буду вникать на досуге, хотя я ни разу не фундаменталист и не являюсь последователем Бенджамина Грехэма, одним словом, я неразумный инвестор.
Совсем другое дело – следующий спикер, Александр Горчаков, с балладой о том, что делать на падениях цен на рынках. Во всем его образе сквозила интеллигентная меланхолия. Но, я таки поймал момент, когда Александр улыбнулся. В числе его рекомендаций было переходить на фьючерсы, дескать ими торговать дешевле. Одной из проданных идей стало формирование квазиоблигации через покупку акции и продажу фьючерса.
В конце прошлого месяца вёл в школе АЛОР лекции по направлению. Разбирали различные подходы к определению «стадий волатильности». Смотрели, как это делать:
Всего вышло 5ть часовых лекций. Скрипты в комплекте.
Для клиентов АЛОР, торгующих из нашего сообщества, эти лекции доступны бесплатно!
В основном, разбор проблемы динамического выбора бумаг в торги. Я с этим столкнулся ещё в 2022 году, когда реанимировал свои арбитражи на крипте. С тех пор подход улучшается и изменяется. Проблема встаёт ребром на MOEX, т.к. скорость изменения популярных бумаг довольно быстрая, и алгоритмы должны уметь на это реагировать. Ну и бонусом несколько способов определения стадий волатильности по бумагам.
Какие способы я сам проходил, прям по годам пойдём. От самого простого к самому сложному. Постараюсь сэкономить Вам несколько лет жизни на исследованиях.
Примерно год у меня ушёл на то, чтобы «переболеть» переоптимизацией. После того как до меня наконец дошло, что искать нужно закономерности, а не лучший набор параметров для максимизации эквити, алгоритмы стали постепенно получаться. Мои размышления о том, как искать закономерности, нашли подтверждение в книге TradingSystems. ANewApproachtoSystemDevelopmentandPortfolio. К сожалению, она немного на английском, но читается легко и оказалась очень полезной. Многие другие книги, как оказалось, содержат банальные, затасканные мысли, а некоторые слишком сложны для моего понимания.
В результате работы оптимизатора мы получаем огромный массив данных, представленных, как правило, в виде таблицы. Я пользуюсь OsEngine, поэтому поясню на этом примере:Для начинающих наиболее соблазнительным выглядит первый столбец. В нём отсортированы стратегии с самыми прибыльтыми, но, как правило, переоптимизированными результатами. Параметры стратегии подобраны так, чтобы захватить как можно больше самых прибыльных сделок (белых лебедей) на тестируемом периоде.
В данной статье посмотрим робота, который реализован с использованием многопоточного подхода.
Смотрит стаканы поступающих с биржи бумаг, ожидая «Плиту». При этом смотрит то кол-во бумаг, которое Вы в него подключили, как скринер.