Техническое задание
1. Общая задача проекта
Необходимо разработать торгового робота (Expert Advisor) для платформы MetaTrader 5, который будет автоматически открывать и закрывать сделки по заранее заданной стратегии.
Робот нужен для торговли только по валютной паре EUR/USD на таймфрейме H1.
Основная задача советника:
анализировать рынок по заданным условиям
открывать сделки автоматически без ручного участия
сопровождать сделки по фиксированным значениям Take Profit и Stop Loss
рассчитывать размер лота автоматически по балансу счёта
одновременно держать только одну открытую позицию
не использовать опасные методы управления капиталом, такие как сетка, мартингейл и усреднение
Робот должен быть написан аккуратно, понятно и с возможностью дальнейшей доработки в будущем.
2. Платформа и инструмент
Платформа
MetaTrader 5
Тип программы
Expert Advisor (советник)
Торговый инструмент
только EUR/USD
Таймфрейм
только H1
Важно
Робот не должен торговать на других символах, если это не будет специально изменено в коде или параметрах по согласованию. В текущей версии робот разрабатывается исключительно под EUR/USD H1.
3. Основная логика торговли
Советник должен торговать по простой трендовой логике с использованием стандартных индикаторов:
EMA 50
EMA 200
RSI 14
Общая идея стратегии
Робот определяет направление рынка через соотношение EMA 50 и EMA 200, затем проверяет положение цены относительно EMA 50 и подтверждает вход по RSI и по закрытию сигнальной свечи.
Сделка открывается только после полного закрытия свечи, по которой сформировался сигнал.
Входов “на тике”, “внутри свечи”, “по ходу движения” быть не должно.
4. Используемые индикаторы
Необходимо использовать только стандартные индикаторы MT5, без внешних библиотек, без сторонних файлов и без нестандартных индикаторов.
Список индикаторов
EMA 50
EMA 200
RSI 14
Требования
Периоды индикаторов должны быть вынесены во входные параметры, чтобы при необходимости их можно было изменить без переписывания кода.
5. Условия открытия сделки BUY
Советник должен открыть покупку (BUY) на открытии новой свечи только в том случае, если на момент закрытия предыдущей свечи одновременно выполнены все следующие условия:
EMA 50 находится выше EMA 200
это означает, что рыночное направление считается восходящим
Цена закрытия предыдущей свечи находится выше EMA 50
это подтверждает, что цена находится на стороне восходящего тренда
RSI с периодом 14 выше уровня 50
это дополнительное подтверждение восходящего импульса
Сигнальная свеча закрылась выше максимума предыдущей свечи
то есть свеча, на которой формируется сигнал, должна закрыться выше High свечи, которая была перед ней
Момент открытия BUY
Если все вышеуказанные условия выполнены, то советник должен открыть сделку BUY на открытии следующей свечи.
Дополнительно
если на момент сигнала уже есть открытая позиция, новую сделку не открывать
если сигнал появляется повторно на той же свече, повторно не входить
если спред превышает максимально допустимое значение, сделку не открывать
6. Условия открытия сделки SELL
Советник должен открыть продажу (SELL) на открытии новой свечи только в том случае, если на момент закрытия предыдущей свечи одновременно выполнены все следующие условия:
EMA 50 находится ниже EMA 200
это означает, что рыночное направление считается нисходящим
Цена закрытия предыдущей свечи находится ниже EMA 50
это подтверждает, что цена находится на стороне нисходящего тренда
RSI с периодом 14 ниже уровня 50
это дополнительное подтверждение нисходящего импульса
Сигнальная свеча закрылась ниже минимума предыдущей свечи
то есть свеча, на которой формируется сигнал, должна закрыться ниже Low свечи, которая была перед ней
Момент открытия SELL
Если все условия выполнены, советник должен открыть SELL на открытии следующей свечи.
Дополнительно
если уже есть открытая позиция, новую не открывать
повторный вход на той же свече запрещён
если спред выше допустимого, вход не выполнять
7. Условия, при которых сделки открываться не должны
Советник не должен открывать сделки в следующих случаях:
Если уже есть открытая позиция по этому советнику
Если спред выше заданного пользователем значения
Если условия входа выполнены частично, но не полностью
Если сигнал возник внутри свечи, но к закрытию исчез
Если происходит повторная попытка входа на той же самой свече
Если торговля запрещена брокером, терминалом или настройками MT5
Если объём лота по расчёту не проходит ограничения брокера
8. Правила сопровождения сделки
Take Profit
фиксированный Take Profit = 15 пунктов
Stop Loss
фиксированный Stop Loss = 10 пунктов
Требование
TP и SL должны выставляться сразу в момент открытия сделки.
Не допускается открытие сделки без стоп-лосса и тейк-профита.
9. Важное уточнение по пунктам
Необходимо корректно реализовать расчёт пунктов для EUR/USD с учётом 5-значных котировок.
То есть программист должен правильно учитывать:
Point
Digits
корректный перевод 10 и 15 пунктов в реальные значения цены
Чтобы не получилось так, что вместо 10 пунктов робот поставит 10 пипсов или наоборот. Этот момент нужно сделать аккуратно и без ошибок.
10. Размер лота
Основное требование
Размер лота должен рассчитываться автоматически перед каждой новой сделкой по следующей формуле:
Лот = Баланс счёта / 1000
Примеры
Баланс 100 долларов → лот 0.10
Баланс 200 долларов → лот 0.20
Баланс 500 долларов → лот 0.50
Баланс 1000 долларов → лот 1.00
Баланс 1500 долларов → лот 1.50
Что обязательно учитывать
Программист должен реализовать корректный расчёт с учётом:
минимального допустимого лота у брокера
максимального допустимого лота у брокера
шага изменения лота у брокера
правильного округления до допустимого значения
Пример логики
Если формула дала 0.237, а шаг лота у брокера 0.01, значит нужно корректно округлить до допустимого значения.
Дополнительно
Лот должен пересчитываться каждый раз перед новой сделкой, а не один раз при запуске робота.
11. Ограничение по количеству позиций
Это очень важный пункт.
Советник должен:
одновременно держать только одну открытую сделку
не открывать новую сделку, пока предыдущая полностью не закрыта
не открывать встречную сделку, если уже есть активная позиция
не открывать вторую сделку в ту же сторону
не открывать серию ордеров
То есть в любой момент времени у робота либо:
нет позиции
либо есть ровно одна позиция
12. Запрещённые методы торговли
Советник не должен содержать или использовать:
мартингейл
сетку ордеров
усреднение убыточной позиции
доливки в убыточную позицию
открытие нескольких сделок подряд для “добора”
скрытые механизмы увеличения риска
хеджирование
локирование
повторное открытие сделки на одном и том же сигнале
Это принципиально важное требование.
13. Вход только по закрытию свечи
Сделки должны открываться только после закрытия сигнальной свечи.
Это значит:
робот анализирует уже закрытые свечи
вход выполняется на открытии следующей свечи
вход по незакрытой свече запрещён
Этот пункт нужен для того, чтобы не было ложных сигналов, которые появляются внутри часа и исчезают к закрытию свечи.
14. Защита от повторного входа
Нужно обязательно предусмотреть защиту от повторного открытия сделки на одном и том же баре.
То есть если сигнал уже был обработан на конкретной свече, робот не должен:
ещё раз открыть ордер на этом же баре
переоткрывать позицию из-за тиков
дублировать заявки
Желательно реализовать логику запоминания времени последнего обработанного бара.
15. Фильтр по спреду
Нужно добавить входной параметр:
максимально допустимый спред
Если в момент открытия сделки текущий спред выше этого значения, робот не должен входить в рынок.
Это нужно для защиты от плохих условий торговли, особенно в моменты расширения спреда.
Требования
параметр должен быть изменяемым
проверка должна происходить прямо перед открытием сделки
16. Magic Number
Необходимо добавить входной параметр:
Magic Number
Это нужно для того, чтобы робот мог отличать свои сделки от других сделок в терминале.
Требования
все ордера советника должны открываться только с указанным Magic Number
при проверке открытых позиций робот должен учитывать именно свои сделки по этому Magic Number
17. Входные параметры, которые должны быть доступны в настройках
Все основные параметры необходимо вынести во входные настройки советника.
Обязательные входные параметры:
период EMA 50
период EMA 200
период RSI
уровень RSI для BUY
уровень RSI для SELL
Take Profit
Stop Loss
максимальный спред
Magic Number
По лоту:
включение автолота
коэффициент расчёта лота от баланса
например: 1000 = 1.00 лот
Либо можно сделать это как:
параметр “Balance per 1 lot” = 1000
Чтобы при необходимости потом можно было поменять пропорцию.
18. Требования к коду
Код должен быть:
чистым
структурированным
понятным
без лишнего мусора
без намеренно запутанной логики
пригодным для дальнейших изменений
Желательно:
разделить блоки логики по функциям
отдельно вынести расчёт сигнала
отдельно расчёт лота
отдельно проверку спреда
отдельно открытие ордера
отдельно сопровождение сделки
То есть нужен не “скрипт на коленке”, а аккуратный рабочий советник.
19. Поведение после перезапуска терминала
После перезапуска терминала, отключения интернета, перезапуска VPS или повторного запуска MT5 робот должен:
корректно продолжать работу
видеть уже открытую им сделку
не открывать дубликат
корректно определять, что позиция уже существует
продолжать анализировать новые сигналы только после закрытия текущей сделки
20. Совместимость и тестирование
Советник должен:
корректно компилироваться в MetaEditor без критических ошибок
работать в тестере стратегий MT5
корректно открывать и закрывать сделки по заданной логике
нормально работать на реальном графике
21. Что нужно передать после завершения работы
После выполнения проекта необходимо предоставить:
исходный файл .mq5
скомпилированный файл .ex5
инструкцию по установке
краткое описание входных параметров
при необходимости — исправление ошибок после первой версии
22. Критерий готовности работы
Работа считается выполненной, если:
советник открывает сделки строго по заданным условиям
сделки открываются только на EUR/USD H1
одновременно открыта только одна позиция
TP и SL выставляются корректно
лот считается автоматически по формуле Баланс / 1000
робот не использует мартингейл, сетку и усреднение
робот не дублирует сделки
робот работает после перезапуска терминала
исходник mq5 передан заказчику
23. Дополнительный комментарий для программиста
Если какие-то моменты в реализации будут технически требовать уточнения, нужно сохранять исходную логику стратегии, а не менять её по своему усмотрению.
Нельзя самостоятельно:
менять условия входа
менять логику расчёта лота
добавлять дополнительные фильтры без согласования
добавлять сетку, мартингейл или усреднение
менять принцип “одна сделка одновременно”
Откликнулись
1
Оценка
Проекты
246
80%
Арбитраж
9
22%
/
56%
Просрочено
35
14%
Работает
Опубликовал: 3 статьи, 26 примеров
2
Оценка
Проекты
74
20%
Арбитраж
1
0%
/
100%
Просрочено
0
Свободен
3
Оценка
Проекты
186
32%
Арбитраж
5
60%
/
20%
Просрочено
3
2%
Свободен
Опубликовал: 3 примера
4
Оценка
Проекты
231
61%
Арбитраж
3
33%
/
33%
Просрочено
6
3%
Свободен
Опубликовал: 1 пример
5
Оценка
Проекты
132
56%
Арбитраж
1
0%
/
0%
Просрочено
0
Свободен
6
Оценка
Проекты
643
26%
Арбитраж
92
72%
/
14%
Просрочено
12
2%
Работает
Опубликовал: 1 пример
7
Оценка
Проекты
0
0%
Арбитраж
0
Просрочено
0
Свободен
8
Оценка
Проекты
22
9%
Арбитраж
3
0%
/
67%
Просрочено
3
14%
Работает
9
Оценка
Проекты
945
47%
Арбитраж
309
58%
/
27%
Просрочено
125
13%
Свободен
10
Оценка
Проекты
426
54%
Арбитраж
20
55%
/
15%
Просрочено
29
7%
Загружен
11
Оценка
Проекты
597
35%
Арбитраж
64
20%
/
58%
Просрочено
147
25%
Свободен
Опубликовал: 1 статью, 22 примера
Похожие заказы
Нужен советник на основе разворотных паттернов
500 - 900 USD
Требуется создать советник на основе разворотных паттернов, используя дополнительные индикаторы такие как скользящее среднее, отклонение от скользящей средней, угол наклона скользящей средней. Возможно будет добавлено что то еще по ходу работы
Суть ТС:Приход в POI старшего тф, вход в позицию на младшем тф Анализ графика начинается всегда со старшего тф. Должен быть понятный контекст для работы. Активы: EURUSD, XAUUSD POI старшего таймфрейма: Liquidity (1M, 1W, 1D, 4H, 1H) Imbalance (1M, 1W, 1D, 4H, 1H) Order Block (1M, 1W, 1D, 4H, 1H) HTF Fractals (1M, 1W, 1D, 4H, 1H) Всегда дожидаться цену в POI старшего таймфрейма. Вход в позицию: Слом LTF структуры на
к примеру 10 стратегий выстреливают одновременно в одну и ту же милисекунду при открытие бара надо их сделать последовательными один за другим, с проверкой, что предыдущий ордер был открыт и модифицирован SL TP оредра могут быть отложенные и маркет пока один ордер исполняется другие ждут в очереди так как используется ММ настоящий баланс double Total_Current_Risk() { double res = 0; for (int i = 0; i <
Информация о проекте
Бюджет
100+ USD