[ARCHIVE]Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 5. - page 309
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
Exactement. La variable globale Reason obtient une valeur, mais elle ne l'obtient pas dans deinit(), mais dans init() de sorte que lors de l'exécution de init(), vous pouvez voir la raison de la dernière désinitialisation et effectuer une certaine action basée sur la valeur. Mais il ne fonctionne pas comme il le devrait.
On vous a dit comment faire. C'est dans deinit() que l'on trouve la raison de la dernière désinitialisation et qu'on la passe par une variable déclarée globalement. Dans init() on vérifie la valeur de la variable et on trouve la raison de la dernière désinitialisation. Ça marche ! !!
PS Apparemment, tout le monde ne réalise pas que init()/deinit() ne modifient pas les valeurs des variables déclarées globalement, à moins que cela ne soit explicitement indiqué dans les déclarations au sein des fonctions.
En fait, il est préférable de ne pas fermer les ordres dans init(). Là, MarketInfo() ne fonctionne souvent pas comme prévu.
On vous a dit comment faire. C'est dans deinit() que l'on trouve la raison de la dernière désinitialisation et qu'on la passe par une variable déclarée globalement. Dans init() on vérifie la valeur de la variable et on trouve la raison de la dernière désinitialisation. Ça marche ! !!
Ceci suggère ce que vous feriez avec cette fonction. Une fonction comme celle-ci est généralement exécutée par l'histoire.
Je ne peux même pas imaginer exécuter la fonction dans une boucle...
Je ne peux pas imaginer une fonction qui tournerait en boucle...
Vous êtes les bienvenus :
J'ai réalisé qu'Artem a un problème avec le passage de M5 TF. Il y a une erreur. Je voudrais vérifier si c'est le cas. Il s'agit peut-être d'un bug de MT4.
Non, ce n'est pas un bug. Voici l'EA. Changement des délais de M1 à H1
19:20:02 111 CADJPY,M15 : initialisé19:20:09 111 CADJPY,M15 : DeinitReason 3
19:20:09 111 CADJPY,M15 : désinitialisé
19:20:09 111 CADJPY,M15 : uninit reason 3
19:20:09 Supertrend[1] CADJPY,M15 : désinitialisé
19:20:09 Supertrend[1] CADJPY,M15 : uninit reason 3
19:20:09 HLC CADJPY,M15 : désinitialisé
19:20:09 HLC CADJPY,M15 : uninit reason 3
19:20:09 AMA optimisé1 CADJPY,M15 : Désinitialisé
19:20:09 AMA optimisé1 CADJPY,M15 : uninit reason 3
19:20:09 AMA optimisé1 CADJPY,M15 : Désinitialisé
19:20:09 AMA optimisé1 CADJPY,M15 : uninit reason 3
19:20:09 Supertrend[1] CADJPY,H1 : initialisé
19:20:09 HLC CADJPY,H1 : initialisé
19:20:09 AMA optimisé1 CADJPY,H1 : initialisé
19:20:09 AMA optimisé1 CADJPY,H1 : initialisé
19:20:09 111 CADJPY,H1 : initialisé
Non, ce n'est pas un bug. Voici l'EA. Changement des délais de M1 à H1
C'est bien ! J'ai aussi beaucoup de raisons pour la désinitialisation.
En fait, il est préférable de ne pas fermer les ordres dans init(). Là, MarketInfo() ne fonctionne souvent pas comme prévu.
Je ne peux même pas imaginer que la fonction tourne en boucle...
C'est bien ! Parce que moi aussi j'ai beaucoup de choses liées aux raisons de la désinitialisation.
Oui. Vous ne pouvez pas. C'est écrit dans l'aide. C'est une chose courante.Voici la dernière variante à vérifier. La précédente n'était pas très réussie, parce que init()/deinit() parfois ne font pas ami-ami avec print()
Je me suis demandé comment écrire une fonction. L'idée est que lorsque N bougies se retournent dans une certaine direction, il doit calculer le nombre de bougies. MAIS. Pour cela, il y a plusieurs conditions, ou plus précisément, il y en aura une liste au fil du temps.
Disons que la tendance, par exemple, est dirigée vers le bas,... ...un pullback augmente. Je veux que, si 5 chandeliers sont montés, et que chaque chandelier était haussier, et, par exemple, la taille de chaque chandelier était plus grande quei_sizeOfCurrBar, et d'autres conditions, le nombre de barres continuellement haussières soit affiché, et que la fonction renvoie un résultat.
Quelle est la meilleure façon de l'écrire ? En ce moment, j'ai commencé à écrire, et je comprends que je devrais le faire passer par une boucle par barres, et en quelque sorte limiter la vue dans la profondeur de l'histoire non pas par un nombre fixe de barres, mais par barres, avec ces paramètres, qui nous intéressent par conditions.
Voilà ce que j'ai :
Pour le moment, nous allons simplement de l'avant-dernière barre à la barre d'indice 6, c'est-à-dire 5 barres d'affilée. Mais je veux que mon conseiller expert recherche uniquement les barres qui sont haussières et non pas toutes les barres d'affilée. Comment la mettre en œuvre de manière adéquate ?
J'ai en quelque sorte correctement filtré par taille.
Et quand tout est déjà écrit, le compteur calculera le nombre de barres continues avec les paramètres nht,etvsvb et s'il y a assez de ces barres, une valeur de la fonction sera retournée.
On vous a dit comment faire. C'est dans deinit() que l'on trouve la raison de la dernière désinitialisation et qu'on la passe par une variable déclarée globalement. Dans init() on vérifie la valeur de la variable et on trouve la raison de la dernière désinitialisation. Ça marche ! !!
PS Apparemment, tout le monde ne réalise pas que init()/deinit() ne modifient pas les valeurs des variables déclarées globalement, à moins que cela ne soit explicitement indiqué dans les déclarations au sein des fonctions.
En fait, il est préférable de ne pas fermer les ordres dans init(). Là, MarketInfo() ne fonctionne souvent pas comme prévu.
Une telle question. Comment optimiser maintenant ? Le squelette de l'Expert Advisor est maintenant le suivant :
J'ai mis open-close dans les variables et supprimé le deuxième bloc FileSeek, qui est devenu inutile, ajouté la sélection du style de chandelier (tout haussier, tout baissier, n'importe lequel), ajouté des ombres si le prochain ascendant ou descendant est supérieur ou inférieur au précédent haut et bas, ajouté le traçage avec le print, qui est activé par un drapeau dans l'en-tête, tout commenté avec des liens vers les numéros de ligne, essayé de rendre le code lisible pour le forum. J'ai également ajouté les numéros de ligne à l'impression.
Maintenant, regardez :
En haut, il s'agit d'une période de temps en tic-tac, en bas, d'une deuxième période de temps. Les ombres (queues) se produisent lorsque deux ticks ont été capturés en une seconde et que l'offre ou la demande diffère de la précédente. Le tic-tac fonctionne comme une horloge. Le deuxième tic-tac est en retard, ce qui signifie qu'il prend plus de temps pour traiter le tic-tac que l'intervalle minimal entre les tics. C'est pourquoi je demande comment optimiser le code. Je joins le code et je répète que j'ai tout surcommenté. Si vous voulez vérifier comment il fonctionne - vous le configurez comme un EA sur les minutes, puis dans la recherche autonome et ouvrir 'sec'+nom de l'instrument.