Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Telegram!
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
Ansichten:
875
Rating:
(35)
Veröffentlicht:
2016.07.06 12:10
Aktualisiert:
2016.11.22 07:34
\MQL5\Scripts\
stoken.mq5 (22.71 KB) ansehen
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Das Skript enthält eine Klasse für die Lösung mathematischer und logischer Ausdrücke, die als String definiert werden.

Das Skript hat zwei Klassen: cTokenBase und cToken, die das Mitglied der cTokenBase Klasse ist. Die Klassen sind nicht in einer separaten Datei gespeichert, weil die cTokenBase Klasse für eine praktische Anwendung verändert werden muss (mehr darüber sieh unten).

Alle mathematischen Funktionen der MQL5 Programmiersprache werden unterstützt: abs, arccos, arcsin, arctan, ceil, cos, exp, floor, log, log10, max, min, mod, pow, rand, round, sin, sqrt, tan.

Wie auch die arithmetischen und logischen Operationen: ;/, %, *, +, -, >, <, >=, <=, ==, !=, &&, ||.

Als Argumente können Ziffer dienen, darunter auch mit Dezimaltrenner (mit einem Punkt), benutzerdefinierte Variablen und Arrays. Bei der Verwendung benutzerdefinierter Variablen und Arrays müssen Funktionen hinzugefügt werden, die die Werte dieser Variablen und Arrays zurückgeben.

Diese Funktionen werden der cTokenBase Klasse hinzugefügt, aus diesem Grund gibt es diese Unterteilung in zwei Klassen: die cToken Klasse wird ohne Veränderungen verwendet und in der cTokenBase Klasse befinden sich die Funktionen für das Erhalten der Werte von Variablen und Arrays.

Die Namen der Variablen und Arrays bestehen aus Buchstaben (Klein- und Großschreibung spielen keine Rolle, wie die Klein- und Großschreibung des ganzen Ausdrucks), Elemente von Arrays werden durch die Zahl in eckigen Klammern definiert, zum Beispiel e[0], e[1], f[0], f[1].

Beispiel:

Rechenarten

Das Ergebnis der Rechenarten

Wie die cTokenBase Klasse konfiguriert wird

1. Den Namen der Variablen oder des Arrays registrieren. Die Registrierung erfolgt in der UsersVariables() Funktion. In der Funktion werden den Variablen UserVariables und UserArrays Namen zugewiesen, in der Liste sind diese durch ";" voneinander getrennt.

      void UsersVariables()
      {
         UserVariables="a;b;c;d"; // Liste benutzerdefinierter Variablen
         UserArrays="e;f";       // Liste benutzerdefinierter Arrays   
      } 

2. Der Funktion UserFunc(string FuncName) wird der Aufruf der entsprechenden Funktion hinzufügen.

      string UserFunc(string FuncName)
      {
         if(FuncName=="a")return(a()); 
         if(FuncName=="b")return(b());
         if(FuncName=="c")return(c());
         if(FuncName=="d")return(d());
         Alert("Funktion für die Variable "+FuncName+" nicht definiert");
         return("0");
      }

3. Funktionen für jede der benutzerdefinierten Variablen schreiben:

      string a()
      {
         return("1");
      }
      string b()
      {
         return("2");
      }
      string c()
      {
         return("3");
      }
      string d()
      {
         return("4");
      } 

4. Der Funktion UserArray(string ArrName,int aIndex) den Aufruf der entsprechenden Funktion (je nach ArrName) hinzufügen.

Die aIndex Variable bestimmt den Index des Elements des benutzerdefinierten Arrays.

      string UserArray(string ArrName,int aIndex)
       {
         if(ArrName=="e")return(e(aIndex));
         if(ArrName=="f")return(f(aIndex));
         Alert("Funktion für das Array "+ArrName+" nicht definiert");
         return("0");
      }

5. Funktionen für jedes der benutzerdefinierten Arrays schreiben:

      string e(int Index)
      {
         string v[]={"1","2","3","4","5","6","7","8","9"};
         return(v[Index]);
      }
      string f(int Index)
      {
         string v[]={"10","20","30","40","50","60","70","80","90"};
         return(v[Index]);
      }

Verwendung der Klasse

1. Eine externe Variable für den Ausdruck deklarieren:

input string Expression="Ausdruck eingeben";

2. Eine Variable der cToken Klasse auf der globalen Ebene deklarieren:

cToken token;

3. Die Klasse durch den in der Expression Variablen gesetzten Ausdruck initialisieren.

   token.Init(Expression);

4. Die SolveExpression() Methode aufrufen, wenn nötig

double Value=token.SolveExpression();

Die Klasse kann für die Lösung mehrerer Ausdrücke verwendet werden; für jeden Ausdruck wird ein Pointer auf Klasse deklariert.

cToken token1;
cToken token2;
cToken token3;
cToken token4;

In diesem Fall werden alle Instanzen der Klasse dieselben benutzerdefinierten Variablen und Arrays der cTokenBase Klasse verwenden.

Die Klasse kann für die Verwendung anderer Funktionen modifiziert werden.


Neue Funktionen der cToken Klasse hinzufügen

  1. Neue Funktion registrieren. Die Registrierung erfolgt in der Funktion Init() in der Variablen "as" (wie die Registrierung benutzerdefinierten Variablen und Arrays).
  2. Der Funktion SolveFunc(string Func,string & aRes[]) wird der Code für die Berechnung der neuen Funktion hinzufügt. Argumente für die Berechnung der Funktion befinden sich im Array aRes[]. Die Funktionen können eine beliebige Anzahl von Argumenten haben.

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/303

Skript für ChartNavigate Skript für ChartNavigate

Ein einfaches Skript, das die Verwendung der Funktion ChartNavigate() demonstriert

Demo_resource_EA Demo_resource_EA

Ein Beispiel für die Erstellung eines Buttons unter Verwendung von Ressourcen.

MQL5 Wizard - Handelssignale der Kerzenformationen Morning/Evening Stars + MFI MQL5 Wizard - Handelssignale der Kerzenformationen Morning/Evening Stars + MFI

Handelssignale der Kerzenformationen "Morning Star/Evening Star" mit der Bestätigung durch den MFI (Market Facilitation Index) Indikator.

MQL5 Wizard - Handelssignale der Kerzenformationen  Morning/Evening Stars + RSI MQL5 Wizard - Handelssignale der Kerzenformationen Morning/Evening Stars + RSI

Handelssignale der Kerzenformationen "Morning Star/Evening Star" (Morgenstern/Abendstern) mit der Bestätigung durch den RSI (Relative Strength Index) Indikator.