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