Советник на заказ. Инструкция для трейдера.

Andrey Khatimlianskii | 10 апреля, 2007


Введение

Далеко не все трейдеры - программисты. А из них далеко не все - хорошие программисты. Что делать, если надо автоматизировать свою систему, а времени и желания учить MQL4 нет? Обычно человек идет на форум и создаёт тему с названием типа "Ищу программиста". За последний месяц таких тем было семь:

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



Что необходимо сделать до заказа эксперта?

Перед тем, как искать программиста, убедитесь в прибыльности вашей стратегии. Зачем платить за эксперт, который не сможет зарабатывать? Это можно сделать вручную, просматривая историю и торгуя в уме, что достаточно сложно. Либо сделать с помощью ручного тестера, описанного в статье Визуализация тестирования. Ручная торговля. Самые правдоподобные результаты вы получите, торгуя на демо или мини-реальном счёте, но это потребует больше времени и, возможно, денег. Тестируя стратегию, учитывайте, что:

  • рынок меняется и правильное поведение индикаторов на истории не гарантирует их адекватность при реальной торговле;
  • некоторые индикаторы рисуют сигналы на уже сформировавшихся барах. Очень удачно расположенные стрелочки на экстремумах цены - достояние истории, при реальной работе они станут видны только спустя несколько баров. Пример такого индикатора - Fractals, его значения появляются с задержкой в два бара. То есть, использовать его можно, но надо учитывать, что вы войдёте в рынок не прямо под фракталом, а только когда сформируются ещё два бара (на часовом графике через два часа). Не используйте индикаторы, алгоритма работы которых вы не знаете. Это может плохо закончиться;
  • есть масса индикаторов, которые, сознательно или нет, заглядывают в будущее. Например, простой Moving Average с отрицательным сдвигом будет очень своевременно показывать развороты рынка. Но только на истории...

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

  • скорость исполнения ордеров на демо-счёте всегда выше, чем на реальном счете. Будьте готовы к тому, что ваша реальная позиция откроется только через несколько минут после отдачи команды. Это не сильно ухудшит показатели долгосрочной стратегии, но может полностью "убить" внутридневный трейдинг;
  • на реальном счёте торговые условия (спред, расстояние до стоп-приказов, уровень margin call и тому подобное) могут меняться "на ходу" (во время торгов). Например, перед выходом новостей или перед праздниками. Тестируя стратегию на демо-счете, вы вряд ли встретитесь с подобными сюрпризами, но обязательно учитывайте их влияние при итоговой оценке стратегии.

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


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



Формализация алгоритма

Если вы торговали с помощью стратегии достаточно долго, вам не составит труда формализовать алгоритм. Все, что надо, - это перечислить правила, по которым должен торговать эксперт.

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

Вы должны понимать, что компьютер не умеет догадываться, додумывать или принимать самостоятельные решения, - он просто торгует по вашим правилам. Если сложится ситуация, реакция на которую алгоритмом не предусмотрена, эксперт просто ничего не сделает.


Давайте на конкретном примере рассмотрим, что может получиться, если техническое задание составлено недостаточно точно и подробно. Представленный ниже диалог иллюстрирует процесс создания Исполнителем эксперта по алгоритму Заказчика. Я намеренно изобразил оба персонажа абсурдно глупыми. Это поможет увидеть ошибки как бы под увеличительным стеклом. Чтобы лучше понимать, о чём идет речь, можете скачать примеры всех экспертов и тестировать их одновременно с Заказчиком.


Заказчик:

Добрый день! Хочу заказать у вас эксперт.
Он должен открывать позиции при пересечении МА(9) и МА(18).
Если быстрая пересекает медленную снизу вверх, то бай-позицию, если наоборот - то селл-позицию.
Сколько он будет стоить?

Исполнитель:

Для определения стоимости мне необходимо подробное и точное задание.
Ориентировочно - $50.

Заказчик:

Я же все написал в предыдущем письме!
Есть 2 скользящие средние, когда быстрая (с периодом 9) пересекает медленную (с периодом 18) снизу вверх, открывается бай-позиция. Когда наоборот - селл-позиция.

Исполнитель:
Хорошо, всё понятно.
Вот ваш эксперт - Sample_1.mq4.
Заказчик:

Что вы написали?! Это не эксперт, а черт знает что!
Почему так много открытых позиций? Почему они не закрываются?
Вы, вообще, программист или как?

Исполнитель:

Позиций ровно столько, сколько пересечений. Протестируйте эксперт в визуальном режиме и всё увидите - при каждом пересечении открывается позиция.
Если пересечение вверх, открывается бай-позиция, если вниз - селл.
Про закрытие в задании не сказано ни слова.


Заказчик:

Забыл сказать: если есть открытая позиция, то при противоположном пересечении её надо закрывать - одновременно в рынке должна быть только одна позиция. И хотелось бы, чтобы у всех позиций при открытии устанавливался СтопЛосс на расстоянии 50 пунктов.


Исполнитель:
Смотрите 2-ю версию - Sample_2.mq4.

Заказчик:

Почему вот здесь открылась эта бай-позиция? Тут же не было пересечения!



Исполнитель:

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


Заказчик:

Давайте попробуем.
И ещё: я могу оптимизировать параметры скользящих средних и значения СтопЛосса и ТейкПрофита?


Исполнитель:

Версия №3 - Sample_3.mq4:
- поиск сигналов ведется по сформировавшимся барам (1-му и 2-му);
- параметры скользящих средних и размеры СтопЛосса и ТейкПрофита вынесены во внешние переменные.
Проверяйте.


Заказчик:

Это уже похоже на то, что я хотел.
Но когда я запускаю несколько экспертов, торгует только один из них. А иногда они закрывают позиции друг друга!


Исполнитель:

В версии №4 (Sample_4.mq4) добавлено разделение ордеров по магическому номеру. Если вы запускаете несколько экспертов на графиках одного инструмента, устанавливайте им разные значения переменной MagicNumber.


Заказчик:

Вот теперь совсем хорошо!

Так каким, должно было быть изначально техническое задание, чтоб Исполнитель сразу написал 4-ю версию эксперта? Давайте попробуем сформулировать требования к эксперту:
  • Эксперт должен контролировать только свои позиции, не трогая позиции, открытые вручную и/или с помощью других экспертов.
  • Если нет позиций, открытых экспертом:
    • если быстрая МА пересекает медленную снизу вверх, открываем бай-позицию;
    • если быстрая МА пересекает медленную сверху вниз, открываем селл-позицию.
  • Если есть позиция, открытая экспертом:
    • если позиция бай:
      • если быстрая МА пересекает медленную сверху вниз, закрываем бай-позицию и открываем селл-позицию;
    • если позиция селл:
      • если быстрая МА пересекает медленную снизу вверх, закрываем селл-позицию и открываем бай-позицию.
  • Параметры быстрой и медленной МА (период, метод построения, применённая цена) должны задаваться внешними переменными.
  • Значения индикаторов берутся с периода графика, на котором работает эксперт.
  • Для определения пересечения используются 1-й и 2-й бары.
  • Размер позиции определяется внешней переменной.
  • При открытии позиции устанавливаются СтопЛосс и ТейкПрофит, расстояние до которых определяется внешними переменными.
  • СтопЛосс и ТейкПрофит должны быть отключаемыми.
  • При ошибке открытия позиции эксперт должен вывести окно с информацией об ошибке и повторить попытку на следующем тике.

Это - самое элементарное задание. В жизни такие простые системы встречаются редко, поэтому при составлении описания уделите внимание каждой мелочи.


Бесспорно, такие глупые Заказчики и Исполнители встречаются крайне редко. Но - поверьте мне! - встречаются. Лучше указать в задании даже самые банальные и, казалось бы, элементарные вещи, чем потом спорить с программистом.

Последнее, что можно сделать перед поиском программиста, - поторговать "по бумажке". Просто держите перед глазами свой "свод правил" и делайте только то, что там написано. Таким образом вы сможете вспомнить детали, пропущенные при формализации алгоритма, и впоследствии не придётся платить за доработку.


Выбор программиста


За несколько лет существования языка MQL4 появилось достаточно много экспертописателей. Многие из них - постоянные жители ресурса mql4.com. Здесь они выкладывают свои наработки в CodeBase, пишут статьи и просто общаются на форуме, помогая новичкам и совершенствуясь в своем деле. Многие из них имеют реальные счета и торгуют как с помощью экспертов, так и вручную.

Не существует (или, по крайней мере, я не встречал) какой-либо базы данных экспертописателей, в которой можно было бы получить исчерпывающую информацию о каждом профессиональном MQL4-программисте. Да и вряд ли можно создать такую базу - многие приходят в этот бизнес очень ненадолго.

Эта статья создавалась с целью помочь вам в поисках программиста - всю доступную информацию вы сможете найти в разделе "Контактная информация экспертописателей mql4.com".

Выбирая программиста для реализации своего эксперта:
  • посоветуйтесь с друзьями-трейдерами, которые уже сотрудничали с кем-либо из экспертописателей;
  • пролистайте форум в поисках откликов о реализованных/нереализованных экспертах;
  • посмотрите профили зарегистрированных пользователей - многие оставляют информацию о себе именно там;
  • пообщайтесь с программистами лично - через e-mail или ICQ.
Отличаться могут как цены, так и другие условия работы. Кто-то работает только по предоплате и не посылает исходный код эксперта до момента полной оплаты, кто-то может сразу "подарить" вам готовый эксперт, надеясь на вашу порядочность, а кто-то вообще не отдаёт исходный код, привязывая работу эксперта только к одному счёту. Выясните все детали будущего сотрудничества до принятия решения.

Общайтесь, договаривайтесь. Вариантов масса, важно выбрать правильный.


Тестирование эксперта

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

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

Если эксперт должен действовать не только в момент открытия бара, но и в процессе его формирования, попробуйте провести тест в визуальном режиме - вы сможете следить за действиями эксперта на каждом тике. Станут видны значения индикаторов на нулевом (текущем) баре, перемещения и срабатывания СтопЛосса позиций при резких движениях цены и многое другое.

Если тестирование в тестере стратегий ошибок не выявило, переходите к тестированию на демо-счете.

Попробуйте запустить несколько советников с разными или одинаковыми параметрами и торгуйте одновременно с ними. Эксперт должен продолжать работать по алгоритму, не реагируя на "происходящее вокруг". Если и на этот раз ошибок нет, можете сообщить программисту, что всё в порядке, и завершить сделку.


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

  • что именно работает не так;
  • параметры эксперта, при которых проявилась ошибка;
  • параметры тестирования (символ, период, временной промежуток, режим моделирования, сервер и т.д.) или время работы и адрес сервера, если проверка проводилась на демо-счёте;
  • отрывок из отчёта тестера;
  • несколько скриншотов с описанием проблемы;
  • логи эксперта (закладка "Журнал" в тестере или закладка "Эксперты" при работе на демо-счёте).
При наличии исчерпывающей информации программист быстро найдёт и исправит ошибку.

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


Заключение

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

Приложение 1. Контактная информация экспертописателей mql4.com

В этом разделе представлена контактная информация экспертописателей, обитающих на mql4.com. Список постоянно пополняется, поэтому, если вы не нашли себе помощника сейчас, загляните через некоторое время - он вполне может вас ожидать. Учтите, что оставить свои координаты здесь может практически любой человек, в том числе и обманщик. Проверить качество работы или порядочность всех экспертописателей практически невозможно. Поэтому после сотрудничества с кем-либо из них (как удачного, так и не очень) не поленитесь написать в комментариях к статье своё мнение о человеке, с которым работали, - другие пользователи будут делать свой выбор, ориентируясь на ваши отклики. Кроме того, нарушителей можно будет удалить из списка.

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

Ник Имя e-mail Дополнительная информация
komposter Андрей Хатимлянский mql@komposter.me www.komposter.me
komposterius
211-605-801
Mike Микаэл Бернардович mikemb [@] ittportal [.] net
315-165-028
Тел.: +79015453588
Ride Иван Оболенский tradexperts [@] inbox [.] ru www.tradexperts.ru
ridecrufter_
470-807-049
StatBars Артём Титаренкоtradexperts [@] inbox [.] ru www.tradexperts.ru
StatBars
425-250-681
sergomskСергей Московцевsergomsk [@] gmail [.] com
sergomsk
394-956-740
vasya_vasya Василий Орлов pr0baproba [@] mail [.] ru
555-485-590
cmillionВладимирcmillion [@] narod [.] rucmillion.narod.ru
mqlcmillion
217-786-393
MrSoros
o-o0 [@] bk [.] ru
180-13-46

Виктор Гетингер getinger [@] inbox [.] ru
191-518-210
illya2342Илья Белкинe-shop.belkina [@] yandex [.] ua ruforum.mt5.com/threads/14896
637-245-763
megaforexОлег Рябцевbisnesdom [@] gmail [.] comwww.bisnesdom.ru
oleg.nmn

MetaQuotes Software Corp. ответственности за нарушение договоренностей между трейдером и программистом не несет.