Rejoignez notre page de fans
- Vues:
- 83
- Note:
- Publié:
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
Un script avec une classe pour résoudre des expressions mathématiques et logiques données par une chaîne de caractères.
Le script contient deux classes : cTokenBase et cToken, qui est un membre de la classe cTokenBase. Les classes ne sont pas placées dans un fichier séparé, car pour leur application pratique, il est nécessaire d'apporter quelques modifications à la classe cTokenBase (voir ci-dessous).
Toutes les fonctions mathématiques de MQL5 sont supportées : abs, arccos, arcsin, arctan, ceil, cos, exp, floor, log, log10, max, min, mod, mod, pow, rand, round, sin, sqrt, tan.
Les opérations arithmétiques et logiques sont prises en charge : ;/, %, *, +, -, >, <, >=, <=, ==, !=, &&, ||.
Les arguments d'une expression peuvent être des nombres, y compris ceux avec un séparateur décimal (avec un point), des variables utilisateur et des tableaux utilisateur. Si vous utilisez des variables et des tableaux personnalisés, vous devez ajouter des fonctions pour obtenir les valeurs de ces variables et tableaux.
Les fonctions permettant d'obtenir les valeurs des variables et des tableaux utilisateur sont ajoutées à la classe cTokenBase. En fait, à cette fin, la classe cToken est divisée en deux classes : la classe cToken est utilisée sans modification et la classe cTokenBase contient des fonctions permettant d'obtenir les valeurs des variables et des tableaux.
Les noms des variables et des tableaux sont constitués de lettres (la casse n'a pas d'importance, pas plus que la casse de l'expression entière), les éléments des tableaux sont définis par un nombre entre crochets, par exemple - e[0], e[1], f[0], f[1].
Exemple :
Ordre d'édition de la classe cTokenBase
1. Enregistrer le nom de la variable ou du tableau. L'enregistrement est effectué dans la fonction UsersVariables(). Cette fonction attribue des valeurs aux variables UserVariables et UserArrays, en attribuant des valeurs de chaîne - des listes de variables à l'aide du séparateur " ;".
void UsersVariables() { UserVariables="a;b;c;d"; // liste des variables utilisateur UserArrays="e;f"; // liste des tableaux d'utilisateurs }
2. Dans la fonction UserFunc(string FuncName), ajouter un appel à une certaine fonction à l'argument correspondant de la fonction.
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("Fonction pour la variable "+FuncName+"non défini"); return("0"); }
3. écrire des fonctions pour chacune des variables utilisateur
string a() { return("1"); } string b() { return("2"); } string c() { return("3"); } string d() { return("4"); }
4. Dans la fonction UserArray(string ArrName,int aIndex), écrire un appel à une fonction spécifique au premier argument correspondant de la fonction (la variable ArrName).
La variable aIndex déterminera l'indice de l'élément du tableau utilisateur.
string UserArray(string ArrName,int aIndex) { if(ArrName=="e")return(e(aIndex)); if(ArrName=="f")return(f(aIndex)); Alert("Fonction pour le tableau "+ArrName+"non défini"); return("0"); }
5. Écrivez des fonctions pour chacun des tableaux personnalisés :
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]); }
Dans l'ordre d'utilisation de la classe
1. déclarer une variable externe dans laquelle l'utilisateur entrera l'expression.
input string Expression="entrer dans l'expression".;
2. Dans la section générale du module, déclarer un pointeur de variable vers la classe :
cToken token;
3. Initialiser la classe avec l'expression spécifiée dans la variable Expression.
token.Init(Expression);
4. Appeler la méthode SolveExpression() si nécessaire
double Value=token.SolveExpression();
Une classe peut être utilisée pour résoudre plusieurs expressions, et un pointeur de classe différent est déclaré pour chacune d'entre elles.
cToken token1; cToken token2; cToken token3; cToken token4;
Dans ce cas, toutes les instances de la classe utiliseront les mêmes variables utilisateur et tableaux de la classe cTokenBase.
La classe peut être affinée pour utiliser d'autres fonctions.
Ajout de nouvelles fonctions à la classe cToken
- Enregistrez une nouvelle fonction. L'enregistrement est effectué dans la fonction Init() dans la variable "as" (similaire à l'enregistrement des variables utilisateur et des tableaux).
- Ajoutez le code de calcul de la nouvelle fonction à la fonction SolveFunc(string Func,string & aRes[]). Les arguments pour le calcul de la fonction se trouvent dans le tableau aRes[]. Les fonctions peuvent avoir un nombre quelconque d'arguments.
Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/303

Le script charge l'historique disponible par le caractère courant.

L'indicateur MetaTrader Rainbow Multiple Moving Average (RMMA) est un indicateur très simple mais visuellement informatif basé sur la moyenne mobile standard. Il dessine 66 lignes de moyenne mobile aux couleurs de l'arc-en-ciel, du type et du prix de votre choix, directement dans la fenêtre principale du graphique. Cet indicateur est disponible pour les versions MT4 et MT5 de la plateforme de trading.

Il permet d'organiser le chargement de l'historique dans les programmes MQL5.

TelegramToMT5 est un Expert Advisor de MetaTrader 5 qui fait le lien entre Telegram et MT5 en affichant les messages de vos canaux, groupes et chats privés Telegram directement sur vos graphiques de trading. Il suffit de créer un bot Telegram, de l'ajouter aux canaux/groupes souhaités et de laisser l'EA afficher tous les messages sous forme de commentaires sur votre graphique en temps réel.