Questions des débutants MQL5 MT5 MetaTrader 5 - page 763
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
Il semble que ce soit le cas dans les cycles, et vous pouvez vous dispenser de la fonction
Merci.
Cependant, en supprimant la fonction - les freins restent.... Bon sang.
Merci.
Cependant, en supprimant la fonction - les freins restent.... Merde.
J'ai une fois commencé à réécrire le programme de 4=>5, puis en 4, j'ai remplacé toutes les constructions comme Low[1], Time[0] et autres par des constructions modernes, c'est-à-direCopyLow,CopyTime, le programme est devenu plus rapide même en 4. Je n'utilise plus les anciennes constructions, seulement les nouvelles. Le code est donc facilement transférable à la 5ème plateforme, il suffit de modifier les fonctions de trading.
Une fois que j'ai commencé à réécrire le programme de 4=>5 et que j'ai remplacé toutes les constructions comme Low[1], Time[0] et autres par des constructions modernes, c'est-à-direCopyLow,CopyTime, le programme est devenu plus rapide même en 4. Je n'utilise plus les anciennes constructions, seulement les nouvelles. Le code est donc facilement transférable à la 5ème plateforme, il suffit de modifier les fonctions de trading.
Remplir le tableau à chaque éternuement n'est-il pas une consommation de ressources ?
Peut-être serait-il judicieux de copier les informations dans le tableau à l'ouverture de la barre, puis de les reprendre au fur et à mesure du déroulement du code ? Je négocie à l'ouverture des barres.
Le fait deremplir un tableau à chaque éternuement ne consomme-t-il pas des ressources ?
Peut-être serait-il judicieux de copier les informations dans un tableau lorsqu'une barre s'ouvre, puis de les reprendre au fur et à mesure que le code progresse ? Je négocie à l'ouverture des barres.
Le tableau peut être rempli sur une nouvelle barre, cela consommera moins de ressources. Si vous travaillez avec iLow[1] à plusieurs endroits, vous devriez le stocker dans une variable une fois et le lire à la place du tableau.
Supposons que
Nous travaillons alors avec les variablesTIME_0 etTIME_1 au lieu deTM[0] etTM[1].Le tableau peut être rempli sur une nouvelle barre, cela prendra moins de ressources. Si vous travaillez avec iLow[1] à plusieurs endroits, par exemple, il est souhaitable de l'écrire une fois dans une variable, et de lire la variable au lieu du tableau.
Supposons que
Mais quand même, MT4 est beaucoup plus rapide - je suis déçu.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading
Bugs, bugs, questions
Aleksey Vyazmikin, 2017.07.21 15:07
Pourquoi fantasmes-tu ? J'ai compris votre idée, et j'ai confirmé qu'elle fonctionne, et qu'elle aura un effet si la demande est faite une fois et si l'on sait combien de barres sont nécessaires pour que l'EA fonctionne.
Ou peut-être avez-vous suggéré d'utiliser la structure d'une manière différente ? Dans ce cas, veuillez expliquer, mais ne soyez pas offensé !
Pas de fantasmes. Si vous avez besoin d'obtenir 2 ou plusieurs paramètres d'un chandelier, alors en utilisant les fonctions de vos messages/questions nous devrons appeler ces fonctions séparément pour chaque paramètre du chandelier. Cela fait 2 fois ou plus pour produire Copy***(), mais en utilisant CopyRates() vous n'avez besoin que d'un seul appel de Copy.
Quant au nombre à copier, c'est une autre question. Peut-être devrions-nous d'abord calculer la barre contenant la valeur de l'indicateur requis, puis la copier. Si je me souviens bien, il a été question d'une quantité inconnue à copier. De quel genre de fantaisie parlons-nous ?
Dans des cas extrêmes, nous pouvons copier, disons, 10 barres et chercher parmi elles. Si nous ne trouvons pas, nous copions 10 autres barres. La copie est une opération qui prend du temps, il est plus économique de copier un tableau.
En général, il y a beaucoup de variations. Vous ne pouvez pas écrire tout cela dans la documentation et ce ne sera pas du tout de la documentation. Ils enseignent cela aux cours de programmation. Mais, malheureusement, tous les enseignants ne sont pas capables de le faire et tous les élèves ne veulent pas le comprendre pendant les cours. Et le tout début, c'est lors des leçons d'arithmétique des classes 2 à 5, lorsque l'enseignant exige une explication détaillée du problème. Mais ici, les problèmes sont les mêmes.
Pas de trucs fantaisistes. Si vous avez besoin d'obtenir 2 ou plusieurs paramètres d'un chandelier, alors en utilisant les fonctions de vos messages/questions vous devez appeler ces fonctions séparément pour chaque paramètre du chandelier. Cela revient à exécuter Copy***() 2 fois ou plus, mais en utilisant CopyRates() vous n'aurez besoin que d'un seul appel de Copy.
Quant au nombre à copier, c'est une autre question. Peut-être devrions-nous d'abord calculer sur quelle barre la valeur correcte de l'indicateur est disponible, et ensuite la copier. Si je me souviens bien, il a été question d'une quantité inconnue à copier. De quel genre de fantaisie parlons-nous ?
Et, en dernier recours, nous pouvons copier, disons, 10 mesures et les parcourir et, si nous ne trouvons pas, nous copions 10 autres mesures. La copie est une opération assez coûteuse ; il serait plus économique de chercher dans le tableau.
Il y a beaucoup de variantes dans ce cas. Tout cela ne peut pas être inscrit dans la documentation ; en fait, il n'y aura plus de documentation. Ils enseignent cela aux cours de programmation. Mais, malheureusement, tous les enseignants ne savent pas comment le faire et tous les élèves ne veulent pas le comprendre pendant les cours. Et le tout début, c'est lors des leçons d'arithmétique des classes 2 à 5, lorsque l'enseignant exige une explication détaillée du problème. Mais ici, les problèmes sont les mêmes.
À propos de la fantaisie - était une réponse à votre déclaration "Au lieu d'essayer de comprendre ce qui a été dit, de comprendre ce que vous obtenez, vous faites des objections incroyables", et non au fait que la version que vous avez proposée est issue du domaine de la fantaisie.
Je comprends parfaitement votre concept, et il était intégré dans la réponse que je vous ai adressée.
Cependant, je ne comprends pas bien comment vous proposez de travailler avec une quantité inconnue de données - pouvez-vous me donner un exemple sous forme de code ?
Veuillez m'aider à vérifier et à optimiser l'indicateur en utilisant ce lien https://www.mql5.com/ru/code/16805 - le problème est que l'indicateur commence à ralentir beaucoup lorsqu'un grand nombre de barres apparaissent - cela apparaît lors des tests.
Je voudrais savoir comment le faire fonctionner pour qu'il ne soit pas calculé à chaque tick, mais seulement à l'ouverture de la barre ? La méthode de l'Expert Advisor ne convient pas - après le premier tick, toutes les valeurs disparaissent et n'apparaissent que sur la barre suivante...
À propos de la fantaisie - c'était une réponse à votre déclaration "Au lieu d'essayer de comprendre ce qui est dit, de comprendre ce qui va marcher, on lance des objections incroyables", et non pas que l'option que vous proposez soit du domaine de la fantaisie.
Je comprends parfaitement votre concept, et il était intégré dans la réponse que je vous ai adressée.
Cependant, je ne comprends pas bien comment vous proposez de gérer une quantité inconnue de données - pouvez-vous me donner un exemple sous forme de code ?
La réponse a été donnée avant...
Alexey Viktorov:
En dernier recours, vous pouvez copier, disons, 10 barres à la fois et chercher parmi elles ; si vous ne trouvez pas, vous en copiez 10 autres. La copie est une opération coûteuse, il est plus économique de chercher dans le tableau.
Mais il vaut mieux ne pas essayer de tirer le maximum de barres du tableau, mais essayer de faire avec une copie.
Je ne vais pas écrire un exemple de code. Un programmeur normal a juste besoin d'un indice. Voici un exemple d'algorithme :
Ainsi, il est possible de trouver deux intersections en une copie et un cycle, si nécessaire. Il n'est même pas nécessaire d'utiliser ArraySetAsSeries() car pour trouver le croisement, il est possible et, à mon avis, préférable de se souvenir de l'heure de la barre et non de son numéro. Bien que, connaissant l'heure de la barre, il n'y a aucune difficulté à déterminer son nombre.
Question : Qu'est-ce qui est le plus rapide, un cycle avec copie du tampon indicateur par 1 valeur et copie de la barre haute par 1 et comparaison de ces valeurs ou une seule copie d'une certaine quantité et comparaison des valeurs des deux tableaux entre eux ?
J'ai écrit ça hier :
Tâche :
à chaque tick, obtenir les éléments "InpCountCopy" : open, high, low, close et time.
Mise en œuvre :
Caractéristiques :
Vous pouvez choisir le mode de vérification : en OnTick ou en OnTimer (1 seconde).