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
Posta sim! Vamos esclarecer esse assunto e deixar gravado aqui pra outros não passarem pelo que estamos passando hoje...
;)
Acho que agora resolveu, com o CopyTicks, segundo o Trader_Patinhas sugeriu, segue o código:
Obrigado pessoal.
Jhoni Carlos da Silva.
Não li o artigo.
O que eu consegui deduzir - posso estar errado - pelos logs que interpretei da B3/DOL, é quando uma Venda ou Compra esbarra em um lote iceberg, que sai naquele mesmo instante, afinal a ordem continua na frente da fila do book até ser toda consumida... Mas todos os ticks são válidos, não são repetidos, muito pelo contrário, tratava-se de uma ordem grande que consumiu várias "Boletas" de uma ordem iceberg.
Posso estar errado...
;)
O que eu vejo frequentemente nos logs do dólar e do índice (tanto cheio quanto mini) é uma sequência longa de ticks, todos BUY (ou todos SELL) e todos no mesmo milissegundo (mesmo time_msc), com o nível de preço negociado (last) aumentando progressivamente (quando os ticks são BUY) ou diminuindo progressivamente (quando os ticks são SELL).
No meu entendimento, essa observação é consistente com uma ordem a mercado "indo pra dentro da fila" (no jargão da galera que pratica "Tape Reading"), ou seja, uma ordem de mercado de volume grande "enxugando" de uma vez só as filas de vários níveis de preço consecutivos do book.
Se fosse ordem iceberg, não haveria essa variação progressiva de preço, pois a ordem iceberg fica recolocando a oferta sempre num mesmo nível de preço fixo, a cada vez que a fila desse nível de preço esvazia. E nesse caso os ticks não ocorreriam todos no mesmo milissegundo, pois a ordem iceberg é passiva, ela vai esperar alguma ordem a mercado consumir o volume que ela acabou de ofertar, antes de colocar nova oferta.
Obrigado pelas informações!
Acho que vou seguir com SymbolTickInfo() por agora... É um experimento e ele pode ser imperfeito... Eu só preciso de Compras e Vendas... E segundo a documentação do MQL5 os Flags que uso são os corretos mesmo... Acabei de checar...
Tentei analisar um trecho breve de logs dos ticks e passo a acreditar que, já que não encontrei nenhum padrão visível, os UNKNOWNS (os Flags Zerados) são os diretos...
;)
Só posso te dizer que, nos históricos de índice e dólar que eu baixo usando CopyTicks(), NUNCA aparecem flags zerados. Já baixei dezenas de milhões de ticks e não aparece nenhum zerado. Só aparecem 6 combinações: BID, ASK, BID+ASK, LAST+VOLUME+BUY, LAST+VOLUME+SELL e LAST+VOLUME+BUY+SELL (este último é o que eu acredito que possa ser o "negócio direto" e geralmente é 1% ou menos do volume total do dia). Quando eu tiver um tempo posto aqui uma estatística.
Muito interessante essa discussão!
Aproveito para compartilhar um artigo que corrobora com o que o Trader_Patinhas disse sobre o problema de virem dois ou mais ticks com mesmo timestamp.
https://www.mql5.com/pt/articles/3708
Legal esse arquivo!
Flavio, talvez os flags zerados correspondam aos registros verdes que aparecem na janela do DOM quando o servidor da corretora não está atualizado, conforme informa o artigo.
Os ticks zerados estão ocorrendo em qual corretora?
ps: o testemunho que dei acima sobre não ter encontrado nenhum campo flags zerado em dezenas de milhões de ticks foi com ticks baixados da Modal.
Acho que agora resolveu, com o CopyTicks, segundo o Trader_Patinhas sugeriu, segue o código:
Obrigado pessoal.
Jhoni Carlos da Silva.
Oi Jhoni.
O código que eu uso utiliza exatamente essa lógica que você codificou, só que, além dos 2 casos que o seu código trata (BUY e SELL), eu trato também os caso que vêm com os flags BUY e SELL acesos simultaneamente, de uma forma equivalente a esta abaixo:
Eu faço isso porque, se eu ignorasse esses ticks que vêm com BUY e SELL acesos, que geralmente perfazem em algo em torno de 1% do volume total, alguns cálculos que eu faço com base no volume total negociado ficariam inconsistentes.
Só posso te dizer que, nos históricos de índice e dólar que eu baixo usando CopyTicks(), NUNCA aparecem flags zerados. Já baixei dezenas de milhões de ticks e não aparece nenhum zerado. Só aparecem 6 combinações: BID, ASK, BID+ASK, LAST+VOLUME+BUY, LAST+VOLUME+SELL e LAST+VOLUME+BUY+SELL (este último é o que eu acredito que possa ser o "negócio direto" e geralmente é 1% ou menos do volume total do dia). Quando eu tiver um tempo posto aqui uma estatística.
Sim, o flag BUY+SELL é o famoso Direto... A pessoa da thread americana confirmou isso...
;)
Os ticks zerados eu só pego via SymbolInfoTick(), na Modal... CopyTicks não tem esse problema.
Não fiz uma comparação logando o resultado de ambos os processos porque já estou cansado de me debater com as inconsistências do MQL... Uma rotina simples que levaria 30min pra codificar levou o dia inteiro...
Torço pra que o Pine Script evolua muito, e rápido, e/ou que o Ninja Trader entre com tudo no Brasil...
;)
Oi Jhoni.
O código que eu uso utiliza exatamente essa lógica que você codificou, só que, além dos 2 casos que o seu código trata (BUY e SELL), eu trato também os caso que vêm com os flags BUY e SELL acesos simultaneamente, de uma forma equivalente a esta abaixo:
Eu faço isso porque, se eu ignorasse esses ticks que vêm com BUY e SELL acesos, que geralmente perfazem em algo em torno de 1% do volume total, alguns cálculos que eu faço com base no volume total negociado ficariam inconsistentes.
Entendi, vou incluir esse tratamento também.
Obrigado.
Olá,
Alguém sabe se TICK_FLAG pode ter um valor maior de 252?
Usando CopyTicksRange eu recebo TICKS_FLAGS que tem 256 a mais(somados) no flag.
Exemplo: TICK_FLAG 312 em vez de 56.
TICK_FLAG 376 em vez de 120
TICK_FLAG 344 em vez de 88
Isso está correto?
Mais detalhes no print abaixo.
Usando essa mesma Array do tipo MQLtick para atualizar um simbolo customizado com CustomTicksReplace(), o simbolo customizado fica com os flags diferente do simbolo de origem (deduzido 256).
O grande problema é que o backtest do simbolo real é diferente do simbolo customizado, sendo a única diferença seja o valor do Flag.
Realmente faz falta um histórico longo de Ticks reais que seja confiável.
Um agradecimento: Obrigado a todos pelas informações. Muito úteis!
Olá,
Alguém sabe se TICK_FLAG pode ter um valor maior de 252?
Usando CopyTicksRange eu recebo TICKS_FLAGS que tem 256 a mais(somados) no flag.
Exemplo: TICK_FLAG 312 em vez de 56.
TICK_FLAG 376 em vez de 120
TICK_FLAG 344 em vez de 88
Isso está correto?
Mais detalhes no print abaixo.
Usando essa mesma Array do tipo MQLtick para atualizar um simbolo customizado com CustomTicksReplace(), o simbolo customizado fica com os flags diferente do simbolo de origem (deduzido 256).
O grande problema é que o backtest do simbolo real é diferente do simbolo customizado, sendo a única diferença seja o valor do Flag.
Realmente faz falta um histórico longo de Ticks reais que seja confiável.
Um agradecimento: Obrigado a todos pelas informações. Muito úteis!
Sim, de um tempo pra cá os ticks de compra/venda passaram a vir com o flag 8 (valor 256) ativo. Esse flag aparentemente não está documentado e não tenho ideia do que se trata. Eu simplesmente o ignoro.
Sim, de um tempo pra cá os ticks de compra/venda passaram a vir com o flag 8 (valor 256) ativo. Esse flag aparentemente não está documentado e não tenho ideia do que se trata. Eu simplesmente o ignoro.
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