Mql Master канал

@channel_mqlmasters
MQL5 для начинающих: как вывести комментарий на график и сообщение через Print() Когда начинаешь программировать торговых роботов для MetaTrader 5, рано или поздно возникает необходимость посмотреть, что происходит внутри программы. Правильно ли рассчитывается цена? Какое значение получила переменная? Выполнилось ли нужное условие? Почему советник не открывает сделку? Для решения этих задач в MQL5 есть две очень полезные функции: Comment() и Print(). Первая позволяет выводить информацию непосредственно на график, а вторая записывает сообщения в журнал терминала. Разберём их на простых примерах и напишем небольшой советник, который показывает текущие цены Bid и Ask. Эти инструменты станут основой для дальнейшей отладкп торговых алгоритмов. 1. Как вывести комментарий на график с помощью Comment() Функция Comment() отображает текст в левом верхнем углу графика MetaTrader 5. Она удобна, когда нужно видеть состояние программы непосредственно во время работы советника. Самый простой пример выглядит так: void OnTick() { Comment("Мой первый советник работает!"); } После добавления советника на график и получения нового тика указанная надпись появится в верхней левой части окна графика. Но выводить можно не только обычный текст. Функция поддерживает несколько аргументов, поэтому удобно отображать значения переменных: void OnTick() { double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); Comment("Символ: ", _Symbol, "\nBid: ", DoubleToString(bid, _Digits), "\nAsk: ", DoubleToString(ask, _Digits)); } В результате на графике появятся три строки: название торгового инструмента, текущая цена Bid и цена Ask. Обратите внимание на \n. Это специальный символ переноса строки. С его помощью можно организовать вывод информации в несколько строк, чтобы комментарий оставался читаемым. Функция DoubleToString() позволяет преобразовать числовое значение в строку с указанным количеством знаков после запятой. В данном примере используется _Digits, чтобы отображать цены с количеством знаков, соответствующим торговому инструменту. Важно знать ещё одну особенность: при повторном вызове Comment() прежний текст заменяется новым. Если вы хотите очистить комментарий, можно выполнить команду: Comment(""); 2. Как вывести сообщение с помощью Print() Функция Print() решает другую задачу. Она записывает текст и значения переменных в журнал программы, а не непосредственно на график. Пример: void OnTick() { double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); Print("Текущая цена Bid: ", bid); } Когда поступает очередной тик, терминал добавляет запись с текущей ценой Bid. Посмотреть такие сообщения можно в окне инструментов терминала, во вкладке Experts («Эксперты»). На первый взгляд всё просто. Но есть нюанс: функция OnTick() вызывается при поступлении новых тиков. Если активно торгуемый инструмент получает много котировок, журнал быстро заполнится сообщениями. Поэтому в реальных советниках не стоит без необходимости вызывать Print() на каждом тике. Обычно эту функцию используют для фиксации важных событий: запуска советника, открытия позиции, ошибки выполнения торгового запроса или срабатывания определённого условия. Например: Print("Советник запущен"); Print("Получен торговый сигнал"); Print("Ошибка при отправке ордера"); Последнее сообщение, конечно, следует выводить только тогда, когда действительно произошла ошибка, а её причину желательно дополнительно записать в журнал. 3. В чём разница между Comment() и Print() Обе функции предназначены для вывода информации, но применяются в разных ситуациях. Comment() удобна для визуального контроля состояния советника. Например, можно показывать на графике текущий спред, направление тренда, количество открытых позиций или значение индикатора. Print() лучше подходит для отладки и записи событий. С её помощью проще выяснить, какая ветка кода выполнилась, какое значение получила переменная и на каком этапе появилась ошибка. Можно использовать обе функции одновременно
Если у вас установлено приложение,
вы можете сразу перейти в канал