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

 
Ivan_Invanov:

Sim, eu entendo como trabalhar com dígitos binários.

A partir deste código sai, por exemplo, a função devolvida 3 .

(11&1)==1 ; 11===01 não, isso é falso, não funcionou.

Eu estava apenas escrevendo isto e pensei que talvez eu tivesse entendido mal as operações.

e isso significa que converto valores decimais em binários e faço uma pequena conjunção.

== verdadeiro quando o primeiro termo é igual ao segundo termo. Isto é correto?

Isto é o que eu não entendo, eu sou autodidata. Eu só sei como verificar e o que posso conseguir. Seu exemplo (11&1)==1 resultará em verdade, já que 11 só pode ser composto de bandeiras 1+2+8, portanto 1 está incluído no conjunto.

Verifique o que será devolvido

return(1|2|8);
 
Alexey Viktorov:
Isto é o que eu não entendo, eu sou autodidata. Eu só sei como verificar e o que posso conseguir. Seu exemplo (11&1)==1 resultará em verdadeiro, pois 11 só pode ser composto de bandeiras 1+2+8, portanto 1 está incluído no conjunto.

Verifique o que será devolvido

Isto é o que escrevi em binário, esqueci de especificar. Eu substituí os valores no código que escrevi se a função retornasse 3 e o comparei com FOK. É assim que se escreve o binário. (0b11 & 0b1)==0b1 ; o resultado entre parênteses 0b11 tem a expressão 0b11==0b1 ; mas se revela falso, em minha opinião. Deve ser verdade para que tudo funcione. Bem, já que esta amostra está na ajuda, é verdade. Eu devo ter entendido mal alguma coisa. Agora olhei para a ajuda C, e para a ajuda Mql antes disso. Parece ser a mesma coisa. Peço desculpas se estou fazendo perguntas muito bobas e agradeço a todos vocês pelas respostas.
 
A ajuda do mql diz que o valor verdadeiro é qualquer valor não zero, portanto, essa deve ser a resposta. E depois a igualdade, e em C a igualdade. Acontece que não é igualdade, mas se os termos comparados forem maiores que zero, então o valor é verdadeiro. Acho que sim. Está escrito de forma pouco clara. É sobre o == operador.
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип bool
  • www.mql5.com
Внутреннее представление – целое число размером 1 байт. Необходимо отметить, что в логических выражениях допустимо использовать вместо типа bool другие целые или...
 

Uma operação um pouco mais ampla, esta é uma operação P O B I T O R T. Funciona com bits. Por exemplo, 1 é 00000001. 2 é 00000010. Uma bandeira só pode ser 1, 2, 4, 8, etc. Em resumo, um pouco está ocupado.

E um conjunto de bandeiras pode ter qualquer pedaço ocupado, por exemplo, 00000101. Este conjunto inclui as bandeiras 00000001 e 00000100. E para descobrir se alguma bandeira está incluída no conjunto de bandeiras, você tem que fazer um pouco "e" da bandeira e do conjunto, se ela deixar uma bandeira, significa que ela está no conjunto:

(0000010101& 00000100) == 00000100 - verdadeiro. Isto significa que há uma bandeira 00000101 no conjunto 00000101.

 
Dmitry Fedoseev:

Uma operação um pouco mais ampla, esta é uma operação P O B I T O R T. Funciona com bits. Por exemplo, 1 é 00000001. 2 é 00000010. Uma bandeira só pode ser 1, 2, 4, 8, etc. Em resumo, um pouco está ocupado.

E um conjunto de bandeiras pode ter qualquer pedaço ocupado, por exemplo, 00000101. Este conjunto inclui as bandeiras 00000001 e 00000100. E para descobrir se alguma bandeira está incluída no conjunto de bandeiras, você tem que fazer um pouco "e" da bandeira e do conjunto, se ela deixar uma bandeira, significa que está no conjunto:

(0000010101& 00000100) == 00000100 - verdadeiro. Isto significa que há uma bandeira 00000101 no conjunto 00000101.

É verdade que (termo positivo 1 == termo positivo 2) mas o termo positivo 1 não é igual ao termo positivo 2? Acontece que sim, porque a ajuda diz que a verdade é qualquer valor não zero, e então o código funciona.
 
Ivan_Invanov:
É verdade que (termo positivo 1 == termo positivo 2) mas o termo positivo 1 não é igual ao termo positivo 2? Acontece que sim, porque a ajuda diz que a verdade é qualquer valor não zero, e então o código funciona.
O que me confunde é que a palavra igualdade é escrita a seguir.
 
Onde está a referência? Especificamente onde e o quê?
 
Dmitry Fedoseev:
Em que lugar da referência? Onde e o quê?

Isto me parece ser uma contradição. Não é verdade se a é igual a b, mas se a e b são diferentes de zero. Bem, não é uma contradição, não está claramente escrito. Acho que consegui, obrigado.

Arquivos anexados:
1111.jpg  29 kb
 
ENUM_SYMBOL_TRADE_EXECUTION Não diz que tipo é, e os cabeçalhos de ajuda são misturados (parecia ser escrito para string, e depois sem mencionar começou a falar sobre inteiros). Eu tentei todas as três opções, mas cada vez que cometi um erro de compilação. O que está errado?
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 Não diz que tipo tem, e os cabeçalhos em ajuda são misturados (parecia ser escrito para string, e depois sem mencionar começou a falar de inteiros) . Eu tentei todas as três opções, mas cada vez que cometi um erro de compilação. O que está errado?

Você tem que fazer desta maneira:

//--- 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);
  }
Razão: