Trabalho concluído
Termos de Referência
Нужно написать советник, который будет мониторить котировки в наглядной форме.
Параметры советника:
- Refresh time (seconds) - по умолчанию 5
- Alert Warning time (seconds) - по умолчанию 60
- Alert Error time (seconds) - по умолчанию 600
- Alert Critical time (seconds) - по умолчанию 3600
Советник при старте должен:
- Добавить все имеющиеся символы в маркет вотч и отсортировать из по Path
- Убрать график с окна (или открыть новое пустое окно) и на нём нарисовать “кирпичиками” все инструменты, внутри каждого “кирпичика” должно быть его название. Размеры “кирпичика” должны вычисляться динамически исходя из количества инструментов и размеров окна. Заполняться экран кирпичиками должен рядами слева направо, и далее сверху вниз в соответствии с отсортированным маркет вотчем.
Вот примерно так, только ширина кирпичиков должна быть пропорциональна длине названия символа - чтобы их больше помещалось на экран. И внутри кирпичика должно быть написано название инструмента (например EURUSD)
- При наведении на “кирпичик” мышью должно в попапе или в статусной строке показываться его Path и время последней котировки (HH:MM)
- При дабл клике на “кирпичик” он должен “выключаться” - помечаться фиолетовым цветом (позже будет написано зачем). Повторное нажатие должно “включать” его обратно. При этом в файле disabled.txt должна добавляться или удаляться строка с именем этого инструмента.
Каждые N секунд (параметр Refresh time) советник должен:
- Смотреть последнее время котировки у всех инструментов
- если кирпичик “выключен” - пропускать его
- Проверять котировочную сессию у инструмента, если текущее время вне сессии - красить “кирпик” в серый цвет
- Если время последней котировки по символу отстаёт от текущего времени не больше чем на “Alert Warning time” секунд - покрасить кирпичик символа в зелёный цвет и остановить имеющиеся алерты по данному символу (см. далее про остановку алертов)
- Если время отстаёт больше чем на “Alert Warning time” - покрасить кирпичик в жёлтый цвет и запустить алерт по данному символу с Severity = Warning (см. далее про запуск алертов)
- Если время отстаёт больше чем на “Alert Error time” - покрасить кирпичик в оранжевый цвет и запустить алерт с Severity = Error
- Если время отстаёт больше чем на “Alert Critical time” - покрасить кирпичик в красный цвет и запустить алерт с Severity = Critical
Запуск алерта:
- если уже есть такой алерт с таким же severity - ничего не делаем
- если есть такой алерт по данному символу с другим северити - убираем алерт и продолжаем
- добавляем в файл alerts.txt строку “<symbol> <severity> <timespamp>”, например EURUSD WARNING 1642760162 , где число - время в формате количества секунд с 1970-01-01
- Шлём пуш сообщение “ALERT EURUSD WARNING”
Остановка алерта
- Убираем из файла alerts.txt строку с данным алертом
- Шлём пуш сообщение “RESOLVED EURUSD WARNING”
Замечание по работе:
- Эксперт должен быть написан на чистом MQL5 без использования DLL
- Скорее всего будет 2-3 разумных итерации по внешнему виду дашборда
- Разумные корректировки и дополнения по ТЗ приветствуются