Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Facebook!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Bibliotheken

Bibliothek zur Steuerung von Skype - Bibliothek für den MetaTrader 5

Ansichten:
814
Rating:
(39)
Veröffentlicht:
2016.06.20 12:26
Aktualisiert:
2016.11.22 07:34
skypemql.zip (749.56 KB)
\MQL5\Include\
skypemql.mqh (2.26 KB) ansehen
\MQL5\Scripts\
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

Simple Trend Detector Simple Trend Detector

Gleich wie RSI und Dem aber empfindlicher.

Ideal ZigZag Ideal ZigZag

Dies 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.

Exp_ToCloseProfit Exp_ToCloseProfit

Ein Expert Advisor um ein globales Take Profit für alle offenen Positionen auszuführen.

OpenSellPosition_X OpenSellPosition_X

Das 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.