Caractéristiques du langage mql4, subtilités et techniques - page 5

 
Artyom Trishkin:

Je ne peux pas vérifier pour le moment, mais MQL_TESTER semble inclure tout le reste. Mais tout le reste séparément ne s'inclut pas.

En d'autres termes, pour comprendre que le programme fonctionne dans le testeur (dans l'un des modes énumérés), il suffit de vérifier le tout premier drapeau.

L'exemple portait sur autre chose.
 
fxsaber:
L'exemple portait sur autre chose.
Alors je n'ai pas compris - de quoi s'agissait-il ?
 
Artyom Trishkin:
Alors je ne comprends pas - de quoi s'agit-il ?
static const est initialisé par une fonction.
 
fxsaber:
static const est initialisé par une fonction.
Ahhhh..., "...Semyon Semyoyonych"... (с)
 
fxsaber:
La constante statique est initialisée par une fonction.

1. Où se trouve-t-il dans le programme ?

Je suppose que c'est dans le domaine des variables globales. Sans compter que les variables globales n'ont pas besoin de modificateur statique, la séquence d'initialisation joue un rôle très important.

Mon niveau de professionnalisme en matière de programmation est bien inférieur au vôtre, c'est pourquoi je mène des expériences d'un niveau auquel vous ne pensez même pas... Apparemment.

Voici donc la séquence d'initialisation : (pour ceux qui ne le savent pas)

D'abord, les variables de niveau global, puis les statiques, en fonction de la priorité des fonctions, OnInit(), OnTick() ou OnCalculate()... Je n'étais pas intéressé par les autres, et je n'étais pas intéressé par les locaux à mon époque. Il s'avère donc dans ce code que la fonction est appelée avant que les variables statiques ne soient initialisées, d'où l'erreur dont nous parlons. La fonction est appelée avant que la variable stInt soit initialisée.

2. Au début de cette branche, nous parlions de la fermeture des ordres par le prix OrderClosePrice(), vous vous souvenez ? Cela fonctionne aussi, mais nous pouvons rencontrer des problèmes. Il en va de même dans ce cas.

C'est pourquoi il n'y a pas de telle fonctionnalité dans l'aide. Ainsi, lorsque vous écrivez votre d***-code, vous ne serez pas inondé de plaintes selon lesquelles les choses indiquées dans la documentation ne fonctionnent pas. Vous savez combien de ces programmeurs sont présents ici. Et combien de programmeurs inadéquats ont été bannis à vie ? Encore une fois, vraisemblablement...

 
Alexey Viktorov:
Apparemment, vous avez lu quelque chose entre les mots d'une seule phrase.

Il n'y a pas d'implication cachée dans cette phrase.


Quant à l'exemple, il fonctionne dans les deux sens.

 
fxsaber:
Vous devez avoir lu quelque chose entre les mots de la phrase unique

Il n'y a pas d'implication cachée dans cette phrase.


Quant à l'exemple, il fonctionne dans les deux sens.

Eh bien, il y a un lien avec un exemple de code avec une erreur en plus de votre phrase. Ma réponse ne portait pas sur votre phrase, mais sur ce code incorrect, qui est exactement le g***-code.

Je n'ai aucun doute sur le fait que votre exemple de code fonctionne.

 
Alexey Viktorov:

Il y a donc un lien avec un exemple de code avec une erreur en plus de votre phrase.

Il y a le mot "subtilité" dans le titre du fil. Ce code est une démonstration de subtilité.

Je ne vois aucune raison pour laquelle les développeurs ne peuvent pas faire fonctionner ce code - ce que l'auteur voulait voir. Qu'ils le fassent ou non, c'est son application au SD. Mais l'exemple lui-même est illustratif.

 
fxsaber:

Il y a le mot "subtilité" dans le titre du fil. Ce code est une démonstration de subtilité.

Je ne vois aucune raison de ne pas laisser les développeurs faire fonctionner ce code - ce qui est ce que l'auteur voulait voir. Qu'ils le fassent ou non, c'est son application au SD. Mais l'exemple lui-même est illustratif.

Il a commencé à faire référence à la subtilité après notre dialogue. Et avant, c'était comme un message d'erreur. Mais on ne peut en aucun cas parler d'erreur.

Avez-vous une suggestion pour modifier la séquence d'initialisation afin que ce code fonctionne comme vous le souhaitez ? Il me semble que cette demande va rester sans réponse.

 
Alexey Viktorov:

Il a commencé à faire référence à la subtilité après notre dialogue. Avant cela, c'était comme un message d'erreur. Seulement, vous ne pouvez pas appeler ça une erreur de quelque façon que ce soit.

S'il s'agissait d'une erreur, un autre fil aurait été choisi. De plus, le repostage n'aurait même pas eu lieu, puisque l'application est suspendue dans le SD. C'est justement une subtilité qu'il est utile de connaître.

Avez-vous des suggestions sur la façon de modifier la séquence d'initialisation pour que ce code fonctionne comme vous le souhaitez ? Pour une raison quelconque, il me semble que cette demande restera sans réponse.

Pas un programmeur. Je suppose que ce code fonctionne en C++.