![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Exemplo da classe de comércio CTrade. Primeiro é verificado para'SYMBOL_FILLING_FOK', depois para'SYMBOL_FILLING_IOC'.
A verificação é feita utilizandoa operação 'AND bitwise'.
Bitwise E operação
O bitwise AND operação das representações binárias x e y. O valor da expressão contém 1 (VERDADEIRO) em todos os bits onde tanto x como y contêm não-zero; e 0 (FALSO) em todos os outros bits.
Exemplo:
Mais sobre as operações bitwise.
Afinal não pode haver dois ao mesmo tempo? O que a função deve retornar para que haja dois ao mesmo tempo?
Afinal não pode haver dois ao mesmo tempo? O que a função deve retornar para que haja dois ao mesmo tempo?
Exemplo de verificações de dois caracteres do servidor MetaQuotes-Demo:
Veja as especificações (preenchimento) para estes símbolos:
e aqui está uma variante mais comum: quando todos os preenchimentos estão disponíveis para um símbolo
e especificação
Poderia ser 2, então a função retornará 3. MAS¡¡¡¡¡ Esta é uma situação atípica. Considerando que existem apenas 3 opções, poderia ser 1, 2 ou a soma de 1+2. É a soma, não a terceira opção. Portanto, a verificação com uma operação um pouco mais simples só pode responder à pergunta: Pode esta ou aquela política de preenchimento ser aplicada.
Eu ainda não entendo como uma variável pode retornar dois membros. E se ele devolver um membro como 3, então as operações bitwise não funcionarão. Decidi apenas escolher o modo EXECUTION_INSTANT e sempre terei uma política FOK .
Para entender isso, é preciso entender o que são bandeiras.
Cada valor seguinte de uma bandeira é o valor da bandeira anterior multiplicado por 2. Isto é, 1, 2, 4, 8, 16, 32......... Portanto, se o valor for 33, significa que este valor contém apenas 1 e 32. Da mesma forma, se o valor for 18, ele só pode ser composto de 16 e 2. E o valor 3 só pode ser composto de 1 e 2.
Portanto, as operações bitwise estão apenas verificando se o valor verificado está presente na soma das bandeiras. Se você verificar se um número arbitrário está incluído em 18, você recebe um número falso, exceto para verificar os valores 2 e 16.
Para entender isso, é preciso entender o que são bandeiras.
Cada valor seguinte de uma bandeira é o valor da bandeira anterior multiplicado por 2. Isto é, 1, 2, 4, 8, 16, 32......... Portanto, se o valor for 33, significa que este valor contém apenas 1 e 32. Da mesma forma, se o valor for 18, ele só pode ser composto de 16 e 2. E o valor 3 só pode ser composto de 1 e 2.
Portanto, as operações bitwise estão apenas verificando se o valor verificado está presente na soma das bandeiras. Se você verificar se um número arbitrário está incluído em 18, você receberá um número falso, exceto para verificar os valores 2 e 16.
Sim, eu entendo como trabalhar com dígitos binários.
A partir deste código, por exemplo, a função retorna 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?