Documentação MqlTick INCOMPLETA

 

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?

Grato,

Daniel 

Documentação sobre MQL5: Constantes Padrão, Enumeradores e Estruturas / Estruturas de Dados / Estrutura para Preços Correntes
Documentação sobre MQL5: Constantes Padrão, Enumeradores e Estruturas / Estruturas de Dados / Estrutura para Preços Correntes
  • www.mql5.com
Constantes Padrão, Enumeradores e Estruturas / Estruturas de Dados / Estrutura para Preços Correntes - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
 
Daniel Andrejczuk:

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

CopyTicksInd
CopyTicksInd
  • votos: 18
  • 2016.03.04
  • Karputov Vladimir
  • www.mql5.com
O indicador demonstra a operação de obtenção dos ticks utilizando a função "CopyTicks", e permite comparar os três modos de obtenção dos ticks.
 
Daniel Andrejczuk:

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

Documentation on MQL5: Language Basics / Operations and Expressions / Bitwise Operations
Documentation on MQL5: Language Basics / Operations and Expressions / Bitwise Operations
  • www.mql5.com
Language Basics / Operations and Expressions / Bitwise Operations - Reference on algorithmic/automated trading language for MetaTrader 5
 

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:

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

 
Obrigado Malacarne!
Razão: