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
Bibliothek zur Steuerung von Skype - Bibliothek für den MetaTrader 5
- Ansichten:
- 814
- Rating:
- Veröffentlicht:
- 2016.06.20 12:26
- 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
Beim automatischen Handeln kann Skype für das Versenden von Textnachrichten mit den notwendigen Informationen verwendet werden. Hier wurde die Arbeit Skype als Bibliothek Skype4COM realisiert, d.h. eine ActiveX Komponente die den Zugriff auf die Programm Verwaltung zur Verfügung stellt.
Derzeit wird Skype4COM.dll mit Skype ausgeliefert, standardmäßig befindet sie sich im folgenden Ordner:
Für ein x86-Betriebssystem:
c:\Program Files\Common Files\Skype\Skype4COM.dll
Für ein x64-Betriebssystem:
c:\Program Files (x86)\Common Files\Skype\Skype4COM.dll
Diese SkypeMQL.dll Bibliothek muss in diesen Ordner koppiert werden: [terminal directory]\MQL5\Bibliotheken
Das Projekt unterstützt nur die 32-Bit Version von MetaTrader 4/5.
1. Versenden von Sofortnachrichten
int SkypeSendInstantMessageW(string skype_name,string message,int status); int SkypeSendInstantMessageA(string skype_name,string message,int status);// für MetaTrader 4
Es gibt einige Tests in einer Funktion vor dem Versenden der Sofortnachricht:
- Der Benutzername darf nicht leer sein oder mit einer Zahl beginnen.
- Der Benutzer mit dem angegebenen Namen muss in der Kontaktliste existieren.
- Die Nachricht darf kein leerer String sein.
- Der Netzwerkstatus des Empfängers muss mit dem angegebenen Wert übereinstimmen.
Liste der Netzwerkstatus-Konstanten:
Konstantenname |
Wert |
Beschreibung |
---|---|---|
STATUS_OFFLINE | 1 |
Offline |
STATUS_ONLINE | 2 |
Online |
STATUS_AWAY | 4 |
Out of place |
STATUS_DONT_DISTURB |
16 |
Do not disturb |
Um verschiedene erlaubte Stati gleichzeitig zu setzen, wird eine Bit-Addition der Konstanten verwendet, zum Beispiel: STATUS_ONLINE | STATUS_AWAY.
Die maximale Länge einer Sofortnachricht ist ~8000 ANSI Zeichen, ~4000 Unicode Zeichen.
Beispiel für einen Code:
string InpSkypeName = "echo123"; // Skype name string InpTextMessage = "Hello :)"; // Textnachricht string msg; ENUM_SKYPE_ERROR err=(ENUM_SKYPE_ERROR)SkypeSendInstantMessageW(InpSkypeName,InpTextMessage,STATUS_ONLINE|STATUS_AWAY); if(err==ERROR_NO_ERRORS) msg=StringFormat("IM an %s, %s gesendet",InpSkypeName,InpTextMessage); else msg=StringFormat("Fehler beim Senden der IM an %s, Fehler: %s",InpSkypeName,EnumToString(err)); Print(msg);
2. Versenden von SMS Nachrichten
Der Dienst zum Versenden von SMS-Nachrichten ist derzeit kostenpflichtig!
int SkypeSendSmsMessageW(string phone_number, string message); int SkypeSendSmsMessageA(string phone_number, string message);// für MetaTrader 4
Vor dem Senden einer SMS-Nachricht gibt es einige Tests:
- Die Telefonnummer muss im internationalen Format angegeben weden: + [Ländercode] [Stadt oder Netzwerk] [Telefonnummer]
- Die Länge des Strings der die Telefonnummer enthält, muss mindestens 7 Zeichen lang sein und mit einem '+' Zeichen beginnen
- Die Textnachricht darf kein leerer String sein
Das Versenden einer SMS an eine nicht existente Nummer ist kein Fehler. Die Kosten dafür werden verrechnet aber nach kurzer Zeit rückerstattet, da die Nachricht nicht zugestellt wurde.
Die SMS-Nachricht ist auf116 ANSI Zeichen, 58 Unicode Zeichen beschränkt.
Beispiel für einen Code:
input string InpPhoneNumber = "+380123456789"; // Telefonnummer input string InpTextMessage = "Hello :)"; // Textnachricht string msg; ENUM_SKYPE_ERROR err==(ENUM_SKYPE_ERROR) SkypeSendSmsMessageW(InpPhoneNumber,InpTextMessage); if(err==ERROR_NO_ERRORS) msg=StringFormat("SMS an %s, %s gesendet",InpPhoneNumber,InpTextMessage); else msg=StringFormat("Fehler beim Senden der SMS an %s, error: %s",InpPhoneNumber,EnumToString(err)); Print(msg);
3. Beschreibung des Rückgabewertes
Beide Funktionen geben einen Ganzzahlwert zurück der - wenn notwendig - analysiert werden kann.
Konstantenname |
Wert |
Beschreibung |
---|---|---|
ERROR_UNKNOWN |
-1 |
Unbekannter Fehler |
ERROR_NO_ERRORS |
0 | Erfolgreiche Ausführung |
ERROR_ATTACH |
1 |
Verbindung mit Skype fehlgeschlagen |
ERROR_AUTHORIZED |
2 |
Angegebneer User nicht in der Kontaktliste |
ERROR_STATUS |
3 |
Ungültiger User-Status |
ERROR_TIMEOUTS |
4 |
Zeitablauf |
ERROR_RUNNING | 5 | Skype wurde nicht in den Speicher geladen |
ERROR_SENDING | 6 |
Fehler beim Senden |
ERROR_VALUE | 7 | Fehler bei übermittelten Parametern |
ERROR_ACCESS | 8 | Zugriff auf Skype wurde verweigert |
ERROR_SKYPE4COM | 9 | für x86: Skype4COM.dll ist nicht registriert für x64: Fehler beim Erstellen des COM-Objektes |
4. Der erste Aufruf
Bei der ersten Verbindung von MetaTrader 5 zu Skype erscheint ein Popup-Fenster, das den Zugriff auf das Programm steuert.
Nachdem der Zugriff auf Skype gewährt wurde, wird der Zugriff auf Skype in: Tools -> Options -> Advanced -> Manage other programs' gespeichert.
5. Laufzeitfehler
Aus unbekannten Gründen bricht das Programm mit der für MetaTrader 5 x64 kompilierten Bibliothek mit dem Fehler "Stack overflow" (Stapelüberlauf) ab. Wenn es mit Skype4COM verbunden ist, dann müssen Sie auf neue Nachrichten warten, nach denen der Fehler behoben wird.
Der Anhang hat ein Archiv mit dem Bibliotheksquellcode (ein Projekt für Microsoft Visual C++ 2010) und ein Testskript um die Performance zu testen.
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/1537
Gleich wie RSI und Dem aber empfindlicher.
Ideal ZigZagDies ist ein einfacher aber sehr schneller ZigZag mit keinen fehlenden oder falschen Gipfeln. Der Indikator wurde zur Verwendung in EAs entworfen. Die Feststellung von Gipfeln wurde zeitoptimiert.
Ein Expert Advisor um ein globales Take Profit für alle offenen Positionen auszuführen.
OpenSellPosition_XDas Skript OpenSellPosition_X wurde erstellt um zu fixierten Werten von Stop Loss und Take Profit in Punkten vom aktuellen Preis zu verkaufen. Das Volumen der Position wird auf Basis des Verlustlevels festgelegt.