Пример технического задания

Автор: | 20.08.2018

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

Техническое задание

Работа эксперта может начинаться несколькими способами, на выбор:

1. В заданное время дня. Время задается с точностью до минуты. В этом варианте два подварианта:

1.1 В заданное время дня (в заданный час и минуты) выполняется установка двух отложенных ордеров: бай-стоп и селл-стоп. Ордера устанавливаются на дистанции заданной в пунктах. Отсчет дистанции выполняется от рыночной цены на момент установки.

1.2. В заданное время вход выполняется рыночным ордером. Направление входа определяется по двум скользящим средним – быстрой и медленной. Если быстрая выше медленной, выполняется покупка, если быстрая ниже – продажа. Здесь два варианта определения направления, с выбором через настройки.   1 – как написано выше  (по средним) , 2 – по индикатору RSI, если RSI выше 50 – покупка, если ниже – продажа.

2. Все точно так же, как в варианте 1, но указывается конкретная дата-время (год, месяц, день, час, минуты).

Включение/выключение вариантов 1 и 2 выполняется независимо, то есть можно включить оба варианта сразу.

3. По сигналу индикатора RSI. При пересечение уровня 50 снизу вверх – покупка, при пересечение сверху-вниз – продажа. Здесь тоже надо сделать выбор варианта со входом двумя стоп-ордерами. Так же, при пересечении сверху вниз или снизу вверх устанавливается пара отложенных ордеров, точно так же как в варианте 1 и 2. Здесь еще один вариант входа рыночным ордером – момент входа определяется так же по RSI, а направление по двум скользящим средним.

Этот вариант включается/выключается так же независимо как 1-ый и 2-ой.

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

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

После появления рыночного ордера, на уровне его стоплосса устанавливается переворотный ордер противоположного направления (если рыночный бай, что ставится селл-стоп). У этого ордера лот увеличен (умножается на коэффициент).

Выход с прибылью – два варианта: 1 – по тейкпрофиту заданному в пунктах. Стоплосс тоже задается в пунктах. Вариант 2: стоплосс в пунктах, а тейкпрфит только у первого ордера. У второго и последующих тейкпрфита нет, в этом случае работает специальный трелйинг. Как только очередной ордер выходит в прибыль, которая компенсирует все убытки предшествующих ордеров в этой серии, то стоплосс переносится, что бы гарантированно сохранить эту прибыль. Если быть точнее, то надо смотреть уровень цены на который можно поставить стоплосс и как только можно будет установить его в точку безубытка серии, то он ставится туда. Дальше стоплосс подтягивается за ценой, если конечно цена двигается в прибыль. Но тут уже стоплосс двигается не на минимально возможном уровне, а на заданном в параметрах. Если стоплосс оказался перенесенным, то противоположный отложенный надо удалить.

Еще небольшое дополнение. Когда работа начинается с пары отложенных, предусмотреть еще несколько вариантов отсчета уровня их установки. 1 – в пунктах от рыночной цены. 2 – на границах полос Боллинджера. 3 – с использованием индикатора ATR.

Что касается функции увеличения лота, нужен параметр, определяющий максимальное количество увеличений (количество ордеров в последовательности). Если достигнуто допустимое количество, то два варианта: начинать с начала, продолжать последним максимальным лотом.

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

Комментарии исполнителя:

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

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

Что касается второго варианта входа – по заданному времени, то то наличие этой функции как бы подразумевает возможность  открытия начальной позиции независимо от существования других позиций. Вероятно, второй вариант входа предполагается использовать для “взятия” движений возникающих на новостях. Для этого можно прекрасно обойтись и с простым вариантом эксперта: открыть еще один график и на нем запустить эксперта с другим магиком, работающего по варианту 2.

Еще один неоднозначный момент. В задании указано конкретное значение уровня RSI – 50. Однако, никогда не будет лишним обеспечить в эксперте возможность изменения любого из параметров. Если сделать одну переменную, то сигналы будут возникать с некоторым перекосом. Возможно заказчику так и надо. Можно добавит еще один вариант – сделать два уровня, один для покупки другой для продажи, или оставить один уровень, но добавит выбор его использования: симметрично несимметрично. Допустим, значение уровне 40, при симметричном варианте покупка происходит при пересечение уровня 40 снизу вверх, а продажа при пересечение уровня 60 сверху вниз. При несимметричном варианте покупка происходит так же – при пересечен уровня 40 снизу вверх, но продажа происходит при пересечении этого же уровня (40) сверху вниз.

Еще один важный момент. В задании не указан терминал для которого надо сделать эксперта: MetaTRader4 или MetaTrader5.