renvoie la politique d'exécution. - page 3

 
Ivan_Invanov:

Oui, je comprends comment travailler avec des chiffres binaires.

De ce code il ressort, par exemple, que la fonction a renvoyé 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 ?

C'est le genre de choses que je ne comprends pas, je suis autodidacte. Je sais juste comment vérifier et ce que je peux obtenir. Votre exemple (11&1)==1 donnera un résultat vrai puisque 11 ne peut être composé que des drapeaux 1+2+8 ; le 1 est donc inclus dans l'ensemble.

Vérifiez ce qui sera retourné

return(1|2|8);
 
Alexey Viktorov:
C'est le genre de choses que je ne comprends pas, je suis autodidacte. Je sais juste comment vérifier et ce que je peux obtenir. Votre exemple (11&1)==1 aboutira à vrai puisque 11 ne peut être composé que des drapeaux 1+2+8 ; le 1 est donc inclus dans l'ensemble.

Vérifiez ce qui sera retourné

C'est ce que j'ai écrit en binaire, j'ai oublié de le préciser. J'ai substitué les valeurs dans le code que j'ai écrit si la fonction retournait 3 et je l'ai comparé à FOK. C'est ainsi que s'écrit le binaire. (0b11 & 0b1)==0b1 ; le résultat entre parenthèses 0b11 a l'expression 0b11==0b1 ; mais il s'avère faux, à mon avis. Il faut que ce soit vrai pour que tout fonctionne. Eh bien, puisque cet échantillon est dans l'aide, c'est vrai. J'ai dû mal comprendre quelque chose. J'ai maintenant regardé l'aide de C, et celle de mql avant cela. Il semble que ce soit la même chose. Je m'excuse si je pose des questions très stupides et je vous remercie tous pour les réponses.
 
L'aide mql indique que la valeur true est toute valeur non nulle, ce doit donc être la réponse. Et puis l'égalité, et en C l'égalité. Il s'avère que ce n'est pas une égalité, mais si les termes comparés sont supérieurs à zéro, alors la valeur est vraie. Je suppose que oui. L'écriture n'est pas très claire. Il s'agit de l'opérateur ==.
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
  • www.mql5.com
Внутреннее представление – целое число размером 1 байт. Необходимо отметить, что в логических выражениях допустимо использовать вместо типа bool другие целые или...
 

Une opération par bit, c'est une opération P O B I T O R T . Il fonctionne avec des bits. Par exemple, 1 est 00000001. 2 est 00000010. Un drapeau ne peut être que de 1, 2, 4, 8, etc. En bref, un bit est occupé.

Et un ensemble de drapeaux peut avoir n'importe quel bit occupé, par exemple 00000101. Cet ensemble comprend les drapeaux 00000001 et 00000100. Et pour savoir si un drapeau est inclus dans l'ensemble des drapeaux, vous devez faire un "et" bit à bit du drapeau et de l'ensemble, si cela laisse un drapeau, cela signifie qu'il est dans l'ensemble :

(00000101& 00000100) == 00000100 - vrai. Cela signifie qu'il y a un drapeau 00000101 dans le jeu 00000101.

 
Dmitry Fedoseev:

Une opération par bit, c'est une opération P O B I T O R T . Il fonctionne avec des bits. Par exemple, 1 est 00000001. 2 est 00000010. Un drapeau ne peut être que de 1, 2, 4, 8, etc. En bref, un bit est occupé.

Et un ensemble de drapeaux peut avoir n'importe quel bit occupé, par exemple 00000101. Cet ensemble comprend les drapeaux 00000001 et 00000100. Et pour savoir si un drapeau est inclus dans l'ensemble des drapeaux, vous devez faire un "et" bit à bit du drapeau et de l'ensemble, si cela laisse un drapeau, cela signifie qu'il est dans l'ensemble :

(00000101& 00000100) == 00000100 - vrai. Cela signifie qu'il y a un drapeau 00000101 dans le jeu 00000101.

Est-il vrai que (terme positif 1 == terme positif 2) mais que le terme positif 1 n'est pas égal au terme positif 2 ? Il s'avère que oui, car l'aide indique que la vérité est toute valeur non nulle, et le code fonctionne.
 
Ivan_Invanov:
Est-il vrai que (terme positif 1 == terme positif 2) mais que le terme positif 1 n'est pas égal au terme positif 2 ? Il s'avère que oui, car l'aide indique que la vérité est toute valeur non nulle, et le code fonctionne.
Ce qui me trouble, c'est que le mot égalité est écrit ensuite.
 
Où est la référence ? Plus précisément, où et quoi ?
 
Dmitry Fedoseev:
A quel endroit de la référence ? Où et quoi exactement ?

Il me semble qu'il y a là une contradiction. Elle est vraie non pas si a est égal à b, mais si a et b sont différents de zéro. Eh bien, ce n'est pas une contradiction, ce n'est pas clairement écrit. Je pense que je l'ai, merci.

Dossiers :
1111.jpg  29 kb
 
ENUM_SYMBOL_TRADE_EXECUTION Il ne dit pas de quel type il s'agit, et les en-têtes dans l'aide sont mélangés (il semblait être écrit pour les chaînes de caractères, puis sans le mentionner a commencé à parler des entiers). J'ai essayé les trois options, mais à chaque fois une erreur de compilation. Qu'est-ce qui ne va pas ?
long execution = (long) SymbolInfoInteger(_Symbol, ENUM_SYMBOL_TRADE_EXECUTION);
string execution = (string) SymbolInfoString(_Symbol, ENUM_SYMBOL_TRADE_EXECUTION);
double execution = (double) SymbolInfoDouble(_Symbol, ENUM_SYMBOL_TRADE_EXECUTION);
 
Ivan_Invanov:
ENUM_SYMBOL_TRADE_EXECUTION Il ne dit pas quel type il a, et les en-têtes dans l'aide sont mélangés (il semblait être écrit pour la chaîne de caractères, et puis sans le mentionner a commencé à parler des entiers) . J'ai essayé les trois options, mais à chaque fois une erreur de compilation. Qu'est-ce qui ne va pas ?

Tu dois le faire de cette façon :

//--- Check trade execution mode
  ENUM_SYMBOL_TRADE_EXECUTION market_info = ENUM_SYMBOL_TRADE_EXECUTION(SymbolInfoInteger(Symbol(), SYMBOL_TRADE_EXEMODE));
    
  if((market_info & SYMBOL_TRADE_EXECUTION_EXCHANGE) != SYMBOL_TRADE_EXECUTION_EXCHANGE)
  {
    MessageBox("Символ " + Symbol() + " не поддерживает TRADE EXECUTION EXCHANGE режим!", "Ошибка", MB_OK | MB_ICONHAND);
    return(false);
  }