Форекс стратегии, торговые роботы, индикаторы

Рекомендации по составлению техническое задание для заказа торгового робота

Техническое задание на разработку торгового робота
ForexMq

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

Для автоматизации торговли первым делом нужно создать торгового робота, в код которого будет заложена ваша стратегия. Проще всего заказать его разработку опытному программисту, владеющего языком MQL4/MQL5 и разбирающимся в нюансах рынка.

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

Что нужно для создания торгового робота

Начнем с того что советник, он же торговый робот, – это программа, которая выполняет определенные действия при заданных событиях.

Основные действия которые выполняет робот, – это торговые операции, то есть открыть, закрыть ордер или модифицировать его. Так же он может отправлять сообщение на почту, выводить информацию на график, закрывать терминал и т.п.

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

Пример! «Закрыть все ордера в пятницу в 21:00». Здесь «закрыть ордера» – это действие, а «в пятницу в 21:00» – это событие.

Это базовые элементы, из которых строится алгоритм любого торгового робота. Не важно, сложная стратегия или простая, без этих элементов не возможно создать бота.

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

Что такое техническое задание и почему оно должно быть хорошее

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

Для этих целей заказчик оформляет техническое задание и передает его разработчику.

Техническое задание – это основополагающий документ, которым руководствуются разработчик при создании торгового робота. Оно определяет все правила и принципы работы программы.

Почему важно составить хорошее Техническое Задание? Ответ простой — ведь именно по нему будет создан советник, и сделано будет ровно столько, сколько прописано в тз.

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

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

Из чего состоит техническое задание

На самом деле составить техническое задание не сложно. Если у вас есть четкая, отработанная стратегия, то написать по нему тз не составит труда.

Самая частая проблема при разработке, это недопониманье между заказчиком и исполнителем. И, чтобы избежать этих проблем, надо особое внимание уделить на детальность, четкость и однозначность тех. задания.

Далее определим из каких пунктов состоит техническое задание.

Название советника

Некоторым кажется этот пункт неважным, и название не указывают. Разработчик не тратит время на согласования этого пункта и называет бота на свое усмотрение. В итоге заказчик получает робота и ему не нравиться название и просит его переименовать. В основном проблемы с этим нет, просто переименовываем файл и все.

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

Используемый терминал

Здесь понятно, пишем под какой терминал делать робота. Если под MetaTrader, то обязательно пишем под какую версию (4-ую или 5-ую).

Торговая идея

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

Входные параметры

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

Если некоторые параметров вызывают у вас сомненья, напишите об этом, разработчик обязательно посоветует как, будет лучше. Так же программист может добавить дополнительные параметры, например уникальный идентификатор (Magic_Number) и проскальзывание.

Правила открытия ордеров

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

Если система использует индикатор, укажите при каких значениях генерируется сигнал. Обязательно уточните в какой момент производить поиск и анализ сигнала (на каждом тике или в момент закрытии бара). Если вы это не укажите, то по умолчанию, анализ сигнала будет производиться один раз на бар, при каждом его закрытии.

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

Тут два варианта:

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

Если индикатор пользовательский, приложите его к заданию, если стандартный, то достаточно указать его название.

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

Сопровождение ордеров

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

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

Правила закрытия ордеров

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

Объем лота

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

Время работы

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

Таймфрейм

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

Графический интерфейс

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

Оповещение на email или телефон

Для бесперебойной работы, торгового робота устанавливают на vps-сервер. Такой подход правильный, но создает некоторые неудобства его мониторинга. Для таких случаев есть хороший инструмент, оповещение на email или push уведомление на телефон. Если требуется применение этих инструментов, укажите это и обозначьте при каких случаях отправлять сообщение.

Дополнения

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

Примеры технических заданий.

Что не сможет сделать программист

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

Как правила это происходит потому что ручной тест был не качественным:

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

Часто заказчик, просто накидывает индикатор на график и анализирует его стрелки на истории, не понимая что индикатор может их перерисовывать.

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

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

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

Смотреть так же:




Комментарии ()