Как вывести комментарий на экран?

Программирование прибыли: от азов к секретам мастерства. Читайте, спрашивайте, делитесь опытом.
Бонус за сообщение 0.5$
Ответственный Модератор - Haos

Как вывести комментарий на экран?

Сообщение Haos » 20 апр 2016, 13:02

Часто в советниках возникает необходимость вывода некоторой информации в область окна ТФ, в которой расположен график цены. Для этих целей есть несколько возможных решений. Самым оптимальным с точки зрения ресурсов компьютера и кода советника является использование зарезервированной функции Comment(). Эта функция выводит в левый верхний угол окна графика необходимый комментарий. Рассмотрим её применение.
Создадим заготовку советника.
В разделе кода функции OnTick() введем три переменные типов: int, double и string.
Присвоим им значения:
Код: выделить все
   int      intA = 10;
   double   dblB = 3.14;
   string   strC = "Текст, выводимый в комментарий";

Выведем значения этих переменных в комментарий. Формат функции определяет порядок выведения требуемой информации через запятые.
Код: выделить все
   Comment( "\n", "Значение переменной strC : ", strC,
            "\n", "Значение переменной intA : ", intA,
            "\n", "Значение переменной intB : ", DoubleToStr(dblB, 2));

Чтобы информация была выведена в несколько строк используется символ перевода строки "\n".
После него в первой строке через перечисление идет заданный текст "Значение переменной strC : " и имя переменной (strC). Аналогично формируется вторая строка. Значения переменных типа целый (int) и строка (string) можно выводить без преобразований. Переменный типа double необходимо привести к строковому типу. Для этого используется функция DoubleToStr(dblB, 2). В данном случае в качестве первого параметра стоит имя переменной dblB, а в качестве второго параметра, который задает количество цифр после запятой, - 2. Подробную информацию об этой функции можно узнать, вызвав справку в редакторе кода.
Ниже представлен скрин с окна ТФ, где запущен данный эксперт. Видно, что в левом верхнем углу выводится заданная нами информация.
01.png

Полный код эксперта можно скачать ниже.
Вложения
EA-Example_006-v.1.mq4
(1.61 KB) Скачиваний: 65
Аватар пользователя
Haos
Специалист MQL
 
Сообщений: 24699
Зарегистрирован: 29 мар 2014, 16:07
Средств на руках: 193.70 Доллар
Группа: Главные модераторы
Благодарил (а): 3379 раз.
Поблагодарили: 8200 раз.

Как вывести комментарий на экран?

Сообщение ivis » 07 май 2016, 11:55

Здравствуйте,
задам вопрос Вам, поскольку в этой ветке наиболее близкое описание к моему пожеланию.
Итак, можно ли сделать эксперта, который будет выводить на экран инфу, о образовании фракталов на разных фреймах?
К примеру, на паре евродоллар есть эстремум по м15 или по фунту к йене появился экстремум на Н4...
Аватар пользователя
ivis
 
Сообщений: 2335
Зарегистрирован: 16 фев 2015, 08:14
Средств на руках: 16.99 Доллар
Группа: Базовая
Благодарил (а): 992 раз.
Поблагодарили: 443 раз.
Приглашаю index.php?r=800

Re: Как вывести комментарий на экран?

Сообщение Haos » 07 май 2016, 13:32

Можно. Только это в раздел для советников.
Аватар пользователя
Haos
Специалист MQL
 
Сообщений: 24699
Зарегистрирован: 29 мар 2014, 16:07
Средств на руках: 193.70 Доллар
Группа: Главные модераторы
Благодарил (а): 3379 раз.
Поблагодарили: 8200 раз.

Re: Как вывести комментарий на экран?

Сообщение Haos » 02 авг 2016, 13:33

В продолжении темы, хотелось бы рассмотреть мой личный прием комментирования необходимых значений в советнике.
Прежде всего в коде советника я задаю внешнюю переменную bolComm логического типа (bool) при помощи которой пользователь будет определять необходимо ли ему отображение комментария на экране.
Код: выделить все
input bool     bolComm     = true;  // Отображать комментарий?

Далее я прописываю в функции OnDeinit() вызов моей функции f_DeleteComment(), которая удаляет все комментарии с экрана. Это необходимо для того, чтобы комментарии исчезли с экрана при выключении советника.
Код: выделить все
void OnDeinit(const int reason)
{
   f_DeleteComment();
}

Сама функция небольшая и расположить её можно в конце кода:
Код: выделить все
void f_DeleteComment()
{
   Comment("\n", "");
}

Далее, в основной зарезервированной компилятором рабочей функции OnTick(), которая запускается на каждом тике, я прописываю следующий код:
Код: выделить все
if(bolComm)
{
      Comment( "\n", "... ", "...");
}
else
{
      f_DeleteComment();
}

В этом коде происходит анализ логической переменной bolComm и если она истинна (true), то выводится комментарий, а если ложна (false), то вызывается функция f_DeleteComment(), которая удалит комментарий.
Таким образом, даже во время работы советника пользователь может как включать отображение комментария на экран, так и выключать его.
Аватар пользователя
Haos
Специалист MQL
 
Сообщений: 24699
Зарегистрирован: 29 мар 2014, 16:07
Средств на руках: 193.70 Доллар
Группа: Главные модераторы
Благодарил (а): 3379 раз.
Поблагодарили: 8200 раз.


Вернуться в MQL – теория и практика

Кто сейчас на форуме?

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 86

Права доступа к форуму

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения