Технический взгляд. Оповещение в MT4

indАрхив с кодом индикатора с функциями оповещения Скачать.

Рано или поздно, в жизни любого трейдера приходит момент, когда уже нет возможности одновременно отслеживать все необходимый валютные пары, ситуации на разных таймфреймах, графиках. Для решения этого вопроса служат возможности оповещения, заложенные в Метатрейдере 4. Мы рассмотрим 4 таких функции:

  • Comment();
  • Alert();
  • Print();
  • SendMail(,).

Отмечу, что как таковые они не выделены, а входят в раздел Общие функции.


Функция Comment() выводит соответствующий комментарий в левом верхнем углу. Она может выводить аргументы, разделенные запятыми или один какой то аргумент. Для перехода на новую строку можно использовать строку "\n". В нашем примере эта функция рассматривается так:

double VOLA=(iHigh("0",0,Candle)-iLow("0",0,Candle))*(1/Point);
Comment ("VOLA=", MathRound(VOLA));

То есть, рассчитывается переменная VOLA как разница между максимальным и минимальным значением свечи (номер свечи Candle задается во входных параметрах), переводится в пункты и функция MathRound() уже берет целую часть. Comment показывает нам размер соответствующей свечи в пунктах.


Функция Print() выводит некоторое сообщение в журнал экспертов. В нашем случае:

if(print==true)
{ if(print_signal<=0 && BuyBuffer[1]!=EMPTY_VALUE)
{ Print("PRINT RSI( ",Symbol(),", ",Period()," ) - BUY!");
print_signal=1; }

if(print_signal>=0 && SellBuffer[1]!=EMPTY_VALUE)
{ Print("PRINT RSI( ",Symbol(),", ",Period()," ) - SELL!");
print_signal=-1;} }

она выводит сообщение "PRINT RSI , соответствующая валютная пара (Symbol()), период графика (Period()), сделка (BUY! или SELL!)". Она его выводит в случае, если во входных параметрах значение переменно print==true и соответствующий буфер заполнен:

Print

В основном, эта функция оповещения используется при написании советников с целью вывода кодов ошибок при их отладке.


Функция Alert() имеет аналогичную структуры, как и Print(). Выводит сообщение в виде Алерта и подает звуковой сигнал:

alert

Ее удобно использовать при отслеживании разных графиков. Как только сигнал на сделку там появляется, функция срабатывает и отображает соответствующее сообщение в MT4.

В примере она выглядит так:

if(alert==true)
{ if(alert_signal<=0 && BuyBuffer[1]!=EMPTY_VALUE)
{ Alert("RSI( ",Symbol(),", ",Period()," ) - BUY!");
alert_signal=1; }

if(alert_signal>=0 && SellBuffer[1]!=EMPTY_VALUE)
{ Alert("RSI( ",Symbol(),", ",Period()," ) - SELL!");
alert_signal=-1;} }


Функция SendMail(,) отправляет соответствующее сообщение на ваш E-mail. Она имеет 2 аргумента, разделенных запятой: (Тема письма, содержание письма). У нас она выглядит так:

if(message==true)
{ if(mes_signal<=0 && BuyBuffer[1]!=EMPTY_VALUE)
{ SendMail("RSI( "+Symbol()+", "+ (string) Period()+" ) - BUY!", "Покупай");
mes_signal=1; }

if(mes_signal>=0 && SellBuffer[1]!=EMPTY_VALUE)
{ SendMail("RSI( "+Symbol()+", "+ (string) Period()+" ) - SELL!", "Продавай");
mes_signal=-1;}}

И на почту приходят соответствующие письма:

mail m

Для работы этой функции должна быть настроена отправка писем в разделе Сервис-Настройки-Почта вашего MT4:

mail

Для Mail.ru. Настройки такие:

Сервер: smtp.mail.ru:465.

Логин: Адрес почты.

Пароль: Пароль от ящика.

От кого, Кому: указываю Terminal, адрес ящика.

Обязательно должна стоять галочка Разрешить. При отправке тестового сообщения в журнале должно появиться сообщение об успешной отправке:

test mes

На основе этой функции сделан раздел сайта Сигналы. Как только появляется сигнал, соответствующее сообщение отправляется на почту, а далее с почты формируется запись в виде торгового сигнала. Тема письма - Название записи, первый аргумент функции SendMail(,), содержание письма - содержание записи, второй аргумент функции SendMail(,).

indАрхив с кодом индикатора с функциями оповещения Скачать.