Erreurs, bugs, questions - page 2932
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
J'essaie de permettre à l'utilisateur de sélectionner les deux horizons temporels et leur nombre dans le menu de la fenêtre de configuration de l'indicateur :
et je veux que les périodes sélectionnées aillent directement dans PArray. Mais d'après l'exemple ci-dessus, il s'avère que j'affecte au tableau les valeurs prédéfinies dans le programme et non les valeurs entrées par un utilisateur. En outre, le compilateur génère des avertissements :
Lorsque j'essaie de remplacer la dernière ligne par :
le compilateur génère carrément une erreur :
De plus, NO_PERIOD=0 signifiePERIOD_CURRENT, et je n'ai pas besoin de cela, j'ai besoin de quelque chose comme false ou EMPTY_VALUE, mais ils ne correspondent pas du tout.
Comment puis-je le réparer ?
C'est presque réparé.
Dites-moi, quelles méthodes de lutte existent pour attraper et corriger l'erreur "array out of range" ?
ArrayResize() faire avant d'écrire un élément du tableau, compter et entrer à cet endroit le nombre d'éléments qui devraient être dans le tableau, ou utiliser un tableau dynamique qui devient lui-même gros. Vous sortez simplement du tableau. Par exemple, vous spécifiez une taille de 100 éléments, mais comme le premier élément est le numéro 0, certaines personnes ne s'y retrouvent pas, mais si vous écrivez les chiffres en ligne, cela correspondra à 0-99. Je ne suis pas un programmeur professionnel si quoi que ce soit (mais je peux), la première chose qui m'est venue à l'esprit, ça marche))).
Effectuez ArrayResize() avant d'écrire un élément du tableau, comptez et entrez à cet endroit le nombre d'éléments qui devraient être dans le tableau, ou utilisez un tableau dynamique qui se développe tout seul.
En fait, c'est dynamique de toute façon. Extrait de l'aide :"La fonction ne peut être appliquée qu'aux tableaux dynamiques. Notez que les tableaux dynamiques affectés comme tampons d'indicateurs par la fonction SetIndexBuffer() ne doivent pas être redimensionnés. Pour les tampons indicateurs, toutes les opérations de redimensionnement sont effectuées par le sous-système d'exécution du terminal. "Mais ce n'est pas un tampon indicateur, donc il faut penser avec ses mains et sa tête...".
En fait, c'est déjà dynamique. Extrait de l'aide :"La fonction ne peut être appliquée qu'aux tableaux dynamiques. Vous devez garder à l'esprit que les tableaux dynamiques affectés comme tampons d'indicateurs par la fonction SetIndexBuffer() ne peuvent pas être redimensionnés. Pour les tampons indicateurs, toutes les opérations de redimensionnement sont effectuées par le sous-système d'exécution du terminal. "Mais ce n'est pas un tampon indicateur, donc vous devrez penser avec vos mains et votre tête...".
Le problème de la capture de telles erreurs n'est résolu que par l'utilisation de "couches", comme une classe de tableau personnalisée qui intercepte l'adressage.
Lors du lancement de l'EA lorsque l'algotrading est désactivé, puis lors de l'activation de l'algotrading :
Selon le code d'erreur, l'interdiction de commerce demeure, bien que la propriété TERMINAL_TRADE_ALLOWED soit vraie.
Le résultat devrait être le suivant :
Évidemment, il devrait toujours être ArraySize(Arr)=1. C'est le cas en cas de copie réussie. Mais dans quels cas la copie de la barre peut-elle échouer ? Lorsque l'erreur "array out of range" se produit, le terminal pointe sur Arr[0].
J'ai trouvé l'erreur après tout, citation de l'aide :
4401
L'historique demandé n'a pas été trouvé.
Imprimé dans le journal de bord - c'est fait :
Qu'est-ce que j'en fais maintenant, où est-ce que je vais ? Suis-je une mauvaise main ou... ? Je ne fais que copier une mesure de 0 à 1, après tout. Comment cela (l'histoire) pourrait-il ne pas être ? D'autant que l'erreur ne s'affiche pas toujours. Ou est-il nécessaire de vérifier et de charger de force l'historique au préalable ?
J'ai trouvé l'erreur après tout, je cite la référence :
Imprimé dans le Journal - compris :
Qu'est-ce que j'en fais maintenant, où est-ce que je vais ? Suis-je une mauvaise main ou... ?
Tu es sûr que c'est censé être un devoir ?
et non une comparaison ?