Analisando Qualidade dos Ticks de Last Fornecidos para Backtest

 

Boa noite pessoal!

Obs: Esse é meu primeiro tópico, não sei se estou quebrando alguma regra/protocolo para postagens. Tenham um pouco de paciência com esse marinheiro de primeira viagem.

Atualmente tenho feitos vários scripts em Python para analisar a qualidade dos históricos fornecidos para backtest pelas corretoras. Tive várias conclusões, uma delas é sobre a defasagem de tempo entre o recebimento dos ticks de last em relação aos de bid/ask.

Para separar o problema, decidi averiguar somente os ticks de last. Fiz um código que une os ticks de 3 corretoras em um único .csv (tive o cuidado para não duplicar, tendo em vista que temos ticks iguais no preço, volume e segundos).

Depois disso, fiz um programa que printa a diferença de preço e tempo entre cada tick.

As vezes tenho picos de preço mesmo com o delta tempo entre os ticks zerado. O preço de last dá um pulo de 40, 50 ou até 100 pontos entre dois ticks. O mercado tem força e condições para isso ocorrer na realidade ? Ou tenho uma amostragem falha mesmo com o delta tempo zerado?


Toda vez que tenho um delta preço superior a 20 pontos é printado a diferença de preço e tempo entre os dois ticks.


Esse pulo nos preços de negociação pode ocorrer? É comum? A unica possibilidade que consigo enxergar é o book de ofertas não ter ordens em um trecho e o preço disparar na subida/descida. Lembrando que não é uma subida/descida gradual... Ela é brusca.

 
Hawllysson Almeida:

Boa noite pessoal!

Obs: Esse é meu primeiro tópico, não sei se estou quebrando alguma regra/protocolo para postagens. Tenham um pouco de paciência com esse marinheiro de primeira viagem.

Atualmente tenho feitos vários scripts em Python para analisar a qualidade dos históricos fornecidos para backtest pelas corretoras. Tive várias conclusões, uma delas é sobre a defasagem de tempo entre o recebimento dos ticks de last em relação aos de bid/ask.

Para separar o problema, decidi averiguar somente os ticks de last. Fiz um código que une os ticks de 3 corretoras em um único .csv (tive o cuidado para não duplicar, tendo em vista que temos ticks iguais no preço, volume e segundos).

Depois disso, fiz um programa que printa a diferença de preço e tempo entre cada tick.

As vezes tenho picos de preço mesmo com o delta tempo entre os ticks zerado. O preço de last dá um pulo de 40, 50 ou até 100 pontos entre dois ticks. O mercado tem força e condições para isso ocorrer na realidade ? Ou tenho uma amostragem falha mesmo com o delta tempo zerado?


Toda vez que tenho um delta preço superior a 20 pontos é printado a diferença de preço e tempo entre os dois ticks.


Esse pulo nos preços de negociação pode ocorrer? É comum? A unica possibilidade que consigo enxergar é o book de ofertas não ter ordens em um trecho e o preço disparar na subida/descida. Lembrando que não é uma subida/descida gradual... Ela é brusca.

Bom dia,

Respondendo sem descrever tecnicamente, pois eu seria repetitivo visto que tem vários tópicos grandes neste fórum com vasta explicação técnica sobre o tema: Na CONTA PRODUTIVA/REAL a resposta é pode variar sim, e pode e deve ocorrer mais de uma vez ao dia. A variação e distância entre os preços de compra/venda, book, variam de acordo com o papel/ativo/índice, volume, agressão dos investidores, liquidez e tempo(horários), e não são lineares que você possa programar, por exemplo, que exatamente as hh:mm:ss vai ocorrer um determinado evento todos os dias.

Mesmo assim há uma média diária dessas variações que tendem a manter-se na maior fatia do pregão daquele dia, que claro muda diariamente.

Quanto a conta BACKTEST não sei, pois nunca fui tão afundo no backtest. Sou meio a moda antiga ainda, uso o backtest apenas para uma visão mais distante e generalizada mas não me aprofundo nos resultados. Costumo colocar em conta Produtiva por algumas semanas com o mínimo possível investido para saber como se comporta realmente. Dai, em conta Produtiva, ai sim analiso minunciosamente todos os fatores. E claro que quase sempre perco dinheiro nestes testes pois os locais certos de fazer testes são Backtest e conta Demo como você está fazendo.

Abraços e sucessos.

Porque a Hospedagem Virtual no MetaTrader 4 e no MetaTrader 5 são Melhores que os VPS Usuais
Porque a Hospedagem Virtual no MetaTrader 4 e no MetaTrader 5 são Melhores que os VPS Usuais
  • www.mql5.com
Alugar um servidor virtual diretamente dos terminais MetaTrader 4 e MetaTrader 5 é a melhor maneira de garantir um trabalho ininterrupto de seus robôs de negociação e das assinaturas de Sinais. Essencialmente, ele é análogo a um VPS, no entanto, ele é melhor e mais adequado para atender às necessidades e desafios que um trader se depara. O...
 
Ruy Christian Hoffmann:

Bom dia,

Respondendo sem descrever tecnicamente, pois eu seria repetitivo visto que tem vários tópicos grandes neste fórum com vasta explicação técnica sobre o tema: Na CONTA PRODUTIVA/REAL a resposta é pode variar sim, e pode e deve ocorrer mais de uma vez ao dia. A variação e distância entre os preços de compra/venda, book, variam de acordo com o papel/ativo/índice, volume, agressão dos investidores, liquidez e tempo(horários), e não são lineares que você possa programar, por exemplo, que exatamente as hh:mm:ss vai ocorrer um determinado evento todos os dias.

Mesmo assim há uma média diária dessas variações que tendem a manter-se na maior fatia do pregão daquele dia, que claro muda diariamente.

Quanto a conta BACKTEST não sei, pois nunca fui tão afundo no backtest. Sou meio a moda antiga ainda, uso o backtest apenas para uma visão mais distante e generalizada mas não me aprofundo nos resultados. Costumo colocar em conta Produtiva por algumas semanas com o mínimo possível investido para saber como se comporta realmente. Dai, em conta Produtiva, ai sim analiso minunciosamente todos os fatores. E claro que quase sempre perco dinheiro nestes testes pois os locais certos de fazer testes são Backtest e conta Demo como você está fazendo.

Abraços e sucessos.

Esses ticks é somente os ticks de agressão (last com volume) referente ao mini índice. O intervalo e diferença de preço entre uma agressão e a outra.

O que está acontecendo é algo como:

Agressão de compra: 80450

Depois: agressão de compra em 80500

Um pulo entre 40 - 100 pontos no mesmo instante de tempo (até mesmo os milissegundos).

Como o tick size é 5 pontos, creio eu que a próxima agressão de compra deveria ser em 80455. Por isso fiquei meio perdido quanto a esse pulo, se ele é real ou erro de amostragem.

 
Hawllysson Almeida:

Esses ticks é somente os ticks de agressão (last com volume) referente ao mini índice. O intervalo e diferença de preço entre uma agressão e a outra.

O que está acontecendo é algo como:

Agressão de compra: 80450

Depois: agressão de compra em 80500

Um pulo entre 40 - 100 pontos no mesmo instante de tempo (até mesmo os milissegundos).

Como o tick size é 5 pontos, creio eu que a próxima agressão de compra deveria ser em 80455. Por isso fiquei meio perdido quanto a esse pulo, se ele é real ou erro de amostragem.

Entendi... pior que vou "pular" essa, não sei como te ajudar. 

Tem uns cabras muito bons, conhecem muito de MQL5, e leem o fórum diariamente, como Flávio, Rogério, Joscelino. Será que alguém mais poderia ajudar? 

 

Oi Hawllysson.

Verifiquei o WIN no primeiro horário em que aparece na sua foto (2020.04.01 10:37:59) e, realmente, no intervalo entre 2020.04.01 10:37:59.000 e 2020.04.01 10:37:59.999 o mercado teve todos esses movimentos que vc identificou.

Houve 3674 negociações nesse intervalo de 1 segundo e o preço variou entre 70295 e 70430. 

E houve vários momentos, dentro desse intervalo de 1 segundo, em que uma mesma ordem a mercado "enxugou" vários níveis de preço de uma vez só, num mesmo milésimo de segundo.

Houve um movimento específico, exatamente às 10:37:59.423, em que (aparentemente) 1 única ordem a mercado "enxugou" todos os volumes de venda ofertados de 70310 a 70410 de uma vez só.

O seu script python deve ter fracionado esse movimento de 100 pontos em pedaços menores, pois, devido ao atraso de processamento de fila no servidor MT5 da corretora (peguei dados da XP), os ticks gerados por esse movimento se distribuíram de 10:37:59.423 a 10:37:59.426 (levou cerca de 3 ms para todos os ticks gerados por essa ordem gigante serem processados).

Oura coisa é que, dependendo da corretora, os atrasos de processamento podem ser diferentes e o fracionamento do movimento pode ficar diferente.

Dando uma resposta resumida pras suas perguntas:

1) Sim. Pode haver pulos de 40 - 100 pontos no mesmo milissegundo. Às 10:37:59.423 ocorreu um de 100 pontos e ocorreram também alguns outros menores nesse intervalo de 1 segundo das 10:37:59.

2) Quanto ao tick size de 5 pontos, se vc olhar o log detalhado, verá que a sequência de ticks não pulou os 100 pontos de uma vez só, ela foi avançando de 5 em 5 pontos, tudo dentro do mesmo milissegundo, na medida em que centenas de ordens de venda nos diferentes níveis de preço foram sendo consumidas por essa ordem a mercado gigante.

 
100 pontos  representa uma oscilação de 0.01% então é uma volatilidade normal de acontecer. O que pode estar ocorrendo também são os atrasos de cotação entre as corretoras, em momentos de volatilidade isso acontece mesmo.
 
Muito obrigado pessoal! Deu pra entender bem os motivos disso acontecer! Vlww
Razão: