Spécifications
#### Описание задачи:
Необходимо разработать торгового бота на языке программирования MQL4 для работы в терминале MetaTrader 4. Бот должен использовать уровни, нанесенные на график с помощью объектов типа `trendline` и `rectangle`, и работать согласно заданным правилам.
#### Правила работы бота:
1. **Определение уровней**:
- Объекты `trendline` и `rectangle` имеют строку в поле `Имя`, содержащую команду для бота.
- Для `trendline` строка имеет формат: `C2_!sell_2024.06.28@1.26750$1.26683`, где:
- `_!sell_` или `_!buy_` определяют тип уровня (продажа или покупка).
- Для `rectangle` строка имеет формат: `R95_2024.07.03 00:00@1.27774_1.26113$1.27706$1.26045`, где:
- `R95` или `R68` определяют область, а `1.27706$1.26045` определяют цены верхней и нижней границы области.
2. **Типы отработки уровней на выбор пользователя**:
- **Limit**:
- Бот выставляет лимитные ордера на видимых уровнях с командами `_!sell_` и `_!buy_`, и границах областей `R68` и `R95`.
- **Разворот**:
- Бот ожидает касания уровня ценой и разворота следующей свечи:
- Для продаж: свеча должна закрыться ниже уровня.
- Для покупок: свеча должна закрыться выше уровня.
- Если свеча не соответствует условиям разворота, сделка отменяется.
- **Закрепление**:
- Бот ожидает закрытия цены выше уровня `_!sell_` или верхней границы области R68 для продаж и ниже уровня `_!buy_` или нижней границы области R68 для покупок, и немедленно открывает соответствующую сделку.
3. **Блок управления капиталом**:
- **Выбор риска**:
- Процент от депозита.
- Фиксированный объем в лотах.
- Фиксированный риск в долларах.
- Поле для ввода значения для данного блока.
- **Тип StopLoss**:
- От границы 68 области.
- От границы 95 области.
- От точки входа.
- Строка для ввода значения:
- Если выбраны области, указывается коэффициент от размера области (например, если область 68 размером 1000 пунктов и пользователь указывает значение 0.6, то стоп будет выставлен на 600 пунктов ниже нижней границы области 68 для покупок, и аналогично для продаж).
- Если выбран пункт "От точки входа", то стоп-лосс указывается в пунктах.
- **Тип TakeProfit**:
- Ближайший уровень (например, для покупки это будет уровень с командой `_!sell_` или верхняя граница области R68).
- Граница 68 области (например, для покупки профитом будет верхняя граница 68 области).
- Уровень `_!pr_` (бот должен учитывать уровень с командой `_!pr_`, который находится выше уровня покупки и закрывать на этом уровне профит, независимо от выбранного типа TakeProfit; аналогично для продаж).
4. **Дополнительные настройки**:
- **Запуск и остановка бота**:
- Время старта робота в формате 24 часа.
- Время остановки бота в формате 24 часа.
- **Закрытие позиций**:
- Закрытие открытых позиций в этот же день, если они в прибыли, в указанное время (формат 24 часа).
- Закрытие открытых позиций на следующий день, если они в прибыли, в указанное время (формат 24 часа).
- Если сделки к указанному времени находятся в убытке, то условия по закрытию переносятся на следующий день к указанному часу.
- **Разрешение на открытие позиций**:
- Открывать покупки: Да или Нет.
- Открывать продажи: Да или Нет.
#### Технические требования:
1. **Определение уровней**:
- Бот должен уметь считывать названия объектов `trendline` и `rectangle` на графике.
- Извлекать команду из строки имени объекта.
2. **Типы ордеров**:
- Лимитные ордера.
- Рыночные ордера при развороте или закреплении цены за уровнем.
3. **Управление ордерами**:
- Выставление и управление лимитными ордерами.
- Отслеживание условий разворота и пробоя для рыночных ордеров.
4. **Управление рисками**:
- Реализовать расчет StopLoss и TakeProfit по выбранным параметрам.
- Поддержка различных типов стоп-лоссов и тейк-профитов.
5. **Дополнительные функции**:
- Запуск и остановка бота в указанное время.
- Закрытие позиций по условиям прибыли в заданное время.
- Настройка разрешений на открытие покупок и продаж.
#### Интерфейс пользователя:
1. **Меню настройки**:
- **Основные настройки**:
- Время старта бота (24 часа).
- Время остановки бота (24 часа).
- Закрытие позиций в прибыли в этот же день (24 часа). (если стоит 0, то функция выключена)
- Закрытие позиций в прибыли на следующий день (24 часа). (если стоит 0, то функция выключена)
- **Управление ордерами**:
- Выбор типа отработки уровней: Limit, Разворот, Закрепление.
- Настройка параметров StopLoss:
- Тип: Процент от депозита, Фиксированный объем в лотах, Фиксированный риск в долларах.
- Размер: от границы 68 области, от границы 95 области, от точки входа.
- Настройка параметров TakeProfit:
- Тип: Ближайший уровень, Граница 68 области.
- **Разрешения на открытие позиций**:
- Открывать покупки: Да или Нет.
- Открывать продажи: Да или Нет.
#### Примечания:
- Бот должен работать в тестере в режиме визуализация по шаблонам.
- Реализовать защиту от повторного открытия ордеров на одном уровне.