Termos de Referência
ТЗ для робота 2D market (MT4 или MT5)
Необходимо сделать советник + индикатор, на основе которого, советник будет торговать.
Индикатор аналогичный «Nermal Round Levels» https://www.mql5.com/ru/market/product/68812?source=Site+Search
Принцип индикатора, он делит цену на горизонтальные уровни.
Всего три параметра индикатора:
1. Уровень деления – количество пунктов, при котором будет округление и деление на уровни
2. Цвет линии
3. Тип линии – пунктир, линия и т.п.
Пример, уровень 100 (старое обозначение, по-новому 1000), рис:

Описание работы советника: за основу торговли брать уровни деления (параметр 1), не важно какой инструмент и период на графике. Советник должен определять безоткатное количество пробоев в любом направлении (верх/вниз) Уровней деления на истории от последнего пробоя и отката. Например, как на рисунке выше, цена с 1.19000 прошла до 1.15000 (не дойдя до 1.14000) пробив 5 уровней (второй параметр, Пробой уровней), затем откатилась на 1.16000 пробив уровень в обратном направлении.
Параметры советника:
1. Уровень деления (GridSpace) – указано выше при индикаторе, количество пунктов от 0 и выше
2. Пробой уровней (Level) – количество уровней при безоткатном пробое, где выставляется отложенные ордера на покупку и/или продажу. Может быть от 2 и выше, так как 1 уровень считается сразу, ноль не может быть.
3. Торговля по тренду (Trend) – true/false. Если true, то при пробое уровней (п.2) верх, будет открываться ордер на покупку и наоборот. Если false, то при пробое уровней (п.2) верх, будет открываться ордер вниз и наоборот
4. Лот (Lot) – рабочий объем лота, от 0.01 и выше
5. TP – take profit, количество пунктов от 0 и выше
6. SL – stop loss, количество пунктов от 0 и выше, если 0, то срабатывает сетка мартингейла, либо можно сделать отдельный параметр: Мартингейл - true/false
7. Шаг мартингейла (Step Mart) – создается сетка усреднения для ордеров наращивания позиции в откатном движении, от 0 и выше
8. Множитель для мартингейла (ATR) – в случае срабатывания мартингейла (п.6), на следующий ордер открытия позиции будет множитель на лот (п.4), обычно от 1 и выше, округление в сторону сотых. Например, ATR – 1.5, лот 0.01, первый ордер будет на 0.01, затем 0.02, 0.02, 0.03, 0.05, 0.08, 0.11 и т.д.
9. Магический номер (Magic) – уникальный номер сделок советника, чтобы не было дублирование ордеров
10. Выход из сделки (Exit) – процент просадки по счету, при достижении которого советник закрывает все сделки, если 0 – выкл.
11. Comment – комментарий сделок эксперта
12. Slippage – проскальзывание в пунктах
Пример по параметрам: 1 – 1000, 2 – 5, 3 – false, 5 – 1000, 6 – 1000
Советник запущен в точке 0, он определил, что до этого было верх и вниз движение по уровням 1.19 (сокращенный вариант цены без 000 и в дальнейшем) и 1.18, далее включается параметр 2, ему надо дождаться 5 безоткатных уровней верх или вниз, он выставляет 2 отложенных ордера, на покупку 1.15, где TP 1.16 и SL 1.14, на продажу 1.22, TP 1.21 и SL 1.23. В случае если на каком-либо уровне произойдет откат, то ордера удаляются и правило снова срабатывает на новых уровнях. В данном примере, сработал TP 1.16
2й пример, на этом же рисунке, когда 1 -1000, 2 – 2, 3 – true, 5 – 1000, 6 – 1000
Советник ставит ордера на продажу 1.18, где ТП – 1.17 и СЛ – 1.19, на покупку 1.2, где ТП 1.21 и СЛ 1.19, срабатывает 1й ордер ТП 1.17

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