Pull to refresh

Comments 61

Спасибо! Приятно, что оценили мой труд)
Да, работа хорошая. У меня лично вообще особая тяга к рассматриванию красивых графиков вещей, в которых я ни черта не понимаю. Что-то такое загадочное в них притягивает, не могу даже объяснить.
Огромное спасибо за статью! есть куда развиваться при разработке ботов для торговли криптовалютам :)
Я подобных тесторов со своей командой много написал для проверки стратегий торговли криптовалютами :)
Только вот визуализации красивой у нас не было — алгоритм по итогам просто выдавал самые оптимальные варианты для стратегий :(

Кстати, подбор параметров для самой прибыльной стратегии (>%40/мес) занял около двух недель на пяти довольно мощных машинах :)
Без визуализации тяжело. Я когда десятый лист в блокноте графиками начал замалевывать представляя себе 9-мерный массив, понял что без нее не обойтись) Да, и поведение алгоритма становится яснее и нагляднее.
Скорость оптимизации зависит от многих параметров. От архитектуры приложений, глубины исторических данных, формы их хранения, от «обвеса» стратегии, вычислительных мощностей и т.д. К тому же оптимизированные параметры действуют ограниченный интервал времени и для многих стратегий эту операцию нужно проводить регулярно.
А на чем вы тестировали? Тики, свечки, стакан? Самописный софт или готовый продукт?
Для многих стратегий :) но выяснилось, что не для всех.

Тестировали на истории тикеров за последний год — поэтому немного много времени заняло.
Все писалось в основном для торговли на срочном и фондовом рынке, но в принципе ничего не мешает использовать эти механизмы для торговли криптовалютой! Алгоритмам все равно торгуем мы биткоинами или фьючерсами на пшеницу)
Тем же увлекаюсь, но с чуть менее математическим подходом. Было интересно прочитать, полностью согласен с последним абзацем — совершенно жутко бесит что практически все реальные торговые терминалы брокеров гордо несут на себе рекламную метку «скриптовый язык для автоматического трейдинга», при этом это такой убогий огрызок которым можно чуть ли не только делить и складывать и все. Хоть бы кто дал хорошие условия трейдинга и API к данным и заключению сделок — вот это был бы разговор…
Про криврукость скриптовых языков можно отдельный пост написать. Скорость ужасная, функционал обрезанный, везде какие-то ограничения. Либо приходится всякие костыли к ним прикручивать и потом уже не можешь разобраться почему ничего не работает!
После этих скриптов я испытал колоссальное удовольствие от всех открывшихся возможностей, когда мне удалось перейти на C# с применением S#. Любые таймфреймы, хоть тики и секунды. Можно делать самые разнообразные графики и таблицы, проводить сложные операции с большими массивами данных на высоких скоростях, всевозможные статистические исследования и т.д. Например, ту же оптимизацию) Так можно пойти дальше и сделать оптимизацию динамической и адаптивной! Но это уже, наверное, в следующих статьях)
Просто добавлю сюда: WLD использует чистый C#, и есть возможность его подключения к VS для отладки стратегий. Поэтому я бы не был таким категоричным ;)
А в целом работа достойная!
З.Ы. Планируете ли открывать в свободный доступ/продавать свое творение?
Вопрос есть: скажите, имеется ли возможность тестирования маржинальной торговли?
WLD на C#, Квик на C#, если не ошибаюсь TSLab тоже на С#. А что толку. Код чужой, закрытый, все равно под API платформы приходится подстраиваться и если у них баги, то вы их будете терпеть и ждать, когда разработчики соизволят их устранить. Это сплошь и рядом. К тому же в WLD серьезные проблемы с таймфреймами до 1 минуты.
Вот маржинального тестирования пока нет, но ничего не мешает его туда прикрутить) Пара формул в расчет статистики и комиссии. В этом вся прелесть своих разработок!
ПО пока не планировал распространять, но в перспективе есть такая идея. Если интересно оставайтесь на связи, если что будем сотрудничать.
Конечно интересно! Сам мучаюсь от различных недостатков разных платформ для тестирования. И Амиброкер ковырял, и ВЛД, про МТ вообще молчу.
Из последнего очень понравился встроенный тестер в платформе JForex Dukascopy. Чистая ява, куча возможностей, и тестирование по реальным бидам и аскам. Пока, правда, у них только валюты, но вроде получили лицензию на фьючи, так что жду с нетерпением.
Меньше полугода назад прошел обучение в StockSharp, тогда я впервые открыл Visual Studio и написал свои первые строчки на С#


Курс за 30 тыс. по С# и библиотеке с открытым API. И через полгода готовая программа уровня профи с 2-3 летним опытом программирования? Талант, что тут скажешь. Ну и ребята из stocksharp тоже молодцы — не стесняются свои продукты рекламировать, пусть даже таким топорным способом.

Ну и по сути — что дала оптимизация? Доходность с ней и без нее на сколько различается?
И через полгода готовая программа уровня профи с 2-3 летним опытом программирования? Талант, что тут скажешь.

Вы мне льстите) На самом деле прошло всего лишь 5 месяцев с момента написания первой строчки в VS! Я вообще не программист и для меня все было в новинку. В начале было сложно, все раздражало, когда не мог самостоятельно разобраться в чем ошибка. Все давалось с большиииим трудом, я буквально затеррорезировал техподдержку Стокшарпа) Можете проверить по истории сообщений на их форуме)
Потом стал более самостоятельным, в Google всегда находился ответ на какое-то программное затруднение. Все таки С# очень распространенный язык программирования.
На самом деле ничего принципиально сложно, просто очень много работы. Каждый день несколько часов уходило на изучение языка, исследования и тестирование программ.
Ну и по сути — что дала оптимизация? Доходность с ней и без нее на сколько различается?

Основное время трейдера всегда уходит на исследование рынка. Оптимизация помогает попасть в правильное русло исследований и двигаться в сторону прибыльных стратегий без траты времени на изучение изначально неудачных стратегий. Доходность, конечно, увеличивает. На то она и оптимизация, чтобы выбрать самое лучшие.
Так самого главного нет — что это все дало на практике? Доходность?
Все зависит от стратегии. Если в ней нет фундаментального начала и логичной системы, то ты ее сколько не оптимизируй, она тебе будет выдавать подогнанный под исторический диапазон вариант. А если стратегия со смыслом, то бесспорно грамотная оптимизация увеличит ее доходность.
Вопрос в том, что именно она дала вам, а не в том, что она может дать при соответствующей фазе луны.
Оптимизация дает мне большой объем статистической информации при исследовании стратегии. После нее я знаю чего ожидать от стратегии, как она себя поведет при различных условиях на рынке. Как ее правильно настраивать в этом многообразии вариантов параметров и прочее. В алготрейдинге это немаловажно.
Серьезный подход :) Сам тоже подобные тестеры писал, только проще, так глубоко в математику не уходил. Про тестеры в торговых платформах — основным конечно недостатком как раз является зоопарк скриптовых языков и свою стратегию, необходимо переписывать на этих языках с их же ограничениями и проблемами.

Планируете свою тулу выкладывать/продавать? Пощупать можно как-то?
Планируете свою тулу выкладывать/продавать? Пощупать можно как-то?

Сейчас многие приложения еще в разработке. Но уже готово приложение для визуализации стратегий «Анализатор», чтобы наглядно по графикам изучить свою стратегию, посчитать статистику. Тестер-оптимизатор «Исследователь» описанный в этой статье(я на него пару месяцев убил). Модуль трехмерной графики. И сейчас с коллегой веду разработку приложения для автоматической загрузки исторических данных с серверов. Чтобы история сама каждый день обновлялась и сохранялась сразу в нужном формате.
А вообще задумок много! Написать свой проторговщик портфеля стратегий, выйти на очень маленькие таймфреймы и т.д. Вообще я изначально пошел по пути создания полного комплекса приложений для алготрейдинга, не только самого торгового робота. Довольно сложный путь. Но пока вроде получается)
Да, в перспективе планирую перевести на коммерческую основу свои разработки. Но пока все по фану! Приятно открывать что-то неизведанное) Если интересно, добавляйтесь в Скайп bond_algotrade.
Какую модель использовали для цены?
Тестер-оптимизатор работает со свечной моделью цены любого таймфрейма. Можно одновременно тестировать сразу по нескольким таймфреймам. С тиками после небольшой подкрутки тоже сможет работать, но в такие диапазоны при наших интернет каналах и глюках QUIKa пока не рискую лезть. Тестировать на них вполне можно, но очевидно дольше.
Я имел ввиду модель реализации цены. Иначе говоря, откуда свечи, что за данные вы квантизируете?
Какие данные зададите, то и будете квантовать. Алгоритм универсальный и позволяет гибко настраиваться. Торговый инструмент — любой. Сохраняете исторические данные по нужному вам инструменту, делаете из них свечи любого таймфрейма. По этим свечкам тестируете в нужном вам диапазоне. В перспективе планирую добавить walk-forward для защиты от переоптимизации для не динамических систем. Оптимизирую в конкретных примерах по матожиданию, хотя можно настроить и другие критерии, в том числе комплексные.
Я имел ввиду модель реализации цены. Иначе говоря, откуда свечи, что за данные вы квантизируете?

Edit: а, тьфу, так вы на исторических данных все это протестировали. А смысл? Тут мне кажется правильный подход чтобы сначала модель под эти данные скалибрировать, там факторы подобрать как надо, и только уже потом можно заниматься реализациями цены. Так это получается труъ Монте-Карло а не слепое применение стратегий к истории, которое чревато, собственно, тем что оно только на истории и работает.
Нет, walk forward это когда имея 10 лет данных вы оптимизируете на первых 9 годах и тестируете на 10м. Более реалистично сначала выделить тот процесс (например в бондах это Васичек, CIR, и другие) который лучше всего отражает действительность. Потом используем этот процесс чтобы сгенерировать много абсолютно случайных реализаций цены, и вот уже на этих данных, а не в коем случае не на исторических, тестируем наш подход.
Полностью с вами не согласен) Хозяин — барин! У каждого свое личное видение рынка)
Прям слеза накатила, нечто подобное делал 7 лет назад для просчета коэффициентов скальперов и прочих роботов.
Тем что в компания встали в очередь дядьки с налом и она проработала пол года с достаточно хорошим «выхлопом», но для более выгодной торговле надо было увеличивать портфель, и мы побоялись ответственности и закончили работу. Все были довольны.
Happy end! Редкость в нашей области! Обычно все заканчивается сливом)))
слив направленный — это надо сделать бота такого еще, что бы он сливал бабло на неверных сделках, хотя в момент слива стоит знак местами поменять, что бы он начал зарабатывать.
На скальперах все упиралось в портфель и акции 2-го эшелона с динамикой по цене
Как, оказывается, всё просто, достаточно знак поменять… а с разницей между покупкой и продажей что делать?
А на это есть спец люди, кто искал валюты/акции с большими колебаниями. скальперу в принципе меньший разброс нужен, но пинг до серваков ММВБ не более 5мс точно нужен
А в чём проблема собственно, там есть колокейшн и производные от оного(если поспрашивать мелких брокеров за всегда договориться можно), я в своё время свою железяку там размещал, ближе некуда а цена не принципиальна если стратегия без рисковая (а ситуация была именно такая)…
… и я бы не сказал что это расходы какие-то неподъёмные
Что-то не так с этим
«подкручивать» или оптимизировать под текущие условия рынка

Как же в таких условиях гарантировать, что выработанный алгоритм не устареет на следующий день после своего рождения? Ведь чтобы это понять нужен не один месяц.
А никак. Все зависит от стратегии. Они бывают самыми разными. Какие-то нужно динамически переоптимизоровать каждую минуту, а какие-то годами работают на одних настройках. Чтобы хоть как-то понять как поведет себя стратегия ее нужно подробно исследовать, и на основании полученных статистических данных можно уже говорить о каких-то вероятностях. В трейдинге нельзя контролировать свою прибыль, можно только оперировать вероятностями и контролировать свои риски.
Обычно такая оптимизация даёт замечательный результат, но только на исторических данных, после чего на реальной торговле делает прибыль брокеру. Так что автор, если Вы не брокерский маркетолог, а реально научились зарабатывать алготрейдингом, поделитесь, как Вы решаете эту проблему.
Все верно, но существуют механизмы для защиты от переоптимизации. Подобные исследования уже давно шагнули вперед. Тоже машинное обучение, нейронные сети.
Вопрос в том, чтобы все это правильно применить и грамотно оценить результаты работы таких программ. В настоящий момент разрабатываю комплекс ПО для торговли, анализа и оптимизации алгоритмических стратегий. Торгового робота написать не сложно, сложно заставить его приносить прибыль. А для этого ему нужны хорошие проверенные алгоритмы, которые нужно досконально исследовать и настроить.
> Все верно, но существуют механизмы для защиты от переоптимизации.
Вот с этого места поподробнее пожалуйста. Знаю, что существуют, и свои велосипеды наизобретал, но интересно что у Вас получилось.
Я делаю акцент на изучение сходимости, кластеризации. Если параметры хороших стратегий сгруппированы и «тусуются» рядом в пространстве, значит в их расположении есть какая-то система, а если это хорошая стратегия отбита от общей массы, значит она случайная и внесистемная. Такие параметры проторговывать, конечно, не стоит. При этом эти стратегии стоит проверять на исторических диапазонах не учавствоваших в оптимизации. Если в конце исследования что-то останется, то можно с более высокой уверенностью говорить, что стратегия рабочая.
Так на площадках-то опробовали? Ну там демо-счёт и все дела.
Оптимизация проводится на исторических данных, здесь реального подключения не требуется. Пока изучал алгоритмы оптимизации и тестирования. Результат вы видели в статье. Создал приложения для работы со стратегиями, для их изучения и написания. А прибыль приносить должны сами стратегии. Если стратегия бессмысленная, то ничего не поможет)
А вообще как торгуете: купил и тут же продал или акции как инструмент для долговременного хранения используете?
В основном спекулирование на маленьких таймфреймах. Но эти алгоритмы можно применить и для долгосрочных стратегий, например, для оптимизации портфеля торговых инструментов.
UFO just landed and posted this here
Чем больше таймфрейм стратегий и если они носят долгосрочный характер, то на них в большей степени влияет фундаментальный анализ. Чем меньше времени между сделками, тем сильнее работают статистические закономерности.
Например, где-то в Венесуэле террористы взорвали нефтеперерабатывающий завод и на этом фоне цены на нефть стали расти. Если вы были в среднесрочной сделке и играли на понижение, то вы понесете убытки и для вас такие новости важны. А если вы занимаетесь высокочастотной торговлей и за секунду совершаете с десяток разнонаправленных сделок, то вам совершенно все равно взорвали тот завод или нет.
Торгую руками на американке, но всегда интересовали роботы. Если не секрет, какой месячный выхлоп (%)?
«Выхлоп» зависит от торгуемых вами стратегий. От правильного манименджмента и сформированного портфеля стратегий. А чтобы изучить стратегии и повысить их прибыльность используют тестирование и оптимизацию.
Хорошая статья, спасибо!

Поделитесь, каким контролом рисуете графики? Особенно трехмерные порадовали.
Спасибо за отзыв!)
Код написан на С# на основе бесплатной торговой платформы StockSharp.
Трехмерная графика реализована на базе ILNumerics.
Спасибо, интересно, красиво и на первый взгляд грамотно.

Но очень жаль, что ни в статье, ни в комментариях
— нет ни слова численной конкретики (например, сколько $$ или % принесла худшая из лучших и лучшая из лучших стратегия «вживую»)
— нет ни слова о принципах тестируемых стратегий
— нет данных о времени жизни «рабочих» стратегий
— нет ссылок на «попробовать»
— нет просто-напросто ничего, что можно было бы проверить

И по итогам, непонятно:
— если кнопка «бабло» найдена, то где ссылки на «проинвестировать»? или «купить»?
— если не найдена, почему нет вывода «попробовал — пока не вышло».

В общем интересно, поэтому поставил сей URL в оповещения гугла, ибо непонятен вектор развития,
да и вообще, терзают смутные сомнения о цели написания статьи.

Ждем продолжения…
Спасибо за комментарий!

Вы задаете правильные вопросы. Как уже, наверное, заметили, статья получилась довольно объемной. При этом в ней всего лишь рассматривались существующие методы оптимизации. И был предложен новый усовершенствованный алгоритм для поиска лучших стратегий. Это только начало! Круг вопросов, которые нужно решить, перед тем как получить хорошую прибыльную стратегию очень широкий! Чтобы их все рассмотреть одной статьи точно не достаточно.

Я понимаю нетерпение многих читателей, которые после статьи задаются вопросом: «Ну, и зачем я все это прочитал?» «Где сверхприбыли от таких алгоритмов?» «Это вообще работает?»

Не все сразу. После оптимизации нужно провести исследование на подгонку и адекватность полученных результатов. Потом изучить поведение стратегии на реальном рынке. Затем исследовать портфель таких стратегий и проводить уже в нем оптимизацию и решать проблемы мани менеджмента и многое, многое другое…

Алготрейдинг – это целая наука, где тесно переплетаются программирование, трейдинг, математика, статистика, аналитика и другие направления. Каждый из этих пунктов требует колоссальной отдачи и вложения сил. Нет такой кнопки «Получить бабло по умному алгоритму». Поэтому не так много людей справляется с объемом и сложностью поставленных задач и добиваются успеха в этой области.

Будут другие статьи в продолжение этой темы. Со временем постараюсь глубже раскрыть нюансы этой профессии. Появятся ссылки и на «протестировать», «купить», «скачать». Но не все сразу.

А пока мы рассмотрели довольно сложную и при этом очень важную область алгортейдинга – оптимизацию. Все впереди! Удачи!
Я вам по секрету скажу, из личного опыта, когда вы сделаете кнопку «бабло», меньше всего вам будут нужны какие-то инвесторы, а уж о продаже и публикации не будет и речи…
… правда в том, что у конкретной торговой ситуации, есть вполне конкретный объём который можно проторговать, причём это справедливо не только в скальперских масштабах, но и длинных инсайдерских играх, когда люди заливаются за дооолго и сливаются мееедленно… А при том что вы не один единственный «умник», главная проблема для вас будет куда бы приткнуть свои кровные, а не как бы привлечь чужие!
Ох, прочитал, а в голове вертится теперь только одна фраза: «Очень сильное колдунство».
Спасибо за статью, вдохновляет!

У меня как у многих тоже возникли вопросы :-)

— Что используете для отображения графиков в C#. Это S# или что-то другое.
— Как получить S#. Зарегистрировался но не получил подтверждения.

Sign up to leave a comment.

Articles

Change theme settings