devolve a política de execução. - página 7

 
Agora eu verifiquei o código. 1234==2 é falso. De fato, os números estão sendo comparados. Qual é então a inscrição? E acontece então que esta função não pode retornar um triplet se fok e ioc estiverem disponíveis?
SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
 
Ivan_Invanov:

se 1234==2 é falso, este código não funciona.

pequena verificação só pode responder à pergunta: esta ou aquela política de preenchimento pode ser aplicada?


São operações pouco controladas que não são verificadas como você quer que sejam. Exatamente esta linha

if((filling&SYMBOL_FILLING_FOK)==SYMBOL_FILLING_FOK)

lê-se assim:

Se uma variável (se for deslocada por SYMBOL_FILLING_FOK bit) for igual a SYMBOL_FILLING_FOK

Se eu for autodidata, serei corrigido por alguém mais experiente.
 
Dmitry Fedoseev:

Não, eles não estão errados. Também não há contradição. Há apenas algo que você não entende e teimosamente se recusa a entender.

Não, eu quero entender. Por favor, explique novamente.
 
Alexey Viktorov:

Estas são operações bitwise e não são tão validadas como você poderia pensar. Especificamente, uma linha como esta

lê-se assim:

Se uma variável (preenchida por SYMBOL_FILLING_FOK bit) for igual a SYMBOL_FILLING_FOK

Se eu for autodidata, serei corrigido por alguém mais experiente.
Certo ou errado. O operador de câmera é o único.
 
Ivan_Invanov:
Não, eu quero entender. Por favor, explique novamente.

Já foi explicado cinco vezes. Você precisa começar por si mesmo - admitir que você não entende algo, não no mundo alguém está errado e especialmente na referência.

 
Dmitry Fedoseev:

Já foi explicado cinco vezes. Você precisa começar por si mesmo - admitir que você não entende algo, não no mundo alguém está errado e especialmente no certificado.

Talvez não haja erro na referência, mas ela é escrita de forma incompreensível (talvez só para mim). Como eu disse, eu verifiquei o código e agora a questão desapareceu. Foi-me dito nesta linha que a função

SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);

pode retornar 3.

Se devolver 3, então um código como este não vai funcionar, certo?

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:

Pode não haver um erro na ajuda, mas ela não está claramente escrita (talvez só para mim). Como eu disse, eu verifiquei com o código e a questão agora desapareceu. Foi-me dito nesta linha que a função

pode retornar 3.

Se devolver 3, este código não vai funcionar, certo?

Se SymbolInfoInteger(símbolo,SYMBOL_FILLING_MODE) retornar 3, o código retornará verdadeiro

 
Ivan_Invanov:

Pode não haver um erro na ajuda, mas ela não está claramente escrita (talvez só para mim). Como eu disse, eu verifiquei com o código e a questão agora desapareceu. Foi-me dito nesta linha que a função

pode retornar 3.

Se devolver 3, então este tipo de código não vai funcionar, certo?

Estou tentando mostrar novamente o que escrevi na segunda página do seu tópico.

uma operação um pouco mais simples só pode responder à pergunta: Pode esta ou aquela política de preenchimento ser aplicada.


Você deve tentar ler cuidadosamente o que está escrito. A função SymbolInfoInteger(símbolo,SYMBOL_FILLING_MODE)

  • pode retornar 1 que corresponde a SYMBOL_FILLING_FOK
  • pode retornar 2 que corresponde a SYMBOL_FILLING_IOC
  • pode retornar 3, que é a soma de SYMBOL_FILLING_FOK + SYMBOL_FILLING_IOC .

Imprimir as bandeiras SYMBOL_FILLING_FOK e SYMBOL_FILLING_IOC

Basta escrever

Print(SYMBOL_FILLING_FOK);
Print(SYMBOL_FILLING_IOC);

O que você vai ver¿¿¿¿

 
Dmitry Fedoseev:

Se SymbolInfoInteger(símbolo,SYMBOL_FILLING_MODE) retornar 3, o código retornará verdadeiro

Obrigado, agora eu percebi que estava fazendo a conjunção errada.
 
Obrigado a todos por suas respostas. Está tudo resolvido. Cometi um erro em operações lógicas, por isso a confusão ocorreu. Obrigado por se meter comigo)