Техническое задание (ТЗ)
Советник для MetaTrader 5: «1-2-3 + Голова и Плечи с пробоем флета»
1. Общие сведения
Параметр
Значение
Название проекта
Expert Advisor 123_HeadShoulders_EA
Платформа
MetaTrader 5
Язык программирования
MQL5
Тип торгового робота
Автоматический, работающий на закрытии бара
Режим работы
Long и Short
Рекомендуемые таймфреймы
H1, H4 (опционально M15, D1)
Рекомендуемые инструменты
Forex (мажоры), индексы
Цель: Автоматическая торговля на основе двух классических разворотных Price Action паттернов с фильтром пробоя флета и дифференцированным размером лота.
2. Торговые паттерны
2.1. Паттерн «1-2-3» (базовая логика)
Определение свингов (фракталов):
Свинг определяется по N барам слева и N барам справа (параметр InpLeftBars/InpRightBars).
Swing Low: Low бара ниже Low всех соседних баров.
Swing High: High бара выше High всех соседних баров.
Условия покупки (Long 1-2-3):
Точка P1 — Swing Low (начало нисходящего движения).
Точка P2 — Swing High после P1 (откат вверх).
Точка P3 — Swing Low после P2, строго выше P1 (low3 > low1).
Цена закрытия текущего бара пробивает уровень P2 вверх (Close[1] > High[P2]).
Условия продажи (Short 1-2-3):
Точка P1 — Swing High.
Точка P2 — Swing Low после P1.
Точка P3 — Swing High после P2, строго ниже P1 (high3 < high1).
Цена закрытия текущего бара пробивает уровень P2 вниз (Close[1] < Low[P2]).
Глубина поиска: Не более InpMaxBarsBack баров от текущего.
2.2. Паттерн «Голова и плечи» (расширенная логика)
Классический (Sell):
Три последовательных Swing High: Левое плечо → Голова → Правое плечо.
Голова выше обоих плеч.
Разница высот плеч ≤ 30% от высоты фигуры (голова − линия шеи).
Сигнал: пробой линии шеи вниз (среднее из двух минимумов между пиками).
Перевернутый (Buy):
Три последовательных Swing Low: Левое плечо → Голова → Правое плечо.
Голова ниже обоих плеч.
Сигнал: пробой линии шеи вверх.
3. Фильтр «Пробой флета» (только для паттерна 1-2-3)
Концепция: Советник входит по 1-2-3 только при условии, что паттерн совпал с пробоем границ горизонтального канала (флета), сформированного за последние N баров.
Алгоритм:
Построение канала:
За период InpFlatPeriod (по умолчанию 100 баров) находится:
flatHigh = максимум High всех баров диапазона (кроме текущего бара пробоя).
flatLow = минимум Low всех баров диапазона.
Ширина канала = flatHigh − flatLow.
Допуск касания = channelWidth × InpTouchTolerancePct / 100.
Проверка предварительного теста уровня (опционально, InpRequireTouch):
Для пробоя вверх: хотя бы один бар в диапазоне должен касаться flatHigh.
Для пробоя вниз: хотя бы один бар должен касаться flatLow.
«Касание» = High/Low в пределах допуска от границы.
Подтверждение пробоя на последнем закрытом баре (shift=1):
Пробой вверх: Close[1] > flatHigh ИЛИ High[1] > flatHigh.
Пробой вниз: Close[1] < flatLow ИЛИ Low[1] < flatLow.
Интеграция с 1-2-3:
Для Buy по 1-2-3 требуется подтверждённый пробой вверх.
Для Sell по 1-2-3 требуется подтверждённый пробой вниз.
⚠️ Важно: Фильтр применяется только к паттерну 1-2-3. Паттерн «Голова и плечи» работает без фильтра флета, так как сама структура фигуры уже подразумевает пробой линии шеи.
4. Система управления капиталом
4.1. Лоты
Паттерн
Используемый лот
Формула
1-2-3 (Buy/Sell)
Базовый
InpBaseLot
Голова и плечи (Sell)
Удвоенный
InpBaseLot × InpHSLotMultiplier
Перевернутая голова и плечи (Buy)
Удвоенный
InpBaseLot × InpHSLotMultiplier
Логика множителя:
Множитель применяется однократно при каждом входе по Голове и плечах.
Это НЕ мартингейл: размер лота не зависит от результата предыдущих сделок.
При входе по 1-2-3 всегда используется InpBaseLot вне зависимости от истории.
4.2. Стоп-лосс и Тейк-профит
Для 1-2-3:
SL Buy: Low[P3] − InpSL_Points × _Point
SL Sell: High[P3] + InpSL_Points × _Point
TP: рассчитывается по соотношению Risk:Reward (InpRR_Ratio)
risk = Entry − SL (для Buy)
TP = Entry + risk × InpRR_Ratio
Для Головы и плеч:
SL Sell: HeadPrice + InpSL_Points × _Point
SL Buy (перевернутый): HeadPrice − InpSL_Points × _Point
TP: аналогично, через R:R.
5. Входные параметры (input variables)
№
Имя параметра
Тип
По умолчанию
Описание
1
InpLeftBars
int
3
Баров слева для определения свинга
2
InpRightBars
int
3
Баров справа для определения свинга
3
InpSL_Points
int
500
Отступ SL от точки P3/головы (в пунктах)
4
InpRR_Ratio
double
2.0
Соотношение Risk:Reward
5
InpBaseLot
double
0.1
Базовый лот (для 1-2-3)
6
InpHSLotMultiplier
double
2.0
Множитель лота для Головы и плеч
7
InpMagic
ulong
123456
Магический номер советника
8
InpMaxBarsBack
int
100
Макс. глубина поиска паттернов
9
InpUsePattern123
bool
true
Разрешить торговлю по 1-2-3
10
InpUseHeadShoulders
bool
true
Разрешить торговлю по Голове и плечах
11
InpUseFlatBreakout
bool
true
Включить фильтр пробоя флета
12
InpFlatPeriod
int
100
Период построения канала флета (бары)
13
InpTouchTolerancePct
double
0.5
Допуск касания границы канала (% от ширины)
14
InpRequireTouch
bool
true
Требовать предварительный тест границы перед пробоем
15
InpDebugMode
bool
false
Вывод отладочных сообщений в журнал
6. Технические требования
6.1. Логика работы
Советник проверяет условия только на закрытии нового бара (фильтр IsNewBar()).
Одновременно открыта не более одной позиции по инструменту.
После открытия позиции поиск новых сигналов приостанавливается до её закрытия.
Защита от повторного входа по одной и той же точке (запоминание lastTradedIndex).
6.2. Исполнение ордеров
Использование класса CTrade из стандартной библиотеки.
Тип заполнения: ORDER_FILLING_FOK (с возможностью смены на IOC под брокера).
Максимальное проскальзывание: 10 пунктов.
Комментарий к ордеру: тип паттерна («123 Buy + Flat Breakout», «H&S Sell», «Inv H&S Buy» и т.д.).
6.3. Инициализация и деинициализация
При OnInit() — установка магического номера, допуска, типа заполнения.
При OnDeinit() — освобождение ресурсов (актуально при использовании индикаторов).
7. Управление рисками
Требование
Реализация
Обязательный SL
Да, на каждой сделке
Обязательный TP
Да, через R:R
Ограничение позиций
1 позиция на символ
Защита от повторного входа
По индексу ключевой точки
Контроль ошибок открытия
Вывод ResultRetcode и ResultRetcodeDescription в журнал
8. Логирование и отладка
При InpDebugMode = true в журнал Experts выводятся:
Границы канала флета (High/Low, ширина, допуск).
Количество касаний границ.
Факт пробоя и его направление.
Координаты точек P1/P2/P3 и их цены.
Причины отказа от входа (не найден P2, не выполнены условия и т.д.).
Ошибки исполнения ордеров.
При InpDebugMode = false — только подтверждённые сделки и критические ошибки.
9. Критерии приёмки
Советник считается готовым, если:
Код компилируется в MetaEditor без ошибок и предупреждений.
В тестере стратегий MT5 проходит бэктест на периоде ≥ 1 года без критических ошибок.
Открывает сделки по паттерну 1-2-3 только при подтверждённом пробое флета.
Открывает сделки по Голове и плечах с удвоенным лотом, без фильтра флета.
Лот при входе по Голове и плечах = InpBaseLot × InpHSLotMultiplier (фиксированно, без накопления).
На каждой сделке корректно выставляются SL и TP.
Не открывает более одной позиции одновременно.
Работает в режиме «Все тики» и «По ценам открытия».
Корректно обрабатывает ошибки брокера (недостаточно средств, невалидный стоп и т.п.).
10. Рекомендации по эксплуатации
Оптимизация: Перед реальной торговлей провести оптимизацию параметров InpLeftBars, InpRightBars, InpFlatPeriod, InpRR_Ratio на истории ≥ 3 лет.
Депозит: Минимальный рекомендуемый депозит для лота 0.1 — от 5000 USD (при плече 1:100).
Брокер: Проверить тип исполнения (FOK/IOC) в спецификации контракта; при необходимости изменить в OnInit().
Мониторинг: Вести журнал сделок с привязкой к типу паттерна для последующего анализа эффективности.
Обновления: При изменении рыночных условий пересматривать параметры чувствительности свингов (LeftBars/RightBars).
11. Исключения и ограничения
Советник не использует мартингейл, усреднение или сетки.
Советник не торгует на новостях (при необходимости добавить новостной фильтр отдельно).
Советник не хеджирует позиции (одна позиция в одну сторону).
Не реализован трейлинг-стоп (может быть добавлен как расширение).
Не реализован фильтр по спреду и времени суток (может быть добавлен как расширение).
Статус ТЗ: ✅ Утверждено
Дата: 13 июля 2026
Версия: 1.0
123_Pattern_EA.ex5 (35 Kb)
123_Pattern_EA.mq5 (17 Kb)
Комментарии (1)
25 igrun Автор Сообщений: 1904 - igrun
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий