Пример техзадания для написания робота (советника, эксперта)

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

Общее описание и индикаторы.

Система торговли опирается на два внешних индикатора. Параметры каждого из индикаторов выносятся во внешние переменные.
Торговая система должна уметь торговать как по рынку, так и отложенными ордерами. Такая возможность выносится во внешние параметры.
Торговый лот - во внешних параметрах должна быть возможность торговать как постоянным лотом, так и динамическим (в зависимости от свободной маржи).
Система "ловит" тренды. Поэтому должна быть внешняя переменная, которая либо запрещает входить против тренда, либо разрешает входить с лотом/N, либо при отключенной переменной торгуется как обычно (по стратегии) расчетным лотом в зависимости от выбранного манименеджмента.
Так же во внешних переменных должна быть возможность подключить как один из внешних индикаторов (и считывать данные с него), так и оба (и торговать по показаниям обоих).
Система работает на том таймфрейме, который на данный момент установлен на графике.

Вход, сопровождение, выход.

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

Входы
Случай 1. Работа с одним индикатором.
Вход происходит строго на границе канала. При этом тэйк-профит устанавливается на противоположной границе (если внешний параметр равен нулю). Тут же устанавливается разворотный отложенный ордер (вне зависимости как система торгует, по рынку или отложенниками) на линии стоп-лосса с величиной тэйка и стопа такой же, чем равен стоп-лосс. Приведу пример.
Вошли в рынок короткой позицией (продажа) по цене 1,4200. Стоп-лосс во внешке 62 пунктов. Соответственно стоп-лосс этого ордера будет равен 1,4262. На этой же цене 1,4262 устанавливается отложенный ордер на покупку с тэйком в 62 пункта, то есть тэйк будет равен 1,4324, а стоп будет равен 1,4200.
Предположим худший для нас вариант. Сработал стоп, и соответственно, наш разворотный отложенник. Тут же выставляем новый отложенный ордер по тем же правилам, только в другую сторону. И так продолжается столько раз, сколько указано во внешней переменной " Количество отрицательных сделок ".
Если количество отрицательных сделок подряд становится равным этой переменной, то советник берет паузу в N часов (эта самая N так же указана во внешней переменной), после чего возобновляется работа.

Случай 2. Работа с двумя индикаторами.
Стратегия абсолютна та же, НО вход в рынок осуществляется только тогда, когда оба индикатора "смотрят" в одну сторону. То есть, если один индикатор направлен вниз, а второй вверх - все сигналы считать ложными. Если же оба смотрят вверх, то входим по первому индикатору.
Ведение позиции
Теперь предположим лучший для нас вариант, когда цена пошла "в нашу" сторону. Тогда когда прибыль равняется 50 пунктов стоп переносится в точку открытия (то есть в ноль). Далее - тралим позицию. Трал дискретный, на расстоянии 50 (внешняя переменная) пунктов через каждые 10 (другая внешняя переменная) пунктов. Этот же принцип трала должен работать и при открытии разворотных ордеров.

Все вышеописанное приведено на рисунке ниже. После него станет немного понятнее.

Внешние переменные и функции

1. Параметры внешки индикаторов. Начальные значения берутся равными начальным значениям самих индикаторов.
2. Стоплосс - по умолчанию 57 пунктов.
3. Тэйк-профит - по умолчанию 0 (нуль). По стратегии, если тэйк равен нулю - то тогда система выставляет тэйк на противоположной границе канала. Если же не равен - то тогда тэйк равен количеству пунктов, указанных во внешней переменной.
4. Слиппэдж входа.
5. Комментарий эксперта (для ордеров).
6. Переключатель индикаторов - int-переменная, где 1 - используется первый индикатор, 2- второй, 3 - оба.
7. Переключатель входа против тренда - int переменная, которая указывает на вход против тренда. 0 - торгуемся как обычно, 1 - против тренда входим вычисляемым (указанным) лотом/N (Соответственно, вводится еще и переменная "N"), 2 - не входим против тренда.
8. Количество отрицательных сделок подряд, после которых следует перерыв Z-часов.
9. Количество часов ("Z" описанный в п. 6), которое советник не будет торговать после количества отрицательных сделок подряд (см. предыдущую переменную).
10. Количество пунктов для трала, по умолчанию 50.
11. Количество пунктов дискретизации трала, по умолчанию 10.
12. Предусмотреть временной промежуток торговли. По умолчанию советник торгует круглосуточно.
13. Если Вы увидите, что есть еще вещи, которые на Ваш взгляд стоит вынести во внешние параметры - пишите, обсудим.

В отдельные функции вынести:
1. Определение времени работы (bool)
2. Ведение позиции (void)
3. Проверку на сигналы (bool)
4. Определение размера лота (double)
5. В зависимости от переключателя типа торговли (по рынку или отложенными ордерами) открытие разных типов ордеров выносим в разные функции.

Множество бесплатных форекс-советников вы можете скачать в Магазине Советников от Фреш Форекс (огромная коллекция бесплатных советников, для скачивания потребуется регистрация)