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

 
Ahora he comprobado el código. 1234==2 es falso. De hecho, se están comparando las cifras. ¿Cuál es la inscripción entonces? ¿Y resulta entonces que esta función no puede devolver un triplete si tanto fok como ioc están disponibles?
SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
 
Ivan_Invanov:

si 1234==2 es falso, este código no funciona.

por bits sólo puede responder a la pregunta: ¿Se puede aplicar tal o cual política de relleno?


Son operaciones a nivel de bits que no se comprueban como se quiere. Exactamente esta línea

if((filling&SYMBOL_FILLING_FOK)==SYMBOL_FILLING_FOK)

se lee así:

Si una variable (si está desplazada por el bit SYMBOL_FILLING_FOK) es igual a SYMBOL_FILLING_FOK

Si soy autodidacta, me corregirá alguien más experimentado.
 
Dmitry Fedoseev:

No, no están equivocados. Tampoco hay ninguna contradicción. Simplemente hay algo que no entiendes y te niegas obstinadamente a entenderlo.

No, quiero entender. Por favor, explíquelo de nuevo.
 
Alexey Viktorov:

Se trata de operaciones a nivel de bits y no están tan validadas como podría pensarse. En concreto, una línea como esta

se lee así:

Si una variable (rellenada por el bit SYMBOL_FILLING_FOK) es igual a SYMBOL_FILLING_FOK

Si soy autodidacta, me corregirá alguien más experimentado.
Bien o mal. El camarógrafo es el único.
 
Ivan_Invanov:
No, quiero entender. Por favor, explíquelo de nuevo.

Todo ha sido explicado cinco veces. Hay que empezar por uno mismo: admitir que no se entiende algo, no en el mundo alguien se equivoca y sobre todo en la referencia.

 
Dmitry Fedoseev:

Se ha explicado cinco veces. Hay que empezar por uno mismo: admitir que no se entiende algo, no en el mundo alguien se equivoca y sobre todo en el certificado.

Quizá no haya ningún error en la referencia, pero está escrita de forma incomprensible (quizá sólo para mí). Como he dicho, he revisado el código y ahora el problema ha desaparecido. Me dijeron en este hilo que la función

SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);

puede devolver 3.

Si devuelve 3, entonces el código como este no funcionará, ¿verdad?

bool CTrade::SetTypeFillingBySymbol(const string symbol)
  {
//--- get possible filling policy types by symbol
   uint filling=(uint)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
   if((filling&SYMBOL_FILLING_FOK)==SYMBOL_FILLING_FOK)
     {
      m_type_filling=ORDER_FILLING_FOK;
      return(true);
     }
   if((filling&SYMBOL_FILLING_IOC)==SYMBOL_FILLING_IOC)
     {
      m_type_filling=ORDER_FILLING_IOC;
      return(true);
     }
//---
   return(false);
  }
 
Ivan_Invanov:

Puede que no haya un error en la ayuda, pero no está escrito con claridad (quizás sólo para mí). Como he dicho, lo he comprobado con el código y el problema ha desaparecido. Me dijeron en este hilo que la función

puede devolver 3.

Si devuelve 3, este código no funcionará, ¿verdad?

Si SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE) devuelve 3, el código devolverá true

 
Ivan_Invanov:

Puede que no haya un error en la ayuda, pero no está escrito con claridad (quizás sólo para mí). Como he dicho, lo he comprobado con el código y el problema ha desaparecido. Me dijeron en este hilo que la función

puede devolver 3.

Si devuelve 3, entonces este tipo de código no funcionará, ¿verdad?

Intento mostrarte de nuevo lo que he escrito en la segunda página de tu tema.

una operación bitwise sólo puede responder a la pregunta: ¿Puede aplicarse tal o cual política de llenado?


Deberías intentar leer con atención lo que está escrito. La función SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE)

  • puede devolver 1 que corresponde a SYMBOL_FILLING_FOK
  • puede devolver 2 que corresponde a SYMBOL_FILLING_IOC
  • puede devolver 3, que es la suma de SYMBOL_FILLING_FOK + SYMBOL_FILLING_IOC .

Imprimir las banderas SYMBOL_FILLING_FOK y SYMBOL_FILLING_IOC

Simplemente escriba

Print(SYMBOL_FILLING_FOK);
Print(SYMBOL_FILLING_IOC);

Lo que verá¿¿¿¿

 
Dmitry Fedoseev:

Si SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE) devuelve 3, el código devolverá true

Gracias, ahora me he dado cuenta de que estaba haciendo mal la conjunción.
 
Gracias a todos por sus respuestas. Ya está todo resuelto. Cometí un error en las operaciones lógicas, por eso se produjo la confusión. Gracias por meterte conmigo)