Создание робота для торговли на рынках столь увлекательное и полезное занятие, что я решил написать отдельную главу для книги, написание которой забросил много лет назад. Уверен, многим помогут мои наблюдения и выводы, игра продолжается!

Никогда не считал себя способным к программированию, но случайно наткнулся на учебник по языку mql4 и почувствовал, что это моё, что хочу научиться и у меня получится. Этим предисловием я хочу сразу обозначить: я новичок в программировании, я не учился этому в школьные или студенческие годы. Конечно, моё преимущество — я инженер. Два месяца я изучал сам язык, и ещё за 2 месяца создал эксперта, приносящего прибыль.

Действительно, изначально никаких знаний о каком-либо языке программирования у меня не было, но был огромный опыт активной торговли как на фондовом рынке ММВБ, так и на Forex. Работая на рынках, я основывал свою стратегию на знаниях технического анализа. Собственные методы, наработки, теории мне давно пора было воплотить в четких алгоритмах. Изучая учебник, я уже понимал, чего я хочу от робота и на чём построю его работу — свою стратегию.

Тут я сразу хочу разместить скетч, который моя супруга-художник набросала по моей просьбе:

Этапы создания робота. скетч

Изначально я не торопился написать какого-нибудь робота, нужно было восполнить большой пробел в знаниях. Я спокойно читал учебник, попутно отмечая принципиальные моменты, которые мне могли пригодиться в конкретной работе. Не пытая использовать всё подряд, я выделил себе функции и возможности языка, которые нужны и попробовал использовать их на практике. Мне сразу стали видны очевидные преимущества роботизированной торговли, хотя есть и недостатки. К плюсам я отношу:

  • Робот может работать без перерывов «на обед» и на сон 24 часа/7 дней в неделю;
  • Реакция робота – миллисекунды, он способен быстрее клика мышки выполнить задание.
  • Робот действует четко по предписанному заданию, он не знает сомнений, эмоций, плохого настроения или эйфории;
  • Робот может действовать как исполнитель сделок, а может извещать создателя о важных событиях/движениях на рынках, проводя круглосуточный мониторинг;
  • Создание робота даёт возможность не только автоматизировать работу на рынках, но и проверять различные теории и сигналы на состоятельность, используя архивные данные о движениях на рынках за любой прошедший период.

Именно возможность сберечь нервы, разгрузить мозг и высвободить время для более глубокого изучения рынка, построения долгосрочных стратегий, самообразования или просто отдыха – главный плюс Эксперта-помощника.

Рекогносцировка. Поиск закономерностей.

Создание робота я начинал не у компьютера, а в электричке, по дороге на работу/с работы. Я расписывал в тетрадях изученное ранее, касаемо самого кода mql4, а так же возможных вариантах алгоритмов, которые предстоит передать программе для успешной работы. Поиск закономерностей – этим я занимался с самого первого дня на рынках. Главный вопрос: «Какие события хотя бы в 55% случаев приводят к однозначному результату?». Следующий вопрос, который необходим для ответа на первый: «На что я обращаю внимание, совершая сделку, что толкает меня на вывод о том, что в данный момент надо войти в позицию и результат будет положительным?».

Дело в том, и это мои личные наблюдения, что трейдер не держит под рукой тетрадку, где расписаны все нюансы, на которые следует обратить внимание при принятии решения о сделке. А если кто-то и ведет такой «дневник», там несколько томов. Конечно, вначале работы на рынках я сам такой вёл, но информации становится так много и крайне сложно её систематизировать.

Большая часть информации о закономерностях, признаках трендов/флетов, моделях разворота и множестве других элементов технического и фундаментального анализа автоматически фиксируется мозгом человека. Инвестор использует весь накопленный опыт, знания, мгновенно адаптируя их к актуальной ситуации на рынках с помощью Интуиции. Так что, опытный и хладнокровный трейдер не сильно отстаёт от машины в плане скорости принятия решения. Трейдер всегда лучше поймёт ситуацию на рынке, но он живой человек и у каждого человека свои личные «нюансы», преимущества и недостатки.

Главный же недостаток Эксперта (которого может написать обычный человек) именно в том, что интуиции у него не будет. Робот не самообучается, а прописать ему абсолютно все сигналы, которые использует человек крайне сложно. Их и сформулировать, порой, трудно. Спросите инвестора: «Почему вы именно сейчас открыли именно такую позицию на рынке?». Объяснить трудно, но нужно, не все, но самые важные – которые станут основой алгоритма.

Выделив основные группы закономерностей и мотивов, которые я сам использовал при торговле, встала следующая задача: четко и просто сформулировать их.

Формулируем и упрощаем

Работа торгового эксперта – это постоянный обмен данных с терминалом, который установлен на моём персональном компьютере. Терминал, в свою очередь, обменивается данными с сервером дилингового центра. Именно с сервера приходят данные о рынках, и там принимаются наши заявки на открытие/закрытие/модификацию позиций (открытых или отложенных ордеров). Все эти процессы занимают время, пусть и очень малое (меньше секунды). Поэтому очень важно уже на этапе написания алгоритма стремиться к четкости и простоте.

Кстати, написанию алгоритмов в школе, кажется, меня учили, но я плохо воспринял. Собственно, мне как инженеру этот этап показался наиболее простым: выделить цепь событий, которая приведет к открытию сделки или закрытию/модификации ранее открытой. Этот этап(длившийся не больше недели) я так же «проезжал» в электричках:-)

Робот, пойми меня!

Параллельно с написание алгоритма я продолжал читать учебник, хотя ещё ни одной программы сам не написал и даже не запускал metaeditor на компьютере.

Не видя смысла писать тренировочные программы, предлагаемые учебником, начал я сразу со своей, алгоритм уже был. Давно забытое чувство, когда в мозгу, как будто, медленно начинается работа какого-то заброшенного заводика. Туго дело шло, но я не торопился и держал учебник под рукой. По сути, я его дочитал до половины, дальше была информация совершенно не нужная мне на том этапе. Эту половину книги я и перечитывал, вживаясь в роль программиста.

В один день сев за написание самого кода программы, я уже к вечеру следующего дня получил вполне работающего, хотя и скромного по потенциальной прибыли эксперта. Он был основан на моём личном опыте торговли, но первые усовершенствования были скорее исправлением ошибок в переводе моего алгоритма на язык робота…

Тестируем и совершенствуем

В самом торговом терминале metatrader есть возможность протестировать свою стратегию на «исторических данных». Тестирование — это лишь нажатие кнопки, а вот верная работа с результатами тестов — крайне принципиальная вещь.

Прежде всего, тестирование помогает проверить верность исполнения программы: как было задумано автором, без сбоев и ошибок. Так же можно проверить прибыльность стратегии, но тут множество нюансов:

Вы прописали в алгоритме какие-либо параметры, протестировали, допустим, на интервале с июля по декабрь 2015 года. Всё работает хорошо, прибыль есть, относительные убытки не большие и так далее… Но это вовсе не гарантирует, что прибыль будет выше убытков и в будущем.

Совсем дурное занятие: подгонять свою программу под конкретные исторические периоды, в надежде, что в будущем рынок повторит нечто подобное. Если на интервале в год ваш робот делает сотни сделок — это хорошая «выборка» (вспоминаем курс Теории вероятностей:-), но даже, если 60% из них прибыльные, а 40% убыточные — это тоже не показатель, ведь средняя успешная сделка может приносить меньше, чем средняя неудачная. Повторюсь, сконцентрировать усилия лучше всего на самой программе, а не на вариациях «подгона» при тестировании. Но тут хочу привести хороший метод «тестирования на будущих данных», который я на одном форуме подсмотрел: Сегодня 1.01.2016 (например). При разработке, проверяйте робота на данных с января по июнь 2015 года, а затем, в конце, протестируйте на данных с июля по декабрь 2015 года. Так вы проверили своего робота на будущих тиках. Если результаты в обоих случаях окажутся успешными, вы, как минимум, молодец. :-)

В любом случае, если вы сделали Эксперта и готовы доверить ему свои деньги, потерпите ещё немного. Запустите робота хотя бы на месяц в работу. Счёт заведите реальный, но возьмите минимальную величину сделки. (в случае не удачи ваши потери будут ниже прожиточного минимума).

А теперь самое главное (почти шучу): Не мешайте своему роботу работать! Если вам кажется, что открыта не верная сделка или, что прибыль пора зафиксировать раньше того момента, когда это сделает ваш эксперт — выключайте экран и идите гулять. Помните, преимущество робота над человеком в том, что он не нервничает и не жадничает: он возьмет с хорошей сделки не меньше, чем вы ему указали, а просадку будет терпеть ровно столько сколько это имеет смысл, по вашему же алгоритму.

Автор допускает, что уже при нынешней эффективности рынков, создание универсального робота не рентабельно и отдача будет ниже ожидаемой. Но создание эксперта для реальной торговли — не единственное применение знаний программирования на рынках. Множество других прикладных задач можно решить, много теорий и стратегий проверить ещё до того, как в них вложены реальные деньги. Работа над роботом поможет вам увидеть реальную сторону рынков, психологически разгрузит вас и вы увидите новые возможности для роста и самопознания!…

About Николай Помещенко

Working surveyer, fond of reading good books, petanque... Study political science, economic Геодезист, блогер, экономика, политология, петанк

Оставьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.