nota: Faltou o "?" no final da linha do título! Correto seria: "Documentação MqlTick INCOMPLETA ?"
Boa tarde!
Na documentação (https://www.mql5.com/pt/docs/constants/structures/mqltick) os flag da estrutura podem ser:
- TICK_FLAG_BID — tick alterou o preço Bid
- TICK_FLAG_ASK — tick alterou o preço Ask
- TICK_FLAG_LAST — tick alterou o último preço da oferta
- TICK_FLAG_VOLUME — tick alterou o volume
- TICK_FLAG_BUY — tick é resultado de uma compra
- TICK_FLAG_SELL — tick é resultado de uma venda
Só que o valor de retorno é numeral tipo uint, se trabalhamos com um if gera aviso conversão tipo dados, logo é necessário saber qual numeral corresponde a cada flag, onde encontro essa informação?
Olá Daniel Andrejczuk,
Sugiro você analisar o seguinte código para entender melhor como funciona: https://www.mql5.com/pt/code/14667
Abraços,
Malacarne
- votos: 18
- 2016.03.04
- Karputov Vladimir
- www.mql5.com
nota: Faltou o "?" no final da linha do título! Correto seria: "Documentação MqlTick INCOMPLETA ?"
Boa tarde!
Na documentação (https://www.mql5.com/pt/docs/constants/structures/mqltick) os flag da estrutura podem ser:
- TICK_FLAG_BID — tick alterou o preço Bid
- TICK_FLAG_ASK — tick alterou o preço Ask
- TICK_FLAG_LAST — tick alterou o último preço da oferta
- TICK_FLAG_VOLUME — tick alterou o volume
- TICK_FLAG_BUY — tick é resultado de uma compra
- TICK_FLAG_SELL — tick é resultado de uma venda
Só que o valor de retorno é numeral tipo uint, se trabalhamos com um if gera aviso conversão tipo dados, logo é necessário saber qual numeral corresponde a cada flag, onde encontro essa informação?
Tecnicamente, estamos falando de uma operação do tipo "bitwise AND operation".
Mais informações na documentação oficial: https://www.mql5.com/en/docs/basis/operations/bit
Outro exemplo interessante na internet (também conhecido como bitflags): http://www.dylanleigh.net/notes/c-cpp-tricks.html
Abraços,
Malacarne
- www.mql5.com
Rodrigo Malacarne, boa noite!
Já ajudou, obrigado. Analisando o código acima, entendi o resultado, mais na prática não entendi a aplicação do "&" (tick.flags &TICK_FLAG_BID), ele converte o resultado padrão dessa variável que era número para texto?
if((tick.flags &TICK_FLAG_BID)==TICK_FLAG_BID)
Grato,
Daniel
Rodrigo Malacarne, boa noite!
Já ajudou, obrigado. Analisando o código acima, entendi o resultado, mais na prática não entendi a aplicação do "&" (tick.flags &TICK_FLAG_BID), ele converte o resultado padrão dessa variável que era número para texto?
if((tick.flags &TICK_FLAG_BID)==TICK_FLAG_BID)
Grato,
Daniel
Daniel Andrejczuk,
A variável tick.flags pode assumir múltiplos valores ao mesmo tempo. Se TICK_FLAG_BID tem o valor binário de 2, e TICK_FLAG_ASK tem o valor binário de 4, logo, se a variável tick.flags possui um valor igual a 6, isso significa que a mesma assume ao mesmo tempo os valores 2 e 4, uma vez que a soma delas é igual a 6. Da mesma forma, o valor tick.flags igual a 7, corresponde à soma de 1 (2^0), 2 (2^1), e 4 (2^2), e assim por diante...
Abraços,
Malacarne
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
nota: Faltou o "?" no final da linha do título! Correto seria: "Documentação MqlTick INCOMPLETA ?"
Boa tarde!
Na documentação (https://www.mql5.com/pt/docs/constants/structures/mqltick) os flag da estrutura podem ser:
Só que o valor de retorno é numeral tipo uint, se trabalhamos com um if gera aviso conversão tipo dados, logo é necessário saber qual numeral corresponde a cada flag, onde encontro essa informação?
Grato,
Daniel