Сегодня, практически все крупные финансовые компании используют торговых роботов. По данным Московской биржи, в России на высокочастотный трейдинг приходится до 40% операций. У фонда Vanguard под управлением роботов свыше 65 млрд. долл. США.
Никогда не считал себя способным к программированию, но случайно наткнулся на учебник по языку mql4 и почувствовал, что хочу научиться и у меня получится. Этим предисловием я хочу сразу обозначить: я новичок в программировании, я не учился этому в школьные или студенческие годы. Конечно, моё преимущество — я инженер. Два месяца я изучал сам язык, и ещё за 2 месяца создал эксперта, приносящего прибыль.
Действительно, изначально никаких знаний о каком-либо языке программирования у меня не было, но был хороший опыт активной торговли как на фондовом рынке ММВБ, так и на Forex. Мне давно пора было воплотить (проверить!) собственные методы, наработки, теории в четких алгоритмах. Изучая учебник, я уже понимал, чего я хочу от робота и на чём построю его работу — свою стратегию.
Тут я сразу хочу разместить скетч, который моя подруга-художник набросала по моей просьбе:
Изначально я не торопился написать какого-нибудь робота, нужно было восполнить большой пробел в знаниях. Я спокойно читал учебник, попутно отмечая принципиальные моменты. Я выделил себе лишь некоторые функции и возможности языка, которые нужны и попробовал использовать их на практике. Мне сразу стали видны очевидные преимущества роботизированной торговли, хотя есть и недостатки. К плюсам я отношу:
- Робот может работать без перерывов «на обед» и на сон 24 часа/7 дней в неделю;
- Реакция робота – миллисекунды, он способен быстрее клика мышки выполнить условие;
- Робот действует четко по предписанному заданию, он не знает сомнений, эмоций, плохого настроения или эйфории;
- Робот может действовать как исполнитель сделок, а может извещать создателя о важных событиях/движениях на рынках, проводя круглосуточный мониторинг;
- Создание робота даёт возможность не только автоматизировать работу на рынках, но и проверять различные теории и сигналы на состоятельность, используя архивные данные о движениях на рынках за любой прошедший период.
Возможность сберечь нервы, разгрузить мозг и высвободить время для более глубокого изучения экономики, построения долгосрочных стратегий, самообразования или просто отдыха – главный плюс Эксперта-помощника.
Рекогносцировка. Поиск закономерностей.
Создание робота я начинал не у компьютера, а в электричке, по дороге на работу/с работы. Я расписывал в тетрадях изученное ранее и возможные варианты алгоритмов, которые предстоит передать программе для успешной работы. Поиск закономерностей – этим я занимался с самого первого дня на рынках. Главный вопрос: «Какие события хотя бы в 55% случаев приводят к однозначному результату?». Следующий вопрос, который необходим для ответа на первый: «На что я обращаю внимание, совершая сделку, что толкает меня на вывод о том, что в данный момент надо войти в позицию и результат будет положительным?».
Инвестор использует весь накопленный опыт, знания, мгновенно адаптируя их к актуальной ситуации на рынках с помощью Интуиции. Так что, опытный и хладнокровный трейдер не сильно отстаёт от машины в плане скорости принятия решения. Трейдер всегда лучше поймёт ситуацию на рынке, но он живой человек. У каждого человека своя психология.
Главный же недостаток Эксперта (которого может написать обычный человек) именно в том, что интуиции у него не будет. Робот не самообучается, а прописать ему абсолютно все сигналы, которые использует человек крайне сложно. Их и сформулировать, порой, трудно. Спросите инвестора: «Почему вы именно сейчас открыли именно такую позицию на рынке?». Объяснить трудно, но нужно; не все, а самые важные – которые станут основой алгоритма.
Выделив основные группы закономерностей и мотивов, которые я сам использовал при торговле, встала следующая задача: четко и просто сформулировать их.
Формулируем и упрощаем
Работа торгового эксперта – это постоянный обмен данных с терминалом, который установлен на моём персональном компьютере. Терминал, в свою очередь, обмениваестя данными с сервером дилингового центра. Именно с сервера приходят данные о рынках, и там принимаются наши заявки на открытие/закрытие/модификацию позиций (открытых или отложенных ордеров). Все эти процессы занимают время, пусть и очень малое (меньше секунды). Упрощение и чёткая структура позволят быстрее находить ошибки и вводить поправки код.
Кстати, написанию алгоритмов в школе, кажется, меня учили, но я плохо воспринял. Собственно, мне как инженеру этот этап показался наиболее простым: выделить цепь событий, которая приведет к открытию сделки или закрытию/модификации ранее открытой. Этот этап, длился не больше недели.
Робот, пойми меня!
Параллельно с написанием алгоритма я продолжал читать учебник, хотя ещё ни одной программы сам не написал и даже не запускал metaeditor на компьютере.
Я не стал писать тренировочные программы, предлагаемые учебником, а начал сразу со своей. Алгоритм уже был. Давно забытое чувство, когда в мозгу, как будто, медленно начинается работа какого-то заброшенного заводика. Дело шло медленно, но я не торопился и держал учебник под рукой. Я его дочитал до половины, дальше была информация совершенно не нужная мне на том этапе. Эту половину книги я и перечитывал, вживаясь в роль программиста.
Тестируем и совершенствуем
В самом торговом терминале metatrader есть возможность протестировать свою стратегию на «исторических данных». Тестирование — это лишь нажатие кнопки, а вот верная работа с результатами тестов — крайне принципиальная вещь.
Прежде всего, тестирование помогает проверить верность исполнения программы, без сбоев и ошибок. Так же можно проверить прибыльность стратегии, но тут множество нюансов:
Вы прописали в алгоритме какие-либо параметры, протестировали, допустим, на интервале с июля по декабрь 2017 года. Всё работает хорошо, прибыль есть, относительные убытки не большие и так далее… Но это вовсе не гарантирует, что прибыль будет выше убытков и в будущем.
Совсем дурное занятие: подгонять свою программу под конкретные исторические периоды, в надежде, что в будущем рынок повторит нечто подобное. Если на интервале в год ваш робот делает сотни сделок — это хорошая «выборка» (вспоминаем курс Теории вероятностей:-), но даже, если 60% из них прибыльные, а 40% убыточные — это тоже не показатель, ведь средняя успешная сделка может приносить меньше, чем средняя неудачная.
Хороший метод «тестирования на будущих данных», который я на одном форуме подсмотрел: Сегодня 1.01.2018 (например). При разработке, проверяйте робота на данных с января по июнь 2017 года, а затем, в конце, протестируйте на данных с июля по декабрь 2017 года. Так вы проверили своего робота на будущих тиках. Если результаты в обоих случаях окажутся успешными, вы, как минимум, молодец. :-)
В любом случае, если вы сделали Эксперта и готовы доверить ему свои деньги, потерпите ещё немного. Запустите робота хотя бы на месяц в работу. Счёт заведите реальный, но возьмите минимальную величину сделки.
А теперь самое главное: Не мешайте своему роботу работать! Если вам кажется, что открыта неверная сделка или, что прибыль пора зафиксировать раньше того момента, когда это сделает ваш эксперт — выключайте экран и идите гулять. Помните, преимущество робота над человеком в том, что он не нервничает и не жадничает: он возьмет с хорошей сделки не меньше, чем вы ему указали, а убыточную позицию будет держать ровно столько сколько это имеет смысл.
Я не хочу здесь писать про своё отношения к роботорговле сегодня. Отмечу важное: Создание робота для торговли на бирже - хороший способ проверить теории и стратегии ещё до того, как в них вложены реальные деньги. Работа над роботом поможет вам увидеть реальную сторону рынков, избавит от иллюзий, психологически разгрузит вас. Конечно, вы увидите новые возможности для роста.
спасибо Галине Помещенко за скетч
Телеграмм канал "Мир в экономике"https://t.me/Pomeschenko