Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1245
![MQL5 - Langage des stratégies de trading intégré au terminal client MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
pas, par exemple, passer d'abord le cas 1, puis le cas 2, etc.
Les cas exécutent un ordre d'ouverture
La commande est ouverte à plusieurs endroits. Tu dois penser exactement comme tu penses dans ce code, et c'est difficile.
Il y a plus d'une ouverture. Dans un tel code, vous devez penser exactement comme vous pensez, et c'est difficile.
S'il y a une boucle dans l'EA OnTick qui prend un certain temps, sera-t-elle exécutée complètement ou l'arrivée d'un nouveau tick interrompra-t-elle tout cela ?
Je ne comprends pas non plus, dans mon cas, la boucle est ouverte et tous les ordres ne sont pas ouverts, certains sont ouverts deux fois et d'autres sont ignorés, je comprends qu'un nouveau tick déclenche le démarrage et le code suspend son exécution et recommence à travailler.
Je comprends qu'un nouveau tick déclenche un démarrage et que le code met en pause son exécution et recommence à s'exécuter.
n'inventez pas ça.
lisez l'aide, il est clairement écrit que s'il y a des calculs complexes dans l'EA, le nouveau tick sera sauté.
quelque part dans l'article sur les fonctions de gestion des événements ou peut-être dans les opérations commerciales ou dans RefreshRates
cherchez une erreur de logique dans votre code
HH : switch() - la casse n'est pas utilisée pour les conditions logiques complexes, les meilleures combinaisons de if() else - ce qui permet d'obtenir des branches logiques plus claires.
ne l'invente pas.
lisez l'aide, il est clairement indiqué que s'il y a des calculs complexes dans EA, le nouveau tick sera sauté.
quelque part dans l'article sur les fonctions de gestion des événements ou peut-être dans les opérations commerciales ou dans RefreshRates
cherchez une erreur de logique dans votre code
SZY : switch() - la casse n'est pas utilisée pour les conditions logiques complexes, de meilleures combinaisons de if() else - on obtient ainsi des branches logiques plus univoques.
oui, merci, j'ai déjà décidé de tout écrire par if-else également
Pourquoi avez-vous ajouté l'interrupteur ici ? Il est plus facile d'entrer la direction de la transaction et le nombre d'ouvertures requises dans la fonction et d'ouvrir autant d'ouvertures que spécifié dans la boucle.
C'est pourquoi je dis que comprendre votre logique est au-delà de mon esprit. Pourquoi un tel gâchis ?
Pourquoi avez-vous ajouté l'interrupteur ici ? Il est plus facile d'entrer la direction de la transaction et le nombre d'ouvertures requises dans la fonction et d'ouvrir autant d'ouvertures que spécifié dans la boucle.
C'est pourquoi je dis que comprendre votre logique est au-delà de mon esprit. Pourquoi un tel gâchis ?
Eh bien, mon code vient d'augmenter en taille, et je pensais que ce serait beaucoup plus facile.
En fait, ce serait plus simple et plus compact si case pouvait être appelé autant de fois que je le souhaite pendant l'exécution d'une fonction.
Je n'ai pas besoin d'ouvrir des transactions similaires en boucle et elles sont ouvertes pour différents symboles simultanément (dans la mesure du possible) à l'apparition d'un signal.
cas 1 - achat d'audusd
cas 5 - achat de gbpusd
cas 9 - achat d'eurusd
etc.
Dans le premier cas, j'ai une feuille avec le cas et la seconde avec l'analyse, si elles interagissaient, cela ferait 500 lignes.
La deuxième variante implique de prescrire une ouverture d'ordre spécifique à l'intérieur de la fonction avec analyse et le total des lignes serait de 1200+, ce qui affecterait éventuellement la vitesse d'exécution du programme
Pouvez-vous m'aider, s'il vous plaît ! L'Expert Advisor utilise l'indicateur Enveloppes avec un calcul dynamique de la déviation. Mais lorsqu'il est affiché sur le graphique, il montre toute la dynamique de la déviation de l'indicateur sur toutes les barres précédentes.
1. Existe-t-il un moyen de faire en sorte que l'indicateur s'affiche correctement ? C'est-à-dire qu'il dessinerait l'indicateur avec sa déviation uniquement sur sa propre barre.
2. Comment désactiver le dessin de l'indicateur dans un Expert Advisor, en ne laissant que ses calculs ? Je veux activer ou désactiver le dessin de l'indicateur dans les paramètres de l'expert.)
Au final, mon code n'a fait qu'augmenter en taille, alors que je pensais qu'il serait plus simple.
De toute façon, s'il était possible d'appeler case autant de fois que je le souhaite pendant l'exécution d'une fonction, ce serait plus facile et le code serait plus compact.
Je n'ai pas besoin d'ouvrir des transactions similaires en boucle et elles sont ouvertes pour différents symboles simultanément (autant que possible) lors de l'apparition d'un signal.
cas 1 - achat d'audusd
cas 5 - achat de gbpusd
cas 9 - achat d'eurusd
etc.
Dans le premier cas, j'ai une feuille avec le cas et la seconde avec l'analyse, si elles interagissaient, elles auraient 500 lignes.
La deuxième variante implique de prescrire une ouverture d'ordre spécifique à l'intérieur de la fonction avec analyse, qui serait étirée en une couche et le total des lignes serait de 1200+, ce qui affecterait éventuellement la vitesse d'exécution du programme
Avec quoi tapez-vous tant de lignes de code ? Voici l'un de mes derniers EA, il fonctionne avec un ensemble de titres sur FORTS
Autant de titres seront cotés, autant de titres seront négociés. Et cet EA avec contrôle de deux délais de négociation, avec trailing et bien sûr avec analyse, seulement 326 lignes.
Si vous voulez utiliser le switch, vous ne devez pas ajouter l'ouverture de position dans chaque variante. Il suffit de spécifier le nom du symbole, le type d'opération commerciale et le numéro d'identification de l'opération.
Mais il serait préférable, à mon avis, de tout regrouper dans une fonction définie par l'utilisateur.