und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
- Ansichten:
- 1148
- Rating:
- Veröffentlicht:
- 2016.08.02 17:07
- Aktualisiert:
- 2016.11.22 07:34
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Diese Bibliothek wurde entworfen um Mails zu versenden.
Das Funktionsbündel eerweitert die Möglichkeiten des traditionellen SendMail. Jetzt können Sie Nachrichten im Text- und HTML-Format senden. Nachrichten können an mehrere Empfänger gesendet werden. Sie können eine oder mehrere Dateien an Ihre Mail anhängen. SSL wird unterstützt.
Der DLL Quellcode wurde in Delphi XE4 unter Verwendung der Indy Bibliothek geschrieben.
Neben den Projektdateien sollten Sie die OpenSSL Bibliothek installieren.
Liste der Bibliotheksfunktionen:
Funktion: | Beschreibung |
---|---|
MailConnect | Stellt Verbindung mit Mailserver her |
MailSendText | Sendet Texte |
MailSendHtml | Sendet HTML-Nachrichten |
MailSendInlineTextFile | Sendet Nachrichten mit eingefügten Textdateiinhalt |
MailSendInlineHtmlFile | Sendet Nachrichten mit eingefügten HTML-Dateiinhalt |
MailErrorDescription | Holt Fehlerbeschreibung zurück |
MailClose | Schliesst Verbindung zum Mailserver |
Fehlermeldungen:
Constant | Wert | Beschreibung |
---|---|---|
MAIL_NO_CONNECTION | -2 | keine Verbindung |
MAIL_NO_INITIALIZATION | -1 | kein Objekt für SMTP-Server |
MAIL_NO_ERROR | 0 | Kein Fehler |
MAIL_TIMEOUT | 1 | Verbindung wegen Time-Out unterbrochen |
MAIL_WRONG_LOGIN | 2 | long login/password |
MAIL_WRONG_HOST_NAME | 3 | falscher Hostname |
MAIL_HOST_NOT_FOUND | 60 | Host nicht gefunden |
Beispielskript:
//+------------------------------------------------------------------+ //| MailSend.mq5 | //| avoitenko | //| https://www.mql5.com/en/users/avoitenko | //+------------------------------------------------------------------+ #property copyright "avoitenko" #property link "https://www.mql5.com/en/users/avoitenko" #property version "1.00" #property script_show_inputs #include <Trade\Trade.mqh> #include <Arrays\ArrayString.mqh> #include <SmtpMailLibrary.mqh> //+------------------------------------------------------------------+ //| ENUM_MESSAGE | //+------------------------------------------------------------------+ enum ENUM_MESSAGE { MESSAGE_TEXT, // Text MESSAGE_HTML, // html MESSAGE_INLINE_TEXT, // eingefügter Text MESSAGE_INLINE_HTML // eingefügtes html }; //+------------------------------------------------------------------+ //| Eingabeparameter | //+------------------------------------------------------------------+ input string mail_options="=== Mail Options ==="; // Mail Optionen input string InpMailHost="smtp.gmail.com"; // Host input int InpMailPort=465; // Port input string InpMailUser="user@gmail.com"; // User input string InpMailPassword="password"; // Password input string InpMailFrom=""; // Von (Text) input string InpMailSubject="Smtp Mail Bibliothek"; // Betreff (Text) input string InpMailTo="user@ukr.net"; // Mail An input uint InpMailConnectionTimeout=5000; // Verbindungs-Timeout, msec input string msg_options="=== Message Options ==="; // Nachrichten Optionen input ENUM_MESSAGE InpMessageType=MESSAGE_HTML; // Typ input string InpMessageAttachmentFiles="d:\\Temp\\dollar.bmp;d:\\Temp\\euro.bmp";// Angehängte Dateien input string InpMessageInlineFiles="d:\\Temp\\ReportTester-20066082.html";// Eingefügte Dateien //+------------------------------------------------------------------+ //| Skript Programmstart Funktion | //+------------------------------------------------------------------+ void OnStart() { long smtp=0;//initialisieren //--- Verbindung int err=MailConnect(smtp,InpMailHost,InpMailPort,InpMailUser,InpMailPassword,InpMailConnectionTimeout); if(err!=0) { Print("MailConnect Fehler: ",MailErrorDescription(err)); return; } switch(InpMessageType) { //--- case MESSAGE_TEXT: { //--- Klartext string text=StringFormat("Account: %d\r\nBalance: %.2f %s",AccountInfoInteger(ACCOUNT_LOGIN),AccountInfoDouble(ACCOUNT_BALANCE),AccountInfoString(ACCOUNT_CURRENCY)); //--- Mail selbst senden err=MailSendText(smtp,InpMailUser,InpMailFrom,InpMailSubject,text,InpMessageAttachmentFiles); if(err!=0) Print("MailSendText Fehler: ",MailErrorDescription(err)); else PrintFormat("Programm '%s' hat Mail gesandt an '%s'",MQLInfoString(MQL_PROGRAM_NAME),InpMailUser); //--- Mail an MailTo senden err=MailSendText(smtp,InpMailTo,InpMailFrom,InpMailSubject,text,InpMessageAttachmentFiles); if(err!=0) Print("MailSendText Fehler: ",MailErrorDescription(err)); else PrintFormat("Programm '%s' hat Mail gesandt an '%s'",MQLInfoString(MQL_PROGRAM_NAME),InpMailTo); } break; //--- case MESSAGE_HTML: { //--- HTML erzeugen string html=BuildReport(); //--- HTML senden err=MailSendHtml(smtp,InpMailTo,InpMailFrom,InpMailSubject,html,""); if(err!=0) Print("MailSendText Fehler: ",MailErrorDescription(err)); else PrintFormat("Programm '%s' hat Mail gesandt an '%s'",MQLInfoString(MQL_PROGRAM_NAME),InpMailTo); } break; //--- case MESSAGE_INLINE_TEXT: { err=MailSendInlineTextFile(smtp,InpMailTo,InpMailFrom,InpMailSubject,InpMessageInlineFiles); if(err!=0) Print("MailSendText Fehler: ",MailErrorDescription(err)); else PrintFormat("Programm '%s' hat Mail gesandt an '%s'",MQLInfoString(MQL_PROGRAM_NAME),InpMailTo); } break; //--- case MESSAGE_INLINE_HTML: { err=MailSendInlineHtmlFile(smtp,InpMailTo,InpMailFrom,InpMailSubject,InpMessageInlineFiles); if(err!=0) Print("MailSendText Fehler: ",MailErrorDescription(err)); else PrintFormat("Programm '%s' hat Mail gesandt an '%s'",MQLInfoString(MQL_PROGRAM_NAME),InpMailTo); } break; } //--- Verbindung schliessen MailClose(smtp); } //+------------------------------------------------------------------+ //| Bericht Erzeugen | //+------------------------------------------------------------------+ string BuildReport() { CArrayString html; //--- html.Add("<html><head><title>Report</title>"); html.Add("<meta name=\"format-detection\" content=\"telephone=no\">"); html.Add("<style type=\"text/css\" media=\"screen\">"); html.Add("<!--"); html.Add("td{font: 8pt Tahoma,Arial;}"); html.Add("//-->"); html.Add("</style>"); html.Add("<style type=\"text/css\" media=\"print\">"); html.Add("<!--"); html.Add("td{font: 7pt Tahoma,Arial;}"); html.Add("//-->"); html.Add("</style>"); html.Add("</head>"); html.Add("<body topmargin=1 marginheight=1> <font face=\"tahoma,arial\" size=1>"); html.Add("<div align=center>"); html.Add(StringFormat("<div style=\"font: 18pt Times New Roman\"><b>%s</b></div>",AccountInfoString(ACCOUNT_SERVER))); html.Add("<table cellspacing=1 cellpadding=3 border=0>"); //--- html.Add("<tr>"); html.Add(StringFormat("<td colspan=2>A/C No: <b>%d</b></td>",AccountInfoInteger(ACCOUNT_LOGIN))); html.Add(StringFormat("<td colspan=6>Name: <b>%s</b></td>",AccountInfoString(ACCOUNT_NAME))); html.Add("<td colspan=2> </td>"); html.Add(StringFormat("<td colspan=2 align=right>%s</td>",TimeToString(TimeCurrent()))); html.Add("</tr>"); //--- html.Add("<tr>"); html.Add("<td colspan=13><b>Offene Trades:</b></td>"); html.Add("</tr>"); //--- html.Add("<tr align=center bgcolor=\"#C0C0C0\">"); html.Add("<td>Ticket</td>"); html.Add("<td nowrap>Open Time</td>"); html.Add("<td>Type</td>"); html.Add("<td>Size</td>"); html.Add("<td>Symbol</td>"); html.Add("<td>Price</td>"); html.Add("<td>S/L</td>"); html.Add("<td>T/P</td>"); html.Add("<td>Price</td>"); html.Add("<td nowrap>Commission</td>"); html.Add("<td>Swap</td>"); html.Add("<td>Profit</td>"); html.Add("</tr>"); //--- double Profit=0.0; int total=PositionsTotal(); if(total == 0) { html.Add("<tr align=right><td colspan=13 nowrap align=center>No transactions</td></tr>"); } else { CPositionInfo m_position; for(int i=0; i<total; i++) { m_position.SelectByIndex(i); //--- Farbe if((i&1)==0)html.Add("<tr align=right>"); else html.Add("<tr bgcolor=#E0E0E0 align=right>"); //--- data html.Add(StringFormat("<td>%d</td>",m_position.Identifier())); html.Add(StringFormat("<td> %s</td>",TimeToString(m_position.Time()))); if(m_position.PositionType()==POSITION_TYPE_BUY) html.Add("<td>buy</td>"); else html.Add("<td>sell</td>"); html.Add(StringFormat("<td>%.2f</td>",m_position.Volume())); html.Add(StringFormat("<td>%s</td>",m_position.Symbol())); html.Add(StringFormat("<td>%.5f</td>",m_position.PriceOpen())); html.Add(StringFormat("<td>%.5f</td>",m_position.StopLoss())); html.Add(StringFormat("<td>%.5f</td>",m_position.TakeProfit())); html.Add(StringFormat("<td>%.5f</td>",m_position.PriceCurrent())); html.Add(StringFormat("<td>%.2f</td>",m_position.Commission())); html.Add(StringFormat("<td>%.2f</td>",m_position.Swap())); html.Add(StringFormat("<td>%.2f</td>",m_position.Profit())); html.Add("</tr>"); //--- profit+=m_position.Profit(); } } //--- html.Add("<tr>"); html.Add(StringFormat("<td colspan=2><b>Balance: %.2f</b></td>",AccountInfoDouble(ACCOUNT_BALANCE))); html.Add(StringFormat("<td colspan=5><b>Equity: %.2f</b></td>",AccountInfoDouble(ACCOUNT_EQUITY))); html.Add("<td colspan=3><b>Floating P/L:</b></td>"); html.Add(StringFormat("<td colspan=4 align=right><b>%.2f</b></td>",profit)); html.Add("</tr>"); //--- html.Add("</table></div></font></body></html>"); //--- in einzuelnen String speichern string result=""; total=html.Total(); for(int i=0;i<total;i++) result+=html.At(i); //--- Erledigt return(result); } //+------------------------------------------------------------------+
Ergebnisse:
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/11466

System zum Erhalten von Informationen betreffend aktuellen Status offener Positionen, Konto, etc. sowie eine automatische Benachrichtigung über Operationen via ICQ.

Möglichkeit eine Strichliste der Gewinne und Verluste zu führen.

Dieser Expert kann auf allen Symbolen und TimeFrames laufen und verwendet die Kreuzung von zwei linearen gleitenden Durchschnitten als Esignal und einen exponentiellen gleitenden Durchschnitt als Trailing Stop.

Modul für die Verfolgung von offenen Positionen basierend auf dem Delta ZigZag für MQL5 Wizard.