Pouvez-vous me dire pourquoi lorsque j'essaie de remplir un tableau d'indicateurs dans une boucle en utilisant la formule Mass[ i ]= Mass[ i+1]+A ; où A est une variable, la compilation se déroule sans erreur, mais lorsque je rejoins la fenêtre, j'obtiens le message array out of range (tableau hors de portée) ?
Parce que la boucle doit être faite en tenant compte de la cellule où la dernière entrée sera faite. Si la taille du tableau Mass[], disons, est de 10, la boucle va de zéro à 9 (c'est l'indice de la dernière cellule du tableau), puis à i==9, on essaie d'écrire dans la cellule d'indice 9+1. Le tableau n'a pas de cellule 10. On obtient donc une sortie en dehors du tableau.
Nikolay, merci. C'est un excellent tutoriel ! Mais je pense que la variable
aura toujours une valeur nulle dans le code. Est-ce important pour le calcul ?
La valeurde "begin" sera différente en fonction de l'indicateur utilisé. Si vous utilisez l'indicateur RSI, la valeur de"begin" sera de 14, par exemple.
Si vous essayez de compiler pour la première fois, il se peut que vous obteniez une erreur de mémoire tampon. Veuillez donc modifier la quantité de tampons :
Et encore une fois. Pourquoi devrais-je commencer à calculer à partir de la barre avec le numéro (prev_calculated - 1), si j'ai déjà calculé l'indicateur prev_calculated fois ?
Par exemple, j'ai calculé l'indicateur 5 fois pour les barres 0, 1, 2, 3 et 4. Je n'ai pas besoin de le calculer à nouveau sur la barre 4. Je dois continuer à partir de la barre 5.
Et encore une fois. Pourquoi devrais-je commencer à calculer à partir de la barre avec le numéro (prev_calculated - 1), si j'ai déjà calculé l'indicateur prev_calculated plusieurs fois ?
Par exemple, j'ai calculé l'indicateur 5 fois pour les barres 0, 1, 2, 3 et 4. Je n'ai pas besoin de le calculer à nouveau sur la barre 4. Je dois continuer à partir de la barre 5.
D'accord. Je pense que je ne suis pas correct ici, parce que la 4ème barre peut avoir été modifiée depuis mon dernier calcul. Donc le (prev_calculated - 1) semble correct.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Nicholas !
Pouvez-vous me dire pourquoi lorsque j'essaie de remplir un tableau d'indicateurs dans une boucle en utilisant la formule Mass[ i ]= Mass[ i+1]+A ; où A est une variable, la compilation se déroule sans erreur, mais lorsque je rejoins la fenêtre, j'obtiens le message array out of range (tableau hors de portée) ?
Nikolay, merci. C'est un excellent tutoriel !
Mais je pense que la variable
aura toujours une valeur nulle dans le code. Est-ce important pour le calcul ?
Nikolay, merci. C'est un excellent tutoriel !
Mais je pense que la variable
aura toujours une valeur nulle dans le code. Est-ce important pour le calcul ?
La valeur de "begin" sera différente en fonction de l'indicateur utilisé. Si vous utilisez l'indicateur RSI, la valeur de"begin" sera de 14, par exemple.
Si vous essayez de compiler pour la première fois, il se peut que vous obteniez une erreur de mémoire tampon. Veuillez donc modifier la quantité de tampons :
#property indicator_buffers 2
Plus tard, vous pourrez revenir à 1 (un) tampon :
#property indicator_buffers 1
Je ne comprends pas. Supposons que
rates_total == MA_Period - 1
et qu'il s'agit du premier appel de la fonction, alors
prev_calculated == 0
et aussi begin == 0
alors la condition dans le premier if(rates_total < MA_Period - 1 + begin) est évaluée à faux
alors
first = MA_Period - 1 serait exécuté
mais alors AUCUN CALCUL parce que la condition dans la première boucle for évalue à false.
Je pense que la première condition if devrait être
if( rates_total < MA_Period + begin )
Ai-je oublié quelque chose ?
Et encore une fois. Pourquoi devrais-je commencer à calculer à partir de la barre avec le numéro (prev_calculated - 1), si j'ai déjà calculé l'indicateur prev_calculated fois ?
Par exemple, j'ai calculé l'indicateur 5 fois pour les barres 0, 1, 2, 3 et 4. Je n'ai pas besoin de le calculer à nouveau sur la barre 4. Je dois continuer à partir de la barre 5.
Et encore une fois. Pourquoi devrais-je commencer à calculer à partir de la barre avec le numéro (prev_calculated - 1), si j'ai déjà calculé l'indicateur prev_calculated plusieurs fois ?
Par exemple, j'ai calculé l'indicateur 5 fois pour les barres 0, 1, 2, 3 et 4. Je n'ai pas besoin de le calculer à nouveau sur la barre 4. Je dois continuer à partir de la barre 5.