Caractéristiques du langage mql5, subtilités et techniques - page 159
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
Pouvez-vous me dire s'il vous plaît, s'il vous plaît.
Dans l'indicateur, l'ordre des séries, par exemple close[], est défini par ArraySetAsSeries() une fois ou d'une autre manière ?
Est-ce fait dans OnCalculate() ou dans OnInit() ?
J'ai rencontré une situation confuse :
L'ordre dans close[], fixé par AS_SERIES à l'entrée sur le premier tick, sur le tick suivant passe spontanément à la normale, c'est-à-dire !AS_SERIES.
Je n'ai pas trouvé la raison de ce phénomène dans le code.
dans toute fonction utilisant le scalaire &arr[] vous ne pouvez pas être absolument sûr de la direction d'indexation du tableau:-(
De plus, si vous modifiez la "sérialité" à l'intérieur, cette direction restera après la fin de votre fonction... ce sera un effet secondaire, auquel personne ne s'attend...
c'est pourquoi, malheureusement, lorsque vous recevez un tableau en entrée d'une fonction, souvenez-vous de sa sérialisation, définissez-la à un format pratique et renvoyez TOUJOURS l'original lorsque vous quittez la fonction.
Il s'agit d'un cas rare avec OnCalculate, mais en pratique, il était également appelé par d'autres codes.
De plus, si vous modifiez la "sérialisation" en interne, cette direction sera conservée lorsque votre fonction prendra fin...
C'est ce sur quoi je comptais. C'est pourquoi j'ai misArraySetAsSeries(close,true) dans le blocOnCalculate(), qui n'est exécuté qu'une fois lors de la première connexion. Et cette "sérialisation" a bien eu lieu. Cependant, à ma grande surprise, au deuxième tic-tac, et au-delà, la "sérialité" était déjà à l'opposé.
Avec OnCalculate, c'est un cas rare, mais dans la pratique, il arrive qu'il soit appelé par d'autres codes.
Je n'ai pas de telles exotiques et, de plus, je ne change pas la "sérialisation" des séries temporelles et des tableaux tampons à l'intérieur du programme. Par conséquent, il me suffirait de le définir une fois, au début de l'indicateur. Mais, si nous ne pouvons pas être sûrs que la "sérialité" de ces tableaux est sauvegardée, nous devons la définir au début de chaque cycle OnCalculate(). Cela semble être quelque chose de complètement anormal.
C'est une bonne idée de générer un avertissement au moment de la compilation.
Si rien n'a changé depuis l'époque, NULL != "" Beaucoup de gens se sont déjà fait avoir.
Si rien n'a changé depuis l'époque, NULL != "" Beaucoup de gens se sont déjà fait avoir.
Ce n'est pas de ça qu'il s'agit.
Nous parlons d'autre chose.
Alors explique pourquoi ce n'est pas possible. Pourquoi
peut l'être, mais
ce n'est pas possible.
Alors explique pourquoi ce n'est pas possible.
Le script ci-dessus le montre.
Le script ci-dessus le montre.
Si c'était le cas, il n'y aurait pas de questions. Vous pensez toujours que tout le monde autour de vous devrait lire dans vos pensées, ou être mieux formé que vous en programmation.
Si c'était le cas, il n'y aurait pas de questions. Tu penses toujours que tout le monde devrait lire dans tes pensées, ou être plus doué en programmation que toi.
Je ne comprends pas les raisons de cette réaction. Le code laconique démontre la fonctionnalité à 100%.
Je ne comprends pas les raisons de cette réaction. Le code laconique démontre la fonctionnalité à 100%.
Réaction normale. Je ne comprends pas vos codes, j'ai demandé une explication, et la réponse est...
NULL est une ambiguïté telle qu'il faut la traiter avec précaution. Surtout lorsqu'il s'agit de variables de type chaîne.
Extrait de la documentation
Ainsi, dans cet exemple, NULL ne signifie pas que la longueur de la chaîne est égale à zéro, mais que la variable n'est pas initialisée.
Dans votre exemple
la variable est initialisée. La façon dont il est initialisé n'est pas claire pour moi et je n'ai pas envie de faire le tri.
En conséquence,
Indique que la variable est initialisée. Encore une fois, avec quoi est la grande question. Pourquoi pensez-vous qu'il est impossible d'initialiser une variable par NULL ?
Apparemment, cette initialisation fait en sorte que la longueur de la chaîne soit égale à zéro, ce qui correspond à ce que dit ce contrôle sur