L'opération ET par bit des représentations binaires x et y. La valeur de l'expression contient 1 (VRAI) dans tous les bits où x et y contiennent tous deux des valeurs non nulles, et 0 (FAUX) dans tous les autres bits.
Donc par ce code, la politique d'exécution est soit ioc, soit fok, soit aucune des deux, il s'avère donc qu'il ne peut y en avoir deux en même temps ? Ou ai-je encore mal compris ?
Ivan_Invanov: Que devrait donner la fonction pour qu'il y en ait deux en même temps ?
Il peut être 2, alors la fonction retournera 3. BUT¡¡¡¡¡ Il s'agit d'une situation atypique. Étant donné qu'il n'y a que 3 possibilités, cela pourrait être 1, 2 ou la somme de 1+2. C'est la somme, pas la troisième option. La vérification avec une opération bit à bit ne peut donc répondre qu'à la question suivante : peut-on appliquer telle ou telle politique de remplissage ?
Alexey Viktorov: Il peut aussi être 2, alors la fonction renverra 3. BUT¡¡¡¡¡ Il s'agit d'une situation atypique. Étant donné qu'il n'y a que 3 possibilités, cela pourrait être 1, 2 ou la somme de 1+2. C'est la somme, pas la troisième option. La vérification avec une opération bit à bit ne peut donc répondre qu'à la question suivante : peut-on appliquer telle ou telle politique de remplissage ?
Je ne comprends toujours pas comment une variable peut renvoyer deux termes. Et s'il renvoie une valeur de 3 comme un membre, les opérations de type bitwise ne fonctionneront pas. J'ai décidé de choisir simplement le mode EXECUTION_INSTANT et j'aurai toujours une politique FOK .
Ivan_Invanov: Je ne comprends toujours pas comment une variable peut renvoyer deux membres. Et s'il renvoie un membre comme 3, alors les opérations de type bitwise ne fonctionneront pas. J'ai décidé de choisir simplement le mode EXECUTION_INSTANT et j'aurai toujours une politique FOK .
Pour comprendre cela, vous devez comprendre ce que sont les drapeaux.
Chaque valeur suivante d'un drapeau est la valeur de la précédente multipliée par 2. C'est-à-dire 1, 2, 4, 8, 16, 32......... Donc si la valeur est 33, cela signifie que cette valeur ne contient que 1 et 32. De même, si la valeur est 18, elle ne peut être composée que de 16 et de 2. Et la valeur 3 ne peut être composée que de 1 et 2.
Ainsi, les opérations par bit ne font que vérifier si la valeur vérifiée est présente dans la somme des drapeaux. Si vous vérifiez si un nombre arbitraire est inclus dans 18, vous obtenez faux, sauf pour vérifier les valeurs 2 et 16.
Pour comprendre cela, vous devez comprendre ce que sont les drapeaux.
Chaque valeur suivante d'un drapeau est la valeur de la précédente multipliée par 2. C'est-à-dire 1, 2, 4, 8, 16, 32......... Donc si la valeur est 33, cela signifie que cette valeur ne contient que 1 et 32. De même, si la valeur est 18, elle ne peut être composée que de 16 et de 2. Et la valeur 3 ne peut être composée que de 1 et 2.
Ainsi, les opérations par bit ne font que vérifier si la valeur vérifiée est présente dans la somme des drapeaux. Si vous vérifiez si un nombre arbitraire est inclus dans 18, vous obtiendrez faux, sauf si vous vérifiez les valeurs 2 et 16.
Oui, je comprends comment travailler avec des chiffres binaires.
Ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh, ça y est enfin. S'il y a une valeur dans un chiffre, c'est un drapeau vrai et le triplet met la valeur dans les deux chiffres. Seulement, pourquoi ce code fonctionne-t-il alors ?
Exemple de la classe de commerce CTrade. Il est d'abord vérifié pour'SYMBOL_FILLING_FOK', puis pour'SYMBOL_FILLING_IOC'.
La vérification est effectuée à l'aide del'opération "ET par bit".
Opération ET par bit
L'opération ET par bit des représentations binaires x et y. La valeur de l'expression contient 1 (VRAI) dans tous les bits où x et y contiennent tous deux des valeurs non nulles, et 0 (FAUX) dans tous les autres bits.
Exemple :
En savoir plus sur les opérations par bit.
Que devrait donner la fonction pour qu'il y en ait deux en même temps ?
Que devrait donner la fonction pour qu'il y en ait deux en même temps ?
Exemple de contrôles pour deux personnages du serveur MetaQuotes-Demo :
Voir les spécifications (à remplir) pour ces symboles :
et voici une variante plus courante : lorsque tous les remplissages sont disponibles pour un symbole
et la spécification
Il peut aussi être 2, alors la fonction renverra 3. BUT¡¡¡¡¡ Il s'agit d'une situation atypique. Étant donné qu'il n'y a que 3 possibilités, cela pourrait être 1, 2 ou la somme de 1+2. C'est la somme, pas la troisième option. La vérification avec une opération bit à bit ne peut donc répondre qu'à la question suivante : peut-on appliquer telle ou telle politique de remplissage ?
Je ne comprends toujours pas comment une variable peut renvoyer deux membres. Et s'il renvoie un membre comme 3, alors les opérations de type bitwise ne fonctionneront pas. J'ai décidé de choisir simplement le mode EXECUTION_INSTANT et j'aurai toujours une politique FOK .
Pour comprendre cela, vous devez comprendre ce que sont les drapeaux.
Chaque valeur suivante d'un drapeau est la valeur de la précédente multipliée par 2. C'est-à-dire 1, 2, 4, 8, 16, 32......... Donc si la valeur est 33, cela signifie que cette valeur ne contient que 1 et 32. De même, si la valeur est 18, elle ne peut être composée que de 16 et de 2. Et la valeur 3 ne peut être composée que de 1 et 2.
Ainsi, les opérations par bit ne font que vérifier si la valeur vérifiée est présente dans la somme des drapeaux. Si vous vérifiez si un nombre arbitraire est inclus dans 18, vous obtenez faux, sauf pour vérifier les valeurs 2 et 16.
Pour comprendre cela, vous devez comprendre ce que sont les drapeaux.
Chaque valeur suivante d'un drapeau est la valeur de la précédente multipliée par 2. C'est-à-dire 1, 2, 4, 8, 16, 32......... Donc si la valeur est 33, cela signifie que cette valeur ne contient que 1 et 32. De même, si la valeur est 18, elle ne peut être composée que de 16 et de 2. Et la valeur 3 ne peut être composée que de 1 et 2.
Ainsi, les opérations par bit ne font que vérifier si la valeur vérifiée est présente dans la somme des drapeaux. Si vous vérifiez si un nombre arbitraire est inclus dans 18, vous obtiendrez faux, sauf si vous vérifiez les valeurs 2 et 16.
Oui, je comprends comment travailler avec des chiffres binaires.
À partir de ce code, par exemple, la fonction renvoie 3 .
(11&1)==1 ; 11==01 non, c'est faux, ça n'a pas marché.
J'étais en train d'écrire ça et je me suis dit que j'avais peut-être mal compris les opérations.
& cela signifie que je convertis les valeurs décimales en valeurs binaires et que je fais une conjonction par bit.
== vrai lorsque le premier terme est égal au second. Est-ce correct ?