Spezifikation
### Техническое задание (ТЗ) на создание индикатора для MT5
#### Цель:
Создать индикатор для MetaTrader 5 под названием **ChartTimeScroll**, который позволит пользователю переходить к определенной дате и времени на графике с помощью календаря. Календарь должен открываться при нажатии на иконку в нижнем левом углу графика и закрываться при клике вне окна календаря.
### Требования к функционалу:
1. **Иконка открытия календаря:**
- **Расположение:** Иконка должна находиться в нижнем левом углу графика и быть всегда видимой, независимо от масштаба графика или отображаемого периода.
- **Внешний вид:** Иконка может иметь стандартный вид (например, иконка календаря) или другой дизайн, согласованный с заказчиком.
- **Настраиваемость:** Пользователь сможет настроить размер, цвет и положение иконки в параметрах индикатора.
2. **Отображение и функциональность календаря:**
- **Вызов календаря:** По нажатию на иконку должен открываться календарь для выбора даты и времени.
- **Функциональность:** Календарь должен позволять выбрать как дату, так и точное время (часы и минуты). График должен автоматически перемещаться к выбранной отметке времени.
- **Внешний вид:** Календарь должен быть визуально схож с инструментом из TradingView и предоставлять удобный интерфейс для пользователя.
3. **Закрытие календаря:**
- Календарь должен закрываться, если пользователь кликает за пределами его окна.
- Также должно быть предусмотрено закрытие по нажатию на кнопку "Закрыть" в окне календаря.
4. **Прокрутка графика:**
- График должен автоматически перемещаться к выбранной дате и времени после выбора в календаре.
- Если данных на выбранную дату нет (например, дата в будущем), должно появляться сообщение "Нет данных для выбранного периода".
5. **Совместимость с таймфреймами:**
- Календарь должен корректно работать на всех таймфреймах от M1 до MN1, с возможностью точного перемещения к выбранной отметке вне зависимости от текущего таймфрейма.
6. **Производительность:**
- Индикатор не должен вызывать задержки или нагружать терминал, операции по открытию и закрытию календаря, а также перемещению графика, должны выполняться без задержек.
7. **Визуальные настройки иконки и календаря:**
- В настройках индикатора должны быть следующие параметры:
- Размер иконки.
- Положение иконки (возможность изменения положения на графике).
- Цвет иконки.
- Цвет и стиль календаря (линий, фона и текста).
8. **Удаление индикатора:**
- При удалении индикатора с графика все созданные объекты (иконка и календарь) должны быть полностью удалены без следов.
### Дополнительные требования:
1. **Корректная работа с любыми символами и таймфреймами:**
- Индикатор должен корректно работать на всех таймфреймах (от M1 до MN1) и поддерживать любые символы.
2. **Тестирование и поддержка:**
- Индикатор должен быть проверен на совместимость с тестером стратегий MT5 и корректно отображать данные при большом объеме исторической информации.
3. **Работа с другими индикаторами и советниками:**
- Индикатор должен работать параллельно с другими индикаторами и советниками на одном счете, но на разных символах и таймфреймах.
- Все объекты, созданные индикатором, должны быть доступны для других индикаторов, которые могут копировать их на другие графики того же символа.
### Технические требования:
- **Оптимизация:** Индикатор должен быть оптимизирован для работы без задержек даже при большом объеме данных.
- **Совместимость с тестером:** Индикатор должен корректно функционировать в тестере стратегий MetaTrader 5.
- **Исходный код:** Программист обязан предоставить исходный код с подробными комментариями, чтобы код можно было легко модифицировать в будущем.
### Документация:
Программист должен предоставить инструкцию по настройке и использованию индикатора.