MqlTick.flags zerado - página 4

 
dvd:

Obrigado. Segundo o forum em inglês, parece que o bit-8 no flag é para uso interno no MetaTrader, já conhecido mas não documentado.

No entanto, para mim, isso tem gerado diferenças no resultado do BackTest com simbolo original para um simbolo customizado idêntico ao original.

Mais sobre essa discussão no tópico https://www.mql5.com/en/forum/316414

dvd, isso está acontecendo porque vc está tratando o campo "flags" como um único número inteiro, em vez de verificar cada flag isoladamente. 

Para resolver o seu problema, basta ignorar esses flags extras não documentados (que estão variando de um ativo pro outro, gerando o problema que você relata).

Uma forma simples de fazer isso é fazer flags &= 0x07F (ou flags %= 128, se preferir, dá no mesmo), daí vc vai poder comparar o campo "flags" como se fosse 1 único número inteiro, pois assim vc estará pegando somente os flags de 0 a 6 (documentados) e zerando os flags 7 e 8 (não documentados) e todos os demais flags (9, 10, etc.) que possam vir a aparecer no futuro.

Se preferir uma solução menos "nerd" e mais profissional, faça um "bitwise-and" entre o campo "flags" e o(s) flag(s) específico(s) que for(em) de interesse na lógica de processamento que estiver implementando.

Exemplos:

if ( flags & TICK_FLAG_BUY ) ... 

if ( flags & ( TICK_FLAG_BID | TICK_FLAG_ASK) ) ... 

etc

Dessa forma, quaisquer flags alienígenas não-documentados que vierem acesos ocasionalmente não interferirão mais na sua lógica de processamento.

 
Jhoni Carlos Da Silva:

Acho que agora resolveu, com o CopyTicks, segundo o Trader_Patinhas sugeriu, segue o código:

Obrigado pessoal.

Jhoni Carlos da Silva.

Jhoni,

Este código capta os ticks em real-time ou com delay de 10 segundos?

 
Parabéns pelas suas desscobertas Tio Patinhas.
Tenho 4 anos de mercado apenas e opero forex. 
Abçs e sucesso. Caso tenha algo para forex me contate por favor, wellicebarbosa@gmail.com
Razão: