Подскажите скрипт или другой способ для отправки сообщений
- Как можно доказать, что это реальный результат торговли эксперта ?
- Использования всех доступных ядер компьютера
- прием сообщений MQL4 с e mail почты
есть такая функция https://www.mql5.com/ru/docs/network/sendmail
есть даже пример готовый https://www.mql5.com/ru/code/10546

- www.mql5.com
Спасибо, индикатор AlertCloseOpenOrder из 2-й ссылки-на мт 4 прекрасно работает,но мне надо такой же для мт 5. В поиске по базе индикаторов что то ничего не могу найти.
Спасибо, индикатор AlertCloseOpenOrder из 2-й ссылки-на мт 4 прекрасно работает,но мне надо такой же для мт 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); } //+------------------------------------------------------------------+
вот пример - как вам добавить в ваш эксперт отправка сообщений. нужно только всё настроить в терминале как надо.
жёлтым мечено, это что вам нужно добавить в ваш эксперт. и зелёным нужно в то место прописать где у вас срабатывает сигнал buy и sell
Спасибо конечно, но для меня всё это тёмный лес).Например, как реализовать функцию отправки сообщений на эл.почту в этом индикаторе https://www.mql5.com/ru/code/26524
Автор пока не отвечает.

Спасибо конечно, но для меня всё это тёмный лес).Например, как реализовать функцию отправки сообщений на эл.почту в этом индикаторе https://www.mql5.com/ru/code/26524
Автор пока не отвечает.
вот где жёлтым добавил - (" false "это выключено ) (" true "это вкл. )
\\\\\\\\\\\\\\\\\\\\\\\\\\
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); } } } //+------------------------------------------------------------------+

- www.mql5.com
вот где жёлтым добавил - (" false "это выключено ) (" true "это вкл. )
\\\\\\\\\\\\\\\\\\\\\\\\\\
SendNotification - Сетевые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
SendMail - Сетевые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Вставила точно как на рисунке, компиляция показала -без ошибок.При запуске индикатора в окне настроек появились новые строчки- Notifications и Emails. Ставлю везде -true,иидикатор вешается на график,но далее ничего не происходит- ни алерта нет ни сообщения на почту.В -Сервис-Настройки-почта всё поставлено,тестовое письмо на почту приходит.В - Сервис-Настройки-советники-стьоят галки -разрешить алгоритмическю торговлю и -разрешить импорт DLL
не когда не пользовался этими функциями - не могу Вам не чего посоветовать, но функции вроде правильно написаны по инструкции документации.
Ставлю везде -true,иидикатор вешается на график,но далее ничего не происходит- ни алерта нет ни сообщения на почту.
Транзакции при этом совершаете? Если нет, то ничего и не должно происходить.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования