Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Un exemple serait...
Comme ceci (pas la structure, mais la classe, bien sûr) :
Ce qu'il faut mettre où, je pense, est clair.
N'oubliez pas la fin :
Laissez-moi reformuler. Vous vous demandez s'il est possible, en définissant une fonction
ne spécifie qu'une variable du type de la structure comme paramètre formel, en ignorant le nom de la structure elle-même ? C'est-à-dire spécifier, par exemple, non pas void funcName(MqlTradeRequest & req), mais juste void funcName(& req) ?
Oui. Vous avez besoin d'une fonction universelle pour toute structure simple --- Pas de méthodes, de din. de tableaux. etc. --- purement une séquence de types de données spécifiques.
Comme la composition du scénario est prédéterminée par moi, je peux spécifier explicitement le nombre de structures à traiter.
Mais pour passer n'importe laquelle de ces structures dans unefonction avec un seul nom, je dois utiliser la surcharge.
Il y a quelques difficultés ici.
1. le nombre de structures est limité, car la surcharge ralentira si vous avez plus d'éléments.
2. Je peux moi-même faire une erreur en copiant des fonctions de surcharge.
PS// La fonctionfunWrite() effectue certains calculs et exécuteFileWriteArray() avec une certaine séquence et des paramètres calculés (quel indice pour écrire, combien pour lire).
Oui. Vous avez besoin d'une fonction universelle pour toute structure simple --- Pas de méthodes, de din. de tableaux. etc. --- purement une séquence de types de données spécifiques.
Comme la composition du script est prédéfinie par moi, je peux spécifier explicitement le nombre de structures à traiter.
Mais pour passer n'importe laquelle de ces structures à une fonction portant un nom, je dois utiliser la surcharge.
Je vois. Il y a quelque temps, j'ai posé une question similaire pour savoir s'il était possible de ne pas spécifier le type des tableaux lors de la définition d'une fonction. Juste en dessous, Roche a conseillé la surcharge.
Je suis donc arrivé à la conclusion que les fonctions "intégrées" commeFileWriteArray(), dont certains paramètres sont spécifiés avec le type void, sont elles-mêmes des fonctions surchargées. Nous ne voyons simplement pas leur mise en œuvre.
Je vois. J'ai déjà posé une question similaire, à savoir s'il était possible de ne pas spécifier le type des tableaux lors de la définition d'une fonction. Juste en dessous, Roche a conseillé la surcharge.
Je suis donc arrivé à la conclusion que les fonctions "intégrées" commeFileWriteArray(), dont certains paramètres sont spécifiés avec le type void, sont elles-mêmes des fonctions surchargées. Nous ne pouvons simplement pas voir leur mise en œuvre.
Les fonctions intégrées sont écrites dans un langage de programmation complet.
En C, par exemple, vous pouvez passer un nombre quelconque de variables et, déjà dans la fonction, obtenir une liste des paramètres passés et les examiner.
void fun(...) { }
Dans MQL5, cette possibilité n'existe pas. En particulier, il manque des liens et des pointeurs vers des types de données et des structures simples...
Cela doit avoir un rapport avec la sécurité. L'accès aux données. Sortir du bac à sable.
Mais je souhaite toujours que ces fonctionnalités soient implémentées dans MQL5.
Cela doit avoir un rapport avec la sécurité. L'accès aux données. Sortir du bac à sable.
Mais je souhaite toujours que ces fonctionnalités soient implémentées dans MQL5.
Comme ceci (pas la structure, mais la classe, bien sûr) :
Je pense que c'est clair ce qu'il faut mettre où.
A la fin, n'oubliez pas :
C'est ce que j'appelle de l'aide : réelle et bien concrète. Merci. Où est le signe plus ?
D'ailleurs... Je me suis dit que c'était suffisant pour moi. Mais je ne veux pas être un formaliste... ... alors, par curiosité, j'ai décidé que ça ne ferait pas de mal d'essayer d'organiser un tableau à deux dimensions. MQL me rappelle quelque chose du C/C++, que j'ai oublié au cours des douze dernières années environ. Maintenant j'ai essayé de le faire de cette façon (sans boucle - j'ai intentionnellement simplifié) :
Le compilateur génère l'erreur suivante : "'MABuffer' - la conversion des paramètres n'est pas autorisée".
Je me demande ce que je fais de mal. Si je ne me trompe pas, lors de la déclaration d'une classe avec un tableau multidimensionnel, il est nécessaire de spécifier numériquement l'une des dimensions, ce qui la rend statique...ArrayResize, quant à lui, définit unenouvelle taille pour la première dimension.
x100intraday:
Je me demande ce que je fais de mal ?
1) SetIndexBuffer fonctionne avec un tableau de doubles de même dimension.
2) La raison pour laquelle vous utilisez TBuffer* n'est pas claire, c'est-à-dire que vous utilisez la dynamique là où elle n'est pas nécessaire ?
3) (TIP) Dans l'exemple, vous auriez pu utiliser une structure au lieu d'une classe, pour économiser un peu de mémoire et quelques centaines de cycles d'horloge.
mql5:
3) (TIP) Dans l'exemple, vous auriez pu utiliser une structure plutôt qu'une classe, pour économiser un peu de mémoire et quelques centaines de cycles d'horloge.
Le conseiller expert utilise l'indicateur sur une période différente. Lors des tests, l'EA montre des données incorrectes de l'indicateur.
L'EA lui-même fonctionne sur M5, et l'indicateur sur H4. Les indicateurs qui sont appelés sur le même cadre temporel (M5) renvoient les valeurs correctes.
Les valeurs renvoyées sont similaires aux valeurs de l'indicateur, mais sont différentes des valeurs réelles qui sont visibles lorsque l'indicateur est appliqué à la fenêtre du graphique des prix.
Quel est le problème ?
Exemple de code d'appel de l'indicateur: