Подскажите скрипт или другой способ для отправки сообщений

 
Добрый день!
Подскажите пожалуйста , как сделать так , чтобы при  открытии сделки покупки или продажи вручную в МТ 5 , на эл.почту отсылалось письмо с инфой о сделке . Может кто подскажет скрипт или другой способ это реализовать?
 

есть такая функция https://www.mql5.com/ru/docs/network/sendmail

есть даже пример готовый https://www.mql5.com/ru/code/10546

Документация по MQL5: Сетевые функции / SendMail
Документация по MQL5: Сетевые функции / SendMail
  • www.mql5.com
SendMail - Сетевые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Спасибо, индикатор AlertCloseOpenOrder из 2-й ссылки-на мт 4 прекрасно работает,но мне надо такой же для мт 5. В поиске по базе индикаторов  что то ничего не могу найти.


 
Евгения Диброва:

Спасибо, индикатор AlertCloseOpenOrder из 2-й ссылки-на мт 4 прекрасно работает,но мне надо такой же для мт 5. В поиске по базе индикаторов  что то ничего не могу найти.


можно попросить автора доработать он тут активен

 
Наверное так и сделаю, спасибо)
 
Евгения Диброва:
Добрый день!
Подскажите пожалуйста , как сделать так , чтобы при  открытии сделки покупки или продажи вручную в МТ 5 , на эл.почту отсылалось письмо с инфой о сделке . Может кто подскажет скрипт или другой способ это реализовать?

вот пример - как вам добавить в ваш эксперт отправка сообщений. нужно только всё настроить в терминале как надо.

жёлтым мечено, это что вам нужно добавить в ваш эксперт. и зелёным нужно в то место прописать где у вас срабатывает сигнал buy и sell

Снимок 

//+------------------------------------------------------------------+
//|                                                         mail.mq5 |
//|                                  Copyright 2021, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//---
sinput bool  EnableAlerts        = true;       //
sinput bool  EnableNotifications = true;       //
sinput bool  EnableEmails        = true;       //
//---
string   m_name_but[]= {"BUY","SELL"};
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   int but_y=5;
   for(int i=0; i<ArraySize(m_name_but); i++)
     {
      ButtonCreate(m_name_but[i],but_y,17,30,15,8);
      but_y=but_y+30;
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   for(int i=0; i<ArraySize(m_name_but); i++)
     {
      ObjectDelete(0,Symbol()+m_name_but[i]);
     }
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- NotifyCrossingBuy
   if(ObjectGetInteger(0,Symbol()+"BUY",OBJPROP_STATE)!=0)
     {
      ObjectSetInteger(0,Symbol()+"BUY",OBJPROP_STATE,0);
      NotifyCrossingBuy();
     }
//--- NotifyCrossingSell
   if(ObjectGetInteger(0,Symbol()+"SELL",OBJPROP_STATE)!=0)
     {
      ObjectSetInteger(0,Symbol()+"SELL",OBJPROP_STATE,0);
      NotifyCrossingSell();
     }
  }
//+------------------------------------------------------------------+
//|  NotifyCrossingBuy                                               |
//+------------------------------------------------------------------+
void NotifyCrossingBuy(void)
  {
   string msg=" Price crossed Buy ";
   if(EnableAlerts)
      Alert(msg);
   if(EnableNotifications)
      SendNotification(msg);
   if(EnableEmails)
      SendMail(" EnableEmails ",msg);
   Print(msg);
  }
//+------------------------------------------------------------------+
//|  NotifyCrossingSell                                              |
//+------------------------------------------------------------------+
void NotifyCrossingSell(void)
  {
   string msg=" Price crossed Sell ";
   if(EnableAlerts)
      Alert(msg);
   if(EnableNotifications)
      SendNotification(msg);
   if(EnableEmails)
      SendMail(" EnableEmails ",msg);
   Print(msg);
  }
//+------------------------------------------------------------------+
//    buttoncreate                                                   |
//+------------------------------------------------------------------+
bool ButtonCreate(string name,int Xdist,
                  int Ydist,int Xsize,int Ysize,int FONTSIZE=12)
  {
   if(ObjectFind(0,Symbol()+name)<0)
      ObjectCreate(0,Symbol()+name,OBJ_BUTTON,0,100,100);
   ObjectSetInteger(0,Symbol()+name,OBJPROP_COLOR,clrWhite);
   ObjectSetInteger(0,Symbol()+name,OBJPROP_BGCOLOR,clrDimGray);
   ObjectSetInteger(0,Symbol()+name,OBJPROP_XDISTANCE,Xdist);
   ObjectSetInteger(0,Symbol()+name,OBJPROP_YDISTANCE,Ydist);
   ObjectSetInteger(0,Symbol()+name,OBJPROP_XSIZE,Xsize);
   ObjectSetInteger(0,Symbol()+name,OBJPROP_YSIZE,Ysize);
   ObjectSetString(0,Symbol()+name,OBJPROP_FONT,"Sans Serif");
   ObjectSetString(0,Symbol()+name,OBJPROP_TEXT,name);
   ObjectSetInteger(0,Symbol()+name,OBJPROP_FONTSIZE,FONTSIZE);
   ObjectSetInteger(0,Symbol()+name,OBJPROP_SELECTABLE,false);
   return(true);
  }
//+------------------------------------------------------------------+
 
SanAlex:

вот пример - как вам добавить в ваш эксперт отправка сообщений. нужно только всё настроить в терминале как надо.

жёлтым мечено, это что вам нужно добавить в ваш эксперт. и зелёным нужно в то место прописать где у вас срабатывает сигнал buy и sell

 

Спасибо конечно, но для меня всё это тёмный лес).Например, как реализовать функцию отправки сообщений на эл.почту  в этом индикаторе https://www.mql5.com/ru/code/26524

Автор пока не отвечает.

Alert Position Open
Alert Position Open
  • www.mql5.com
Помощник - оповещает выбранным звуком об открытии позиции
 
Евгения Диброва:

Спасибо конечно, но для меня всё это тёмный лес).Например, как реализовать функцию отправки сообщений на эл.почту  в этом индикаторе https://www.mql5.com/ru/code/26524

Автор пока не отвечает.

вот где жёлтым добавил - (" false "это выключено ) (" true "это вкл. )

\\\\\\\\\\\\\\\\\\\\\\\\\\

SendNotification - Сетевые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5

SendMail - Сетевые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5

//+------------------------------------------------------------------+
//|                                          Alert Position Open.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//--- input parameters
input bool     InpAlert            = false;          // Alert
input bool     EnableNotifications = false;          // Notifications
input bool     EnableEmails        = false;          // Emails
input string   InpSound            = "expert.wav";   // Play Sound ("" -> off)
input bool     InpExperts          = false;          // Tab Experts
input bool     InpComment          = true;           // Comment on Chart
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  }
//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- get transaction type as enumeration value
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in history
   if(type==TRADE_TRANSACTION_DEAL_ADD)
     {
      long     deal_ticket       =0;
      long     deal_order        =0;
      long     deal_time         =0;
      long     deal_time_msc     =0;
      long     deal_type         =-1;
      long     deal_entry        =-1;
      long     deal_magic        =0;
      long     deal_reason       =-1;
      long     deal_position_id  =0;
      double   deal_volume       =0.0;
      double   deal_price        =0.0;
      double   deal_commission   =0.0;
      double   deal_swap         =0.0;
      double   deal_profit       =0.0;
      string   deal_symbol       ="";
      string   deal_comment      ="";
      string   deal_external_id  ="";
      //---
      long     o_ticket          =0;
      long     o_time_setup      =0;
      long     o_type            =-1;
      long     o_state           =-1;
      long     o_time_expiration =0;
      long     o_time_done       =0;
      long     o_time_setup_msc  =0;
      long     o_time_done_msc   =0;
      long     o_type_filling    =-1;
      long     o_type_time       =-1;
      long     o_magic           =0;
      long     o_reason          =-1;
      long     o_position_id     =0;
      long     o_position_by_id  =0;
      double   o_volume_initial  =0.0;
      double   o_volume_current  =0.0;
      double   o_open_price      =0.0;
      double   o_sl              =0.0;
      double   o_tp              =0.0;
      double   o_price_current   =0.0;
      double   o_price_stoplimit =0.0;
      string   o_symbol          ="";
      string   o_comment         ="";
      string   o_extarnal_id     ="";
      string str_o_time_setup       =TimeToString((datetime)o_time_setup,TIME_DATE|TIME_MINUTES|TIME_SECONDS);
      string str_o_type             =EnumToString((ENUM_ORDER_TYPE)o_type);
      string str_o_state            =EnumToString((ENUM_ORDER_STATE)o_state);
      string str_o_time_expiration  =TimeToString((datetime)o_time_expiration,TIME_DATE|TIME_MINUTES|TIME_SECONDS);
      string str_o_time_done        =TimeToString((datetime)o_time_done,TIME_DATE|TIME_MINUTES|TIME_SECONDS);
      string str_o_type_filling     =EnumToString((ENUM_ORDER_TYPE_FILLING)o_type_filling);
      string str_o_type_time        =TimeToString((datetime)o_type_time,TIME_DATE|TIME_MINUTES|TIME_SECONDS);
      string str_o_reason           =EnumToString((ENUM_ORDER_REASON)o_reason);
      if(HistoryDealSelect(trans.deal))
        {
         deal_ticket       =HistoryDealGetInteger(trans.deal,DEAL_TICKET);
         deal_order        =HistoryDealGetInteger(trans.deal,DEAL_ORDER);
         deal_time         =HistoryDealGetInteger(trans.deal,DEAL_TIME);
         deal_time_msc     =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC);
         deal_type         =HistoryDealGetInteger(trans.deal,DEAL_TYPE);
         deal_entry        =HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
         deal_magic        =HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
         deal_reason       =HistoryDealGetInteger(trans.deal,DEAL_REASON);
         deal_position_id  =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID);
         deal_volume       =HistoryDealGetDouble(trans.deal,DEAL_VOLUME);
         deal_price        =HistoryDealGetDouble(trans.deal,DEAL_PRICE);
         deal_commission   =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION);
         deal_swap         =HistoryDealGetDouble(trans.deal,DEAL_SWAP);
         deal_profit       =HistoryDealGetDouble(trans.deal,DEAL_PROFIT);
         deal_symbol       =HistoryDealGetString(trans.deal,DEAL_SYMBOL);
         deal_comment      =HistoryDealGetString(trans.deal,DEAL_COMMENT);
         deal_external_id  =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID);
         //--- try to get oeders ticket_history_order
         if(HistoryOrderSelect(deal_order))
           {
            o_ticket          =HistoryOrderGetInteger(deal_order,ORDER_TICKET);
            o_time_setup      =HistoryOrderGetInteger(deal_order,ORDER_TIME_SETUP);
            o_type            =HistoryOrderGetInteger(deal_order,ORDER_TYPE);
            o_state           =HistoryOrderGetInteger(deal_order,ORDER_STATE);
            o_time_expiration =HistoryOrderGetInteger(deal_order,ORDER_TIME_EXPIRATION);
            o_time_done       =HistoryOrderGetInteger(deal_order,ORDER_TIME_DONE);
            o_time_setup_msc  =HistoryOrderGetInteger(deal_order,ORDER_TIME_SETUP_MSC);
            o_time_done_msc   =HistoryOrderGetInteger(deal_order,ORDER_TIME_DONE_MSC);
            o_type_filling    =HistoryOrderGetInteger(deal_order,ORDER_TYPE_FILLING);
            o_type_time       =HistoryOrderGetInteger(deal_order,ORDER_TYPE_TIME);
            o_magic           =HistoryOrderGetInteger(deal_order,ORDER_MAGIC);
            o_reason          =HistoryOrderGetInteger(deal_order,ORDER_REASON);
            o_position_id     =HistoryOrderGetInteger(deal_order,ORDER_POSITION_ID);
            o_position_by_id  =HistoryOrderGetInteger(deal_order,ORDER_POSITION_BY_ID);
            o_volume_initial  =HistoryOrderGetDouble(deal_order,ORDER_VOLUME_INITIAL);
            o_volume_current  =HistoryOrderGetDouble(deal_order,ORDER_VOLUME_CURRENT);
            o_open_price      =HistoryOrderGetDouble(deal_order,ORDER_PRICE_OPEN);
            o_sl              =HistoryOrderGetDouble(deal_order,ORDER_SL);
            o_tp              =HistoryOrderGetDouble(deal_order,ORDER_TP);
            o_price_current   =HistoryOrderGetDouble(deal_order,ORDER_PRICE_CURRENT);
            o_price_stoplimit =HistoryOrderGetDouble(deal_order,ORDER_PRICE_STOPLIMIT);
            o_symbol          =HistoryOrderGetString(deal_order,ORDER_SYMBOL);
            o_comment         =HistoryOrderGetString(deal_order,ORDER_COMMENT);
            o_extarnal_id     =HistoryOrderGetString(deal_order,ORDER_EXTERNAL_ID);
            str_o_time_setup       =TimeToString((datetime)o_time_setup,TIME_DATE|TIME_MINUTES|TIME_SECONDS);
            str_o_type             =EnumToString((ENUM_ORDER_TYPE)o_type);
            str_o_state            =EnumToString((ENUM_ORDER_STATE)o_state);
            str_o_time_expiration  =TimeToString((datetime)o_time_expiration,TIME_DATE|TIME_MINUTES|TIME_SECONDS);
            str_o_time_done        =TimeToString((datetime)o_time_done,TIME_DATE|TIME_MINUTES|TIME_SECONDS);
            str_o_type_filling     =EnumToString((ENUM_ORDER_TYPE_FILLING)o_type_filling);
            str_o_type_time        =TimeToString((datetime)o_type_time,TIME_DATE|TIME_MINUTES|TIME_SECONDS);
            str_o_reason           =EnumToString((ENUM_ORDER_REASON)o_reason);
           }
         else
            return;
        }
      else
         return;
      ENUM_DEAL_ENTRY enum_deal_entry=(ENUM_DEAL_ENTRY)deal_entry;
      if(deal_type==DEAL_TYPE_BUY || deal_type==DEAL_TYPE_SELL)
         if(deal_entry==DEAL_ENTRY_IN)
           {
            string deal=(deal_type==DEAL_TYPE_BUY)?"buy":"sell";
            int digits=(int)SymbolInfoInteger(deal_symbol,SYMBOL_DIGITS);
            string text="deal #"+
                        IntegerToString(deal_ticket)+" "+
                        deal+" "+
                        DoubleToString(deal_volume,digits)+" "+
                        deal_symbol+" "+"at"+" "+
                        DoubleToString(deal_price,digits)+" ";
            if((deal_type==DEAL_TYPE_BUY && o_type!=ORDER_TYPE_BUY) ||(deal_type==DEAL_TYPE_SELL && o_type!=ORDER_TYPE_SELL))
              {
               string order="";
               if(o_type==ORDER_TYPE_BUY)
                  order="buy";
               if(o_type==ORDER_TYPE_SELL)
                  order="sell";
               if(o_type==ORDER_TYPE_BUY_LIMIT)
                  order="buy limit";
               if(o_type==ORDER_TYPE_SELL_LIMIT)
                  order="sell limit";
               if(o_type==ORDER_TYPE_BUY_STOP)
                  order="buy stop";
               if(o_type==ORDER_TYPE_SELL_STOP)
                  order="sell stop";
               if(o_type==ORDER_TYPE_BUY_STOP_LIMIT)
                  order="buy stop limit";
               if(o_type==ORDER_TYPE_SELL_STOP_LIMIT)
                  order="sell stop limit";
               if(o_type==ORDER_TYPE_CLOSE_BY)
                  order="close by";
               text=text+" "+"[#"+IntegerToString(o_ticket)+" "+order+"]";
              }
            if(InpAlert)
               Alert(text);
            if(EnableNotifications)
               SendNotification(text);
            if(EnableEmails)
               SendMail(" EnableEmails ",text);
            if(InpSound!="")
               PlaySound(InpSound);
            if(InpExperts)
               Print(text);
            if(InpComment)
               Comment(text);
           }
     }
  }
//+------------------------------------------------------------------+
Документация по MQL5: Сетевые функции / SendNotification
Документация по MQL5: Сетевые функции / SendNotification
  • www.mql5.com
SendNotification - Сетевые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
SanAlex:

вот где жёлтым добавил - (" false "это выключено ) (" true "это вкл. )

\\\\\\\\\\\\\\\\\\\\\\\\\\

SendNotification - Сетевые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5

SendMail - Сетевые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5

Вставила  точно как на рисунке, компиляция показала -без ошибок.При запуске индикатора в окне настроек появились новые строчки- Notifications и Emails. Ставлю везде -true,иидикатор вешается на график,но далее ничего не происходит- ни алерта нет ни сообщения на почту.В -Сервис-Настройки-почта всё поставлено,тестовое письмо на почту приходит.В - Сервис-Настройки-советники-стьоят галки -разрешить алгоритмическю торговлю и -разрешить импорт DLL
 
Евгения Диброва:
Вставила  точно как на рисунке, компиляция показала -без ошибок.При запуске индикатора в окне настроек появились новые строчки- Notifications и Emails. Ставлю везде -true,иидикатор вешается на график,но далее ничего не происходит- ни алерта нет ни сообщения на почту.В -Сервис-Настройки-почта всё поставлено,тестовое письмо на почту приходит.В - Сервис-Настройки-советники-стьоят галки -разрешить алгоритмическю торговлю и -разрешить импорт DLL

не когда не пользовался этими функциями - не могу Вам не чего посоветовать, но функции вроде правильно написаны по инструкции документации. 

 
Евгения Диброва:
 Ставлю везде -true,иидикатор вешается на график,но далее ничего не происходит- ни алерта нет ни сообщения на почту.

Транзакции при этом совершаете? Если нет, то ничего и не должно происходить.

Причина обращения: