Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 73
- Рейтинг:
- Опубликован:
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Logify - это библиотека логов для MQL, предназначенная для упрощения отладки, отслеживания и мониторинга советников и индикаторов. Она предоставляет структурированные, настраиваемые и организованные журналы непосредственно на графике или в терминале, с поддержкой уровней журнала, гибких форматов и нескольких обработчиков. Легкое, элегантное решение, которое легко интегрировать в ваши MQL-проекты.
📦 Особенности
- Несколько уровней журнала: DEBUG, INFO, ALERT, ERROR, FATAL
- Отображение логов непосредственно на графике, в терминале, в файлах или даже в базе данных
- Настраиваемый формат и расположение логов
- Модульная архитектура с несколькими обработчиками
- Легкий и простой в интеграции и использовании
🚀 Установка
- Скопируйте папку /Logify по адресу:
.MQL5/Include/
- Включите Logify в ваш советник, индикатор или скрипт:
#include <Logify/Logify.mqh>
- Можно установить с помощью Git, просто зайдите в репозиторий и следуйте инструкциям.
🔧 Пример быстрого запуска
Простой пример с настройками по умолчанию:
//+------------------------------------------------------------------+ //| Импорт| //+------------------------------------------------------------------+ #include <Logify/Logify.mqh> CLogify Logify; //+------------------------------------------------------------------+ //| Функция инициализации эксперта| //+------------------------------------------------------------------+ int OnInit() { //--- Пример журналов Logify.Debug("Initialization started"); Logify.Info("Account balance is OK"); Logify.Alert("Take profit reached"); Logify.Error("Failed to send order", "Order", "Reason: No money"); Logify.Fatal("Critical error: Invalid input parameters"); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+
Расширенный пример с пользовательскими настройками обработчика. В этом примере мы сохраняем запись журнала в файлы и в комментарии к графику. Кастомизируем настройки для каждого из них.
//+------------------------------------------------------------------+ //| Импорт| //+------------------------------------------------------------------+ #include <Logify/Logify.mqh> CLogify Logify; //+------------------------------------------------------------------+ //| Функция инициализации эксперта| //+------------------------------------------------------------------+ int OnInit() { //--- Настройте обработчик комментариев MqlLogifyHandleCommentConfig config_comment; config_comment.size = 10; config_comment.frame_style = LOG_FRAME_STYLE_SINGLE; config_comment.direction = LOG_DIRECTION_UP; config_comment.title = "My Expert"; //--- Создайте и настройте обработчик комментариев CLogifyHandlerComment *handler_comment = new CLogifyHandlerComment(); handler_comment.SetConfig(config_comment); handler_comment.SetLevel(LOG_LEVEL_DEBUG); handler_comment.SetFormatter(new CLogifyFormatter("{date_time} [{levelname}]: {msg}","hh:mm:ss")); //--- Настройте обработчик файлов MqlLogifyHandleFileConfig file_config; file_config.CreateDateRotationConfig("my_expert","logs",LOG_FILE_EXTENSION_LOG,10,100,CP_UTF8); //--- Создайте и настройте обработчик файлов CLogifyHandlerFile *handler_file = new CLogifyHandlerFile(); handler_file.SetConfig(file_config); handler_file.SetLevel(LOG_LEVEL_DEBUG); handler_file.SetFormatter(new CLogifyFormatter("{date_time} [{levelname}]: {msg} ({filename} | {origin} | {function})","hh:mm:ss")); //--- Прикрепите обработчик Logify.AddHandler(handler_comment); Logify.AddHandler(handler_file); //--- Пример журналов Logify.Debug("Initialization started"); Logify.Info("Account balance is OK"); Logify.Alert("Take profit reached"); Logify.Error("Failed to send order", "Order", "Reason: No money"); Logify.Fatal("Critical error: Invalid input parameters"); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+
Чтобы разобраться в настройках, рекомендую прочитать статьи ниже, где я рассказываю о каждом шаге развития библиотеки:
- Mastering Log Records (Part 1): Фундаментальные концепции и первые шаги в MQL5
- Освоение записей журналов (часть 2): Форматирование журналов
- Освоение записей журналов (часть 3): Изучение обработчиков для сохранения журналов
- Освоение записей журналов (часть 4): Сохранение журналов в файлы
- Освоение записи журналов (часть 5): Оптимизация обработчика с помощью кэша и ротации
- Освоение записи журналов (часть 6): Сохранение журналов в базу данных
- Освоение записей журналов (часть 7): Как отображать журналы на графике
- Освоение записей журналов (часть 8): Записи об ошибках, которые переводят сами себя
- Освоение записей журналов (часть 9): Реализация шаблона builder и добавление конфигураций по умолчанию
- Освоение записей журнала (часть 10): Избежание повторного воспроизведения журнала путем реализации подавления
✔️ Уровни журналов
Уровень | Описание |
---|---|
DEBUG | Развернутая информация для отладки |
INFO | Общая информация |
ALERT | Предупреждения или важные события |
ERROR | Ошибки, требующие внимания |
FATAL | Критические ошибки, остановка выполнения |
🖥️ Включенные обработчики
Каждый обработчик определяет, где будут отображаться или храниться журналы.
Обработчик | Описание |
---|---|
Комментарий | Отображение журналов непосредственно на графике (Комментарий) |
Консоль | Отображение логов в терминале MetaTrader |
Файл | Сохранение логов в файлы .txt или .log |
База данных | Хранит логи в локальной базе данных SQLite |
Вы можете использовать один или сочетать несколько обработчиков одновременно, например, графический + файловый + консольный.
🛠️ Формат журнала
Пример шаблона форматирования:
"{date_time} [{levelname}]: {msg}"
Доступные токены:
- {levelname}: Имя уровня (DEBUG, INFO, ERROR и т. д.).
- {msg}: Основное сообщение
- {args}: Дополнительные аргументы или сведения
- {timestamp}: Временная метка в секундах (Unix Time)
- {date_time}: Форматированная дата и время (чч:мм:сс и т.д.)
- {level}: Числовой код уровня (0 = DEBUG, 1 = INFO...)
- {origin}: Происхождение или контекст, определенный в вызове журнала
- {filename}: Имя исходного файла (если доступно)
- {function}: Имя функции, из которой был вызван вызов
- {line}: Номер строки в коде, в которой произошел лог
⚖️ Лицензия
Лицензия MIT - Свободно использовать для личных и коммерческих проектов.
👨💻 Автор
Разработан joaopedrodev с целью сделать разработку на MQL более профессиональной, организованной и эффективной.
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/59821

Бар Engulfing возникает ниже скользящей средней Ema, которая растет - Торговля на покупку -.

Этот советник (EA) предназначен для высокочастотной торговли на 1-минутном графике (M1) на рынках форекс и криптовалют. Он использует RSI и свечные модели для определения сигналов на покупку и продажу, автоматически исполняя сделки с динамическими уровнями стоп-лосса, тейк-профита и трейлинг-стопа в зависимости от волатильности рынка.

Индикатор Rsi

Баланс сил (BOP) - это индикатор, первоначально разработанный Игорем Лившиным в 2001 году для измерения баланса сил между покупателями и продавцами во время каждой свечи.