Diferenças nos atributos dos ticks entre duas corretoras - página 2

 
Trader_Patinhas #:

Olá MoneyCaptain

>>> Na verdade, o servidor da M*** registrou o mesmo movimento da O***, porém, com os milissegundos diferentes, veja novamente e cheque os ticks de "17:09:09.578" da M***. 

Vc tem razão. Os ticks faltantes estão logo ali adiante . Observei melhor agora e vi que, em outros casos que vi de ticks aparentemente faltantes, ele realmente aparecem um pouco antes ou um pouco depois.

>>> Nesse caso específico, muito possivelmente representa o volume bid existente no book no momento da alteração. Segue um trecho do livro no segundo 17:09:09 no formato hora-tipo-preço-volume-tipo-preço-volume: 

Show, MoneyCaptain! Embora não haja documentação oficial, tudo indica que é isso mesmo! Parece que, na O**, toda vez que o bid/ask é alterado, o tick de alteração informa o volume ofertado no novo bid/ask. Obrigado pela confirmação!

Uma curiosidade: de onde você obtém esse histórico dos volumes ofertados no book em cada horário?

O meu EA gera um log com os dados do book (https://www.mql5.com/pt/docs/marketinformation/marketbookget) entre outros status do cliente MT5 qdo executa alguma atividade no servidor, então foi uma grande coincidência estar operando durante o horário que vc fez suas análises em WDON23.

Documentação sobre MQL5: Informações de Mercado / MarketBookGet
Documentação sobre MQL5: Informações de Mercado / MarketBookGet
  • www.mql5.com
MarketBookGet - Informações de Mercado - Referência MQL5 - Referência sobre algorítimo/automatização de negociação na linguagem para MetaTrader 5
 
MoneyCaptain #:

O meu EA gera um log com os dados do book (https://www.mql5.com/pt/docs/marketinformation/marketbookget) entre outros status do cliente MT5 qdo executa alguma atividade no servidor, então foi uma grande coincidência estar operando durante o horário que vc fez suas análises em WDON23.

Legal MoneyCaptain.

Eu tb já fiz um robozinho assim. Mas na época eu acabei não usando informações do book, então nunca deixei ele rodando muito tempo.

Agora tenho intenção de incluir informações do book, mas, como uso redes neurais, precisaria de uma base de dados histórica extensa pra treinamento. Teria que deixar o robô coletando dados direto durante muito tempo, pra ter número suficiente de amostras.

Qdo vc respondeu de bate-pronto com os dados do WDO daquele momento, imaginei que vc tivesse acesso a alguma base histórica.

Há uns 2 anos atrás eu procurei muito por uma base histórica de movimento de book e não encontrei, nem mesmo me dispondo a pagar.

Não sei se hoje já existe. Alguém sabe?

 

Boa tarde traders, então esse assunto é muito polemico e estou pesquisando muito a fundo até porque tenho uma empresa que faz algoritmos. Estamos vendo a possibilities de trazer um Data Feed de fora como o da Nelogica ou da Cedro tech. 

Pergunta, alguém já chegou a fazer esse tipo de operação de trazer uma biblioteca de dados Tick a Tick de terceiros dentro do MT5 para fazer Backtest e Testes de Robustez mais precisos? Estou já estudando essa possibilidade, como foi colocado aqui, tenho o da XP e é uma m.... 

abraço e bons traders

 
Fabio schmidt #:

Boa tarde traders, então esse assunto é muito polemico e estou pesquisando muito a fundo até porque tenho uma empresa que faz algoritmos. Estamos vendo a possibilities de trazer um Data Feed de fora como o da Nelogica ou da Cedro tech. 

Pergunta, alguém já chegou a fazer esse tipo de operação de trazer uma biblioteca de dados Tick a Tick de terceiros dentro do MT5 para fazer Backtest e Testes de Robustez mais precisos? Estou já estudando essa possibilidade, como foi colocado aqui, tenho o da XP e é uma m.... 

abraço e bons traders

Eu já entrei em contato pra saber, tanto com a Nelogica quanto com a Cedro pra ver isso. O formato dos dados nesses sinais proprietários é diferente do MT5. Vc teria que construir um script que colete os dados da API de um desses provedores e transforme os dados recebidos para o formato usado no Backtest do MT5.

Um outro ponto é que, na minha visão, só faz sentido usar no backtest o sinal de algum provedor externo ao servidor MT5 da corretora se o robô de negociação também for modificado para negociar em tempo real usando o sinal desse mesmo provedor. Caso contrário, de que valeria ter um resultado simulado num cenário de dados "ok" desse provedor externo, se na prática o robô iria negociar com base nos dados "não-ok" do servidor MT5 da corretora? 

 
Trader_Patinhas #:

Eu já entrei em contato pra saber, tanto com a Nelogica quanto com a Cedro pra ver isso. O formato dos dados nesses sinais proprietários é diferente do MT5. Vc teria que construir um script que colete os dados da API de um desses provedores e transforme os dados recebidos para o formato usado no Backtest do MT5.

Um outro ponto é que, na minha visão, só faz sentido usar no backtest o sinal de algum provedor externo ao servidor MT5 da corretora se o robô de negociação também for modificado para negociar em tempo real usando o sinal desse mesmo provedor. Caso contrário, de que valeria ter um resultado simulado num cenário de dados "ok" desse provedor externo, se na prática o robô iria negociar com base nos dados "não-ok" do servidor MT5 da corretora? 

Concordo!

 
Trader_Patinhas #:

Eu já entrei em contato pra saber, tanto com a Nelogica quanto com a Cedro pra ver isso. O formato dos dados nesses sinais proprietários é diferente do MT5. Vc teria que construir um script que colete os dados da API de um desses provedores e transforme os dados recebidos para o formato usado no Backtest do MT5.

Um outro ponto é que, na minha visão, só faz sentido usar no backtest o sinal de algum provedor externo ao servidor MT5 da corretora se o robô de negociação também for modificado para negociar em tempo real usando o sinal desse mesmo provedor. Caso contrário, de que valeria ter um resultado simulado num cenário de dados "ok" desse provedor externo, se na prática o robô iria negociar com base nos dados "não-ok" do servidor MT5 da corretora? 


Realmente, não valeria de muita coisa. A impressão que tenho é que se não encontrarmos uma fonte de dados de qualidade desperdiçaremos um tempo absurdo em codificação, testes e análises que por fim não convergem para a realidade e quase inviabilizam nossos projetos.

Gostaria de enriquecer a discussão trazendo um quadro comparativo que montei. Ele apresenta os ticks do WINQ23 antes das 9h e os primeiros salvos logo após as 9h para compararmos os que foram salvos em tempo real e depois rodando o backtest.


Real Time Backtest - Modelagem: Cada tick é baseado em um tick real
#Tick no
Minuto
Data Horário Compra Venda Negociação Flags #Tick no
Minuto
Data Horário Compra Venda Negociação Flags
1 20230629 08:55:00 122000 118800 118570 6 1 20230629 08:55:00 122000 118800 0 6
2 20230629 08:55:00 122000 114000 118570 4 2 20230629 08:55:00 122000 114000 0 4
3 20230629 08:55:58 124170 114000 118570 2 3 20230629 08:55:58 124170 114000 0 2
1 20230629 08:56:00 124170 114000 118570 2 1 20230629 08:56:00 124170 114000 0 2
2 20230629 08:56:05 124170 114000 118570 4 2 20230629 08:56:05 124170 114000 0 4
3 20230629 08:56:10 125835 114000 118570 2 3 20230629 08:56:10 125835 114000 0 2
1 20230629 08:57:03 125835 114000 118570 2 1 20230629 08:57:03 125835 114000 0 2
2 20230629 08:57:07 125835 114000 118570 4 2 20230629 08:57:07 125835 114000 0 4
1 20230629 08:58:00 125835 114000 118570 2 1 20230629 08:58:00 125835 114000 0 2
2 20230629 08:58:08 125835 114000 118570 4 2 20230629 08:58:08 125835 114000 0 4
3 20230629 08:58:20 126175 114000 118570 2 3 20230629 08:58:20 126175 114000 0 2
1 20230629 08:59:01 126175 114000 118570 2 1 20230629 08:59:01 126175 114000 0 2
2 20230629 08:59:09 126175 114000 118570 4 2 20230629 08:59:09 126175 114000 0 4
1 20230629 09:00:00 126175 114000 118570 2 1 20230629 09:00:00 119115 119120 0 6
2 20230629 09:00:10 126175 114000 118570 4 2 20230629 09:00:00 119120 119125 0 6
3 20230629 09:00:44 126175 114000 119115 56 3 20230629 09:00:00 119115 119120 0 6
4 20230629 09:00:44 126175 114000 119115 56 4 20230629 09:00:00 119120 119125 0 6
5 20230629 09:00:44 126175 114000 119115 0 5 20230629 09:00:00 119115 119120 0 6


Diferenças entre Real Time e Backtest
Ponto Descrição
1-  Valor da última negociação sempre zerado.
2-  Flags coicidem somente até enquanto hora do tick é < 9:00.
3-  9h em diante todos os flags do Backtest são 6.
4-  Número de ticks durante o leilão é irreal (2 ou 3 por minuto).
5-  Após as 9h nada mais coicide.
Observações:
Ticks impressos na função OnTick().
Corretora Clear.
Salvei um arquivo por minuto baseado no datetime do tick.
Dúvidas:
Metatrader ou Clear? Quem é o responsável pela bagunça?
Alguma outra corretora nos fornece um sinal coerente?
Em qual delas os ticks em Realtime são iguais aos do Backtest?
9:00h - Real Time (1135) x Backtest (3601) - Diferença # ticks.
Alguém tem ideia da razão para a diferença no # de ticks?
Essa diferença ocorreu no 1o minuto das 9h.


Alguém aí teria resposta para alguma das dúvidas acima diante do quadro?

 
Daniel Paixão #:


Realmente, não valeria de muita coisa. A impressão que tenho é que se não encontrarmos uma fonte de dados de qualidade desperdiçaremos um tempo absurdo em codificação, testes e análises que por fim não convergem para a realidade e quase inviabilizam nossos projetos.

Gostaria de enriquecer a discussão trazendo um quadro comparativo que montei. Ele apresenta os ticks do WINQ23 antes das 9h e os primeiros salvos logo após as 9h para compararmos os que foram salvos em tempo real e depois rodando o backtest.

Oi Daniel.

No caso vc está comparando os eventos que ocorrem durante o leilão de abertura. Vc utiliza os eventos do leilão pra tomar decisões de negociação?

 
Trader_Patinhas #:

Oi Daniel.

No caso vc está comparando os eventos que ocorrem durante o leilão de abertura. Vc utiliza os eventos do leilão pra tomar decisões de negociação?


Boa noite Trader_Patinhas,

   Obrigado pelo retorno. Na verdade não, eu coloquei as informações do início do dia, quando ainda está acontecendo o leilão, para facilitar a comparação entre os ticks. Quando observamos logo no início do dia percebemos que os ticks do leilão são parecidos, mas a partir das 9h são completamente diferentes.

Trader_Patinhas
Trader_Patinhas
  • 2023.06.21
  • www.mql5.com
Perfil do Trader
 
Trader_Patinhas:

Bom dia.

Eu estava investigando diferenças de comportamento do meu algoritmo entre os dados de tick das corretoras Orama e Modal e descobri que a razão é esta aqui:

Na imagem acima temos o log da Orama à esquerda e o log da Modal à direita.

Em ambos, os eventos 56 (agressão de compra) e 88 (agressão de venda) são praticamente idênticos 99,9% do tempo.

Os eventos de alteração de BID/ASK (marcados no retângulo vermelho acima) também se correspondem quase perfeitamente nos timestamps e nos preços, mas com diferenças grandes nos flags e no volume.

O servidor MT5 da Orama parece ativar o TICK_FLAG_BUY (valor 32) e TICK_FLAG_VOLUME (valor 16) junto com o TICK_FLAG_BID (valor 2), totalizando 50 no campo "Flags" nos eventos em que o servidor MT5 da Modal ativa somente o TICK_FLAG_BID (valor 2).

E parece também ativar o TICK_FLAG_SELL (64) e TICK_FLAG_VOLUME (16) junto com o TICK_FLAG_ASK (4), totalizando 84  no campo "Flags"  nos eventos em que o servidor MT5 da Modal ativa somente o TICK_FLAG_ASK (4).

Até aí tudo bem, foi só fazer uma pequena adaptação de lógica para funcionar igual nas duas corretoras.

Mas o que me deixa intrigado são esses valores que a Orama preenche no campo "Volume" (10, 191, 2 e 466 na imagem acima), dando a entender que houve negociação do ativo nesses eventos, ao passo que a Modal indica que houve somente alteração de BID/ASK.

E o mais bizarro é que o desempenho do meu algoritmo MELHORA de forma consistente e reproduzível quando esses volumes com flags 50 e 84, que só existem na Orama, são incluídos no cálculo dos indicadores usados no meu modelo preditivo, o que parece indicar que essa informação deve ter algum valor.

Alguém sabe o que esses volumes significam? Será que é negociação RLP, negócio direto, volume ofertado no book ???

Patinhas,

Segue meu entendimento da questão.

Primeiro, o que consta na documentação sobre o MqlTick.

    You can analyze the tick flags to find out what data have been changed exactly:

        +    TICK_FLAG_BID –  tick has changed a Bid price
        +    TICK_FLAG_ASK  – a tick has changed an Ask price
        +    TICK_FLAG_LAST – a tick has changed the last deal price
        +    TICK_FLAG_VOLUME – a tick has changed a volume
        +    TICK_FLAG_BUY – a tick is a result of a buy deal
        +    TICK_FLAG_SELL – a tick is a result of a sell deal

Resumindo,

1) os 2 últimos flags identificam se é compra ou venda,
2) os 4 primeiros indicam se o respectivo valor MUDOU em relação ao tick anterior.

Ou seja, se um valor não mudou, prevalece o valor do tick precedente.

Sendo assim,

flag 50: compra + volume + bid
flag 84: venda + volume + ask

Ou seja, cada uma das 4 operações destacadas representa uma compra ou venda dos volumes indicados no valor do tick.last precedente (no caso 4796.0), que por acaso coincidem com uma mudança do bid ou do ask (ou que são agregadas pela corretora num único tick).

 
Daniel Paixão #:


Realmente, não valeria de muita coisa. A impressão que tenho é que se não encontrarmos uma fonte de dados de qualidade desperdiçaremos um tempo absurdo em codificação, testes e análises que por fim não convergem para a realidade e quase inviabilizam nossos projetos.

Gostaria de enriquecer a discussão trazendo um quadro comparativo que montei. Ele apresenta os ticks do WINQ23 antes das 9h e os primeiros salvos logo após as 9h para compararmos os que foram salvos em tempo real e depois rodando o backtest.


Real Time Backtest - Modelagem: Cada tick é baseado em um tick real
#Tick no
Minuto
Data Horário Compra Venda Negociação Flags #Tick no
Minuto
Data Horário Compra Venda Negociação Flags
1 20230629 08:55:00 122000 118800 118570 6 1 20230629 08:55:00 122000 118800 0 6
2 20230629 08:55:00 122000 114000 118570 4 2 20230629 08:55:00 122000 114000 0 4
3 20230629 08:55:58 124170 114000 118570 2 3 20230629 08:55:58 124170 114000 0 2
1 20230629 08:56:00 124170 114000 118570 2 1 20230629 08:56:00 124170 114000 0 2
2 20230629 08:56:05 124170 114000 118570 4 2 20230629 08:56:05 124170 114000 0 4
3 20230629 08:56:10 125835 114000 118570 2 3 20230629 08:56:10 125835 114000 0 2
1 20230629 08:57:03 125835 114000 118570 2 1 20230629 08:57:03 125835 114000 0 2
2 20230629 08:57:07 125835 114000 118570 4 2 20230629 08:57:07 125835 114000 0 4
1 20230629 08:58:00 125835 114000 118570 2 1 20230629 08:58:00 125835 114000 0 2
2 20230629 08:58:08 125835 114000 118570 4 2 20230629 08:58:08 125835 114000 0 4
3 20230629 08:58:20 126175 114000 118570 2 3 20230629 08:58:20 126175 114000 0 2
1 20230629 08:59:01 126175 114000 118570 2 1 20230629 08:59:01 126175 114000 0 2
2 20230629 08:59:09 126175 114000 118570 4 2 20230629 08:59:09 126175 114000 0 4
1 20230629 09:00:00 126175 114000 118570 2 1 20230629 09:00:00 119115 119120 0 6
2 20230629 09:00:10 126175 114000 118570 4 2 20230629 09:00:00 119120 119125 0 6
3 20230629 09:00:44 126175 114000 119115 56 3 20230629 09:00:00 119115 119120 0 6
4 20230629 09:00:44 126175 114000 119115 56 4 20230629 09:00:00 119120 119125 0 6
5 20230629 09:00:44 126175 114000 119115 0 5 20230629 09:00:00 119115 119120 0 6


Diferenças entre Real Time e Backtest
Ponto Descrição
1-  Valor da última negociação sempre zerado.
2-  Flags coicidem somente até enquanto hora do tick é < 9:00.
3-  9h em diante todos os flags do Backtest são 6.
4-  Número de ticks durante o leilão é irreal (2 ou 3 por minuto).
5-  Após as 9h nada mais coicide.
Observações:
Ticks impressos na função OnTick().
Corretora Clear.
Salvei um arquivo por minuto baseado no datetime do tick.
Dúvidas:
Metatrader ou Clear? Quem é o responsável pela bagunça?
Alguma outra corretora nos fornece um sinal coerente?
Em qual delas os ticks em Realtime são iguais aos do Backtest?
9:00h - Real Time (1135) x Backtest (3601) - Diferença # ticks.
Alguém tem ideia da razão para a diferença no # de ticks?
Essa diferença ocorreu no 1o minuto das 9h.


Alguém aí teria resposta para alguma das dúvidas acima diante do quadro?

Daniel,

Os ticks do backtest são ticks gerados, embora supostamente "baseados em ticks reais". Não são.

Razão: