devuelve la política de ejecución. - página 3

 
Ivan_Invanov:

Sí, entiendo cómo trabajar con dígitos binarios.

De este código sale, por ejemplo, que la función devolvió 3 .

(11&1)==1 ; 11==01 no, es falso, no ha funcionado.

Estaba escribiendo esto y pensé que quizás había entendido mal las operaciones.

& significa que convierto los valores decimales a binarios y hago una conjunción a nivel de bits.

== verdadero cuando el primer término es igual al segundo. ¿Es esto correcto?

Estas son las cosas que no entiendo, soy autodidacta. Sólo sé cómo comprobarlo y lo que puedo conseguir. Tu ejemplo (11&1)==1 dará como resultado verdadero ya que el 11 sólo puede estar formado por las banderas 1+2+8 por lo que el 1 está incluido en el conjunto.

Compruebe lo que se devolverá

return(1|2|8);
 
Alexey Viktorov:
Estas son las cosas que no entiendo, soy autodidacta. Sólo sé cómo comprobarlo y lo que puedo conseguir. Su ejemplo (11&1)==1 dará como resultado verdadero, ya que el 11 sólo puede estar formado por las banderas 1+2+8, por lo que el 1 está incluido en el conjunto.

Compruebe lo que se devolverá

Esto es lo que escribí en binario, me olvidé de especificar. He sustituido los valores en el código que escribí si la función devolvía 3 y lo he comparado con FOK. Así es como se escribe el binario. (0b11 & 0b1)==0b1 ; el resultado entre paréntesis 0b11 tiene la expresión 0b11==0b1 ; pero resulta falso, en mi opinión. Debe ser cierto para que todo funcione. Bueno, como esta muestra está en la ayuda, es cierto. Debo haber entendido algo mal. Ahora he mirado la ayuda de C, y antes la de mql. Parece que es lo mismo. Pido disculpas si estoy haciendo preguntas muy tontas y gracias a todos por las respuestas.
 
La ayuda de mql dice que el valor true es cualquier valor distinto de cero, así que esa debe ser la respuesta. Y luego la igualdad, y en C la igualdad. Resulta que no es una igualdad, pero si los términos comparados son mayores que cero, entonces el valor es verdadero. Supongo que sí. Está escrito de forma poco clara. Se trata del operador ==.
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
  • www.mql5.com
Внутреннее представление – целое число размером 1 байт. Необходимо отметить, что в логических выражениях допустимо использовать вместо типа bool другие целые или...
 

Es una operacióna nivel de bits, es una operación P O B I T O R T . Funciona con bits. Por ejemplo, 1 es 00000001. 2 es 00000010. Una bandera sólo puede ser 1, 2, 4, 8, etc. En resumen, un bit está ocupado.

Y un conjunto de banderas puede tener cualquier bit ocupado, por ejemplo 00000101. Este conjunto incluye las banderas 00000001 y 00000100. Y para saber si alguna bandera está incluida en el conjunto de banderas, hay que hacer un "and" a nivel de bits de la bandera y el conjunto, si sale una bandera, significa que está en el conjunto:

(00000101& 00000100) == 00000100 - true. Esto significa que hay una bandera 00000101 en el conjunto 00000101.

 
Dmitry Fedoseev:

Es una operacióna nivel de bits, es una operación P O B I T O R T . Funciona con bits. Por ejemplo, 1 es 00000001. 2 es 00000010. Una bandera sólo puede ser 1, 2, 4, 8, etc. En resumen, un bit está ocupado.

Y un conjunto de banderas puede tener cualquier bit ocupado, por ejemplo 00000101. Este conjunto incluye las banderas 00000001 y 00000100. Y para saber si alguna bandera está incluida en el conjunto de banderas, hay que hacer un "and" a nivel de bits de la bandera y el conjunto, si después de eso queda una bandera, significa que está en el conjunto:

(00000101& 00000100) == 00000100 - true. Esto significa que hay una bandera 00000101 en el conjunto 00000101.

¿Es cierto que (término positivo 1 == término positivo 2) pero el término positivo 1 no es igual al término positivo 2? Resulta que sí, porque la ayuda dice que true es cualquier valor distinto de cero, y entonces el código funciona.
 
Ivan_Invanov:
¿Es cierto que (término positivo 1 == término positivo 2) pero el término positivo 1 no es igual al término positivo 2? Resulta que sí, porque la ayuda dice que la verdad es cualquier valor distinto de cero, y entonces el código funciona.
Lo que me confunde es que la palabra igualdad está escrita a continuación.
 
¿Dónde está la referencia? Concretamente, ¿dónde y qué?
 
Dmitry Fedoseev:
¿En qué lugar de la referencia? ¿Dónde y qué?

Esto me parece una contradicción. Es verdadera no si a es igual a b, sino si a y b son diferentes de cero. Bueno, no es una contradicción, no está claramente escrito. Creo que lo tengo, gracias.

Archivos adjuntos:
1111.jpg  29 kb
 
ENUM_SYMBOL_TRADE_EXECUTION No dice de qué tipo es, y las cabeceras en la ayuda están mezcladas (parecía estar escrito para cadena, y luego sin mencionarlo empezó a hablar de enteros). He probado las tres opciones, pero cada vez error del compilador. ¿Qué ocurre?
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 No dice qué tipo tiene, y las cabeceras en la ayuda están mezcladas (parecía estar escrito para cadena, y luego sin mencionarlo empezó a hablar de enteros) . He probado las tres opciones, pero cada vez error del compilador. ¿Qué ocurre?

Tienes que hacerlo así:

//--- 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);
  }