Erreurs, bugs, questions - page 1153
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
Comment exécuter un programme installé dans Windows 8.1 ? Avec /portable ?
Si vous travaillez sous Windows 8.1 en tant qu'utilisateur normal, le terminal MT5 ne se souvient pas des numéros de compte saisis. De plus, MetaEditor ne sauvegarde pas l'état du stockage MQL5. Ce problème ne peut être résolu que si vous travaillez en tant qu'administrateur ou si l'option "Exécuter ce programme en tant qu'administrateur" est sélectionnée dans les propriétés de metaeditor64.exe et de terminal64.exe.
P.S. Le terminal est le plus récent - mais le problème n'est pas nouveau.
Bon après-midi.
J'ai un indicateur assez gourmand en ressources (qui est calculé à partir de 7+ tableaux), il se charge normalement mais seulement "par intermittence" dans le terminal, je ne sais pas pour quelle raison. Il n'y a pas d'erreur, c'est quelque chose avec le terminal MT5 lui-même...
J'aimerais le tester dans le testeur, mais dans le testeur, il continue à donner une erreur : j'ai joint une capture d'écran.
Veuillez me conseiller, y a-t-il une possibilité de traiter l'erreur avant le démarrage du testeur et de recharger de force l'indicateur dans le testeur, si elle apparaît ?
Bon après-midi.
J'ai un indicateur assez gourmand en ressources (qui est calculé à partir de 7+ tableaux), il se charge normalement mais seulement "par intermittence" dans le terminal, je ne sais pas pour quelle raison. Il n'y a pas d'erreur, c'est quelque chose avec le terminal MT5 lui-même...
J'aimerais le tester dans le testeur, mais dans le testeur, il continue à me donner une erreur : j'ai joint une capture d'écran.
Veuillez me conseiller, y a-t-il un moyen de gérer l'erreur avant le démarrage du testeur et de recharger de force l'indicateur dans le testeur, si elle apparaît ?
.
L'erreur est dans votre code, pas dans le terminal. Il y a même une indication de l'endroit où chercher l'erreur : ligne 302, position 49. Cette erreur est une sortie du tableau de sa plage. Par exemple, vous avez un tableau de taille [4], mais vous essayez d'obtenir la valeur [5].
Je n'arrive pas à le réparer, le tableau est rempli de guillemets (100%) ou de valeurs indicatrices. Dans le terminal à un certain moment la valeur des cotations ou des indicateurs X sort NULL, et à un autre moment elle sort une valeur normale (pas sur la 0ème barre). Je ne sais pas pourquoi cela arrive.
La valeur NULL est toujours présente dans le testeur. L'erreur se produit lorsque j'essaie de multiplier une valeur de cotation ou d'indicateur, mais il NULL.
Je n'arrive pas à le réparer, le tableau est rempli de guillemets (100%) ou de valeurs indicatrices. Dans le terminal, à un certain moment, la valeur des cotations X donne NULL, et à un autre moment, elle donne une valeur normale (pas sur la 0ème barre). Je ne sais pas pourquoi cela arrive.
La valeur NULL est toujours présente dans le testeur. L'erreur se produit lorsque j'essaie de multiplier une valeur de cotation ou d'indicateur, mais il NULL.
Ce code est celui de l'indicateur et de la fonction OnInit(). En conséquence, OnInit() est traité au moment du démarrage du terminal - et ce code affiche correctement le prix du tick. C'est OnInit() et non init() - comme le vôtre. Si l'erreur se répète, veuillez envoyer le code et la version du terminal.
L'erreur est que vous essayez de recevoir des informations sur le marché (MarketInfo...) dans OnInit() de l'indicateur. L'indicateur n'a pas de fonctions de trading et donc, pendant l'initialisation, il n'attend pas la mise à jour des informations sur le compte et le marché.
Pour obtenir les données du marché, utilisez OnInit() de l'EA, pas de l'indicateur.
Si vous voulez utiliser les informations de marché dans l'indicateur, vous devez entrer un drapeau (bool) et vérifier l'exactitude des informations de compte (Account...) dans la fonction OnCalculate() dans le cas de la première exécution ou dans OnInit() si vous modifiez les paramètres de l'indicateur ou de l'horizon temporel.
N'induisez pas les gens en erreur. Indépendamment de l'utilisation de la fonction init() ou OnInit() de l'indicateur, le terminal ne garantit pas que ce gestionnaire sera appelé lorsque la connexion sera effectuée et que la valeur du tick sera connue. Il est donc facile d'obtenir zéro dans OnInit aussi. Il n'y a pas non plus d'interdiction d'utiliser des informations sur le marché dans les indicateurs. Mais dans ce cas, nous devons vraiment transférer l'initialisation à la partie calcul de l'indicateur et l'exécuter sur les premiers ticks.
Il n'y a pas de fonctions de trading dans l'indicateur. Le conseiller expert a des fonctions commerciales. Par conséquent, lorsque l'EA appelle l'environnement de marché et/ou les informations de compte, tout se passe correctement dans OnInit().
Pour prouver mes dires, voici un EA simple dans lequel OnInit() fait référence à l'environnement de trading et aux informations du compte :
Il n'y a pas de fonctions de trading dans l'indicateur. Le conseiller expert a des fonctions commerciales. Par conséquent, lorsque l'EA appelle l'environnement de marché et/ou les informations de compte, tout se passe correctement dans OnInit().
Pour prouver mes dires, voici un Expert Advisor simple qui, lors de OnInit(), appelle l'environnement du marché et les informations du compte :
À l'origine, la question portait sur l'indicateur. Vous avez répondu au sujet de l'indicateur OnInit. Le conseiller expert est une autre affaire, ce n'est pas un problème, mais il ne peut pas remplacer un indicateur.
Facilement. C'est possible.
Par exemple, comme ceci :
Par exemple, dans le conseiller expert, vous obtenez des données sur l'environnement de négociation et vous ajoutez l'indicateur lorsque vous avez pris un bon départ. Après cela, l'indicateur dessinera automatiquement ses propres gribouillis à cet endroit :)