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
... MQL5, contrairement à MQL4, n'essaie pas de comprendre ce que veut un utilisateur et c'est correct.
Je suggère de le mettre sur un poster. :) (je plaisante)
Vasily, je comprends qu'il existe certaines nuances qui justifient une telle approche de MT5 à la convenance du programmeur. Et ça ne me dérange pas. Qu'il en soit ainsi.
1. La logique nous dit que la procédure d'effacement des tableaux est effectuée par le compilateur une fois au moment de la compilation.
Oui, vous avez un problème de logique :)
Je ne savais pas que dans 4ka l'initialisation par des zéros se produit pendant le redimensionnement. Il ne s'agit pas d'une commodité, mais d'une absurdité qui entraîne une baisse de la vitesse des programmes. Par exemple, si je dois initialiser le tableau avec la valeur -1, une double initialisation se produit.
En principe, nous pourrions ajouter un drapeau lors de la déclaration d'un tableau, qui indiquerait au compilateur d'effacer le tableau. Ce serait soit pratique, soit rapide - à vous de choisir.
En principe, nous pourrions ajouter une sorte d'indicateur lors de la déclaration d'un tableau qui indiquerait au compilateur d'effacer le tableau. Ce serait soit pratique, soit rapide - à vous de choisir.
Quelle est la différence ? Vous faites l'initialisation après le redimensionnement, c'est le drapeau entier.
Oui, après chaque déclaration de tableau global et après chaque redimensionnement de tableau. Et que faire si vous avez 20 à 30 tableaux globaux, dont certains changent de taille dans certaines circonstances ? Faut-il écrire l'initialisation dans les boucles partout ? (les tableaux peuvent être bidimensionnels). N'est-ce pas une source potentielle d'erreurs ?
Oui, après chaque déclaration de tableau global et après chaque redimensionnement de tableau. Mais que faire si vous avez 20 à 30 tableaux globaux, dont certains changent de taille dans certaines circonstances ? Faut-il écrire l'initialisation dans les boucles partout ? (les tableaux peuvent être bidimensionnels). N'est-ce pas un terrain propice aux erreurs ?
Cette opération chirurgicale se fait très simplement. Remplacez le mot"ArrayResize" par quelque chose d'autre - ce sera le nom de votre fonction de redimensionnement. Vérifiez dans celle-ci, si le redimensionnement est en place, alors passez par les nouveaux éléments dans la boucle et attribuez-leur un zéro.
De plus, dans l'inite, initialiser tous les tableaux qui ont une taille (s'il y en a).
Il peut aussi y avoir des tableaux d'une taille donnée dans les fonctions - ceux-là aussi. Recherchez-les en utilisant des crochets.
Cette opération chirurgicale se fait très simplement. Remplacez le mot "ArrayResize" par quelque chose d'autre - ce sera le nom de votre fonction de redimensionnement. Il vérifie si le redimensionnement est vers le haut, puis passe par les nouveaux éléments dans la boucle et leur attribue zéro.
De plus, dans l'inite, initialiser tous les tableaux qui ont une taille (s'il y en a).
Il peut aussi y avoir des tableaux d'une taille donnée dans les fonctions - ceux-là aussi. Vous les trouverez entre crochets.
Au fait, oui.
Je vais essayer. C'est un hack intéressant.
Je soutiendrai le topicstarter, bien qu'il y ait beaucoup de questions à sa création )))).
Les développeurs de MQL5, à la recherche de la rapidité des calculs (ou d'autres beaux chiffres ?) ont supprimé tous les "petits plus" qui rendaient MQL4 plus convivial,
S'il existe une règle empirique dans MQL5, les indicateurs utilisés dans MQL4 deviendront une "amorce" dans MQL5, et cette "amorce" doit être lue dans le contexte du terminal de trading :
1. lors de l'appel à OnInit(), les tampons des indicateurs ne sont pas initialisés automatiquement
2. j'ai regardé une centaine d'indicateurs dans la kodobase, hélas, sous couvert de programmation en MQL5, ils écrivent des indicateurs dans le style de MQL4 - ils étendent la numérotation des tableaux et des séries chronologiques.
3. iHighest / iLowest ne fonctionnent pas correctement - ils recherchent les barres avec les valeurs les plus élevées / les plus basses dans le sens de la numérotation croissante des timeseries... C'est-à-dire que si nous utilisons le schéma standard des indicateurs dans MQL4 - calcul à partir des données précédentes jusqu'au présent, ce problème n'est pas résolu avec iHighest et iLowest, car la barre la plus à gauche est 0, et quand iLowest est appelé, nous recherchons des valeurs dans le futur.....
4. le même problème avec ArrayMaximum() - il est difficile à utiliser dans les indicateurs... il est difficile de ne pas augmenter la numérotation des timeseries, nous prenons et soustrayons constamment de l'el-ta de départ un certain nombre de barres et obtenons ArrayMaximum(high[i], i -Period,Period)
5. hélas, même les experts de MQL5 utilisent des constructions douteuses..... Disons qu'une certaine base de béquilles épargnée lors de la transition de MT4 est toujours en circulation.
Quel est l'intérêt ? - MQL ne prétend pas être un pur С++, pourquoi ils ont supprimé les implémentations plus simples pour les utilisateurs... Je révise Python depuis environ un mois, pourquoi tant de travaux dans ce langage.... Ce n'est que maintenant que je comprends que Python permet aux gens d'ignorer les petites choses et a une interface plus conviviale ;) - pour un programmeur expérimenté, tout cela semble faux, mais les gens l'utilisent et Python est assez populaire