Book de Ofertas no Strategy Tester

 

Fala ai pessoal, boa tarde.

Estou tentando utilizar o StrategyTester do MT5, build 2007, ModalMais para fazer alguns teste, porque é mais rápido que no live, mas aparentemente não há acesso ao Book de Ofertas (li isso em um post antigo, de 2014 acho).

Alguém sabe se realmente o book de Ofertas não pode ser acessado no Strategy Tester? Estou usando a função MarketBookGet, conforme abaixo:

         if (MarketBookAdd(Symbol()))
         {
             bookOk = MarketBookGet(NULL, PBookArray);
         }
         else
         {
            Print("Erro 3: " + GetLastError() + " " + Symbol());
         }


Obrigado.

Jhoni Carlos da Silva.

 
jdayanami:

Fala ai pessoal, boa tarde.

Estou tentando utilizar o StrategyTester do MT5, build 2007, ModalMais para fazer alguns teste, porque é mais rápido que no live, mas aparentemente não há acesso ao Book de Ofertas (li isso em um post antigo, de 2014 acho).

Alguém sabe se realmente o book de Ofertas não pode ser acessado no Strategy Tester? Estou usando a função MarketBookGet, conforme abaixo:


Obrigado.

Jhoni Carlos da Silva.

Pelo que sei não há Book no módulo Teste. Até porque, se houvesse, seria possível simular a "fila", tornando os testes mais próximos do realidade. 

Agora, se sua estratégia depende do Book, é perda de tempo utilizar o tester e a justificativa de ser mais rápido não é suficiente. Na verdade é ilusória.

Você deve testar sua estratégia no ambiente que permita reproduzi-la. Do contrário, estará se enganando.

[ ]´s

 
Joscelino Celso de Oliveira:

Pelo que sei não há Book no módulo Teste. Até porque, se houvesse, seria possível simular a "fila", tornando os testes mais próximos do realidade. 

Agora, se sua estratégia depende do Book, é perda de tempo utilizar o tester e a justificativa de ser mais rápido não é suficiente. Na verdade é ilusória.

Você deve testar sua estratégia no ambiente que permita reproduzi-la. Do contrário, estará se enganando.

[ ]´s

Entendi, então tem que ser no ambiente de produção mesmo, desenvolvendo algumas funções para poder validar sem fazer de fato a negociação.


Obrigado.

Jhoni Carlos da Silva.

 
jdayanami:

Entendi, então tem que ser no ambiente de produção mesmo, desenvolvendo algumas funções para poder validar sem fazer de fato a negociação.


Obrigado.

Jhoni Carlos da Silva.

O MT5 não armazena os dados do book, apenas te permite obter o estado atual do book, em tempo real (e somente o volume consolidado por nível de preço, nenhuma outra informação além disso).

Então, pra testar um algoritmo que dependa do book, se for suficiente para a sua estratégia saber apenas o volume consolidado por nível de preço, então vc pode criar um EA no MT5 que fica coletando essa informação e gravando em arquivo.

Depois de deixar o robô lá coletando os dados por 1 ou 2 meses (acho que não precisa ser mais que isso, pois quem faz "tape Reading" geralmente só faz operações de poucos segundos ou no máximo 1 ou 2 minutos), vc já terá uma boa base de dados para backtesting. 

Mas terá que construir sua própria infraestrutura de teste, pois o Strategy Tester do MT5 não usa as informações do book.

Agora, se a sua estratégia depender de mais informações do book além do simples volume consolidado por preço que aparece na janela do DOM do MT5, tais como:

- quantas ordens existem em cada nível de preço

- qual o volume de cada ordem

- de qual corretora veio cada ordem

- há quanto tempo cada ordem está ali

- os cancelamentos de ordem que ocorreram

- etc....

então isso vai ser impossível no MT5 pq ele nem sequer coleta essa informação.

Nesse caso vc teria que alugar o sinal completo direto da bolsa (que é caro e é transmitido num protocolo e num formato que é "osso duro de roer" pra entender e pra programar o processamento), ou então alugar sinal de algumas empresas que oferecem essas informações num protocolo e num formato bem mais amigável (eu poderia te indicar uma que oferece uma interface via sockets bem amigável, com todas essas informações, mas não se pode fazer propaganda aqui).

E além de tudo isso ainda teria que montar toda a sua própria estrutura de backtesting, pois desconheço a existência de ferramenta que faça backtesting com informações do book (eu adoraria fazer ou participar do desenvolvimento de uma, mas falta-me tempo disponível).

Boa sorte!

 
Trader_Patinhas:

O MT5 não armazena os dados do book, apenas te permite obter o estado atual do book, em tempo real (e somente o volume consolidado por nível de preço, nenhuma outra informação além disso).

Então, pra testar um algoritmo que dependa do book, se for suficiente para a sua estratégia saber apenas o volume consolidado por nível de preço, então vc pode criar um EA no MT5 que fica coletando essa informação e gravando em arquivo.

Depois de deixar o robô lá coletando os dados por 1 ou 2 meses (acho que não precisa ser mais que isso, pois quem faz "tape Reading" geralmente só faz operações de poucos segundos ou no máximo 1 ou 2 minutos), vc já terá uma boa base de dados para backtesting. 

Mas terá que construir sua própria infraestrutura de teste, pois o Strategy Tester do MT5 não usa as informações do book.

Agora, se a sua estratégia depender de mais informações do book além do simples volume consolidado por preço que aparece na janela do DOM do MT5, tais como:

- quantas ordens existem em cada nível de preço

- qual o volume de cada ordem

- de qual corretora veio cada ordem

- há quanto tempo cada ordem está ali

- os cancelamentos de ordem que ocorreram

- etc....

então isso vai ser impossível no MT5 pq ele nem sequer coleta essa informação.

Nesse caso vc teria que alugar o sinal completo direto da bolsa (que é caro e é transmitido num protocolo e num formato que é "osso duro de roer" pra entender e pra programar o processamento), ou então alugar sinal de algumas empresas que oferecem essas informações num protocolo e num formato bem mais amigável (eu poderia te indicar uma que oferece uma interface via sockets bem amigável, com todas essas informações, mas não se pode fazer propaganda aqui).

E além de tudo isso ainda teria que montar toda a sua própria estrutura de backtesting, pois desconheço a existência de ferramenta que faça backtesting com informações do book (eu adoraria fazer ou participar do desenvolvimento de uma, mas falta-me tempo disponível).

Boa sorte!

Bom dia.

Excelente explicação.


Antes de conhecer o MetaTrader eu estava pensando em desenvolver um robo em outras linguagens, agora que conheço estou voltando a pensar nisso... hehe... Já cheguei a ver uma dessas empresas que oferecem essas informações uma vez, e é realmente bem caro.

Também cheguei a baixar o projeto para fazer download direto da bolsa, para entender melhor como funciona, mas nunca tentei por pra rodar, nem sei se o custo é alto ou se tem custo.


Mas de qualquer forma, obrigado.

Clareou bem o caminho a seguir.


Obrigado.

Jhoni Carlos da Silva.

 
jdayanami:

Bom dia.

Excelente explicação.


Antes de conhecer o MetaTrader eu estava pensando em desenvolver um robo em outras linguagens, agora que conheço estou voltando a pensar nisso... hehe... Já cheguei a ver uma dessas empresas que oferecem essas informações uma vez, e é realmente bem caro.

Também cheguei a baixar o projeto para fazer download direto da bolsa, para entender melhor como funciona, mas nunca tentei por pra rodar, nem sei se o custo é alto ou se tem custo.


Mas de qualquer forma, obrigado.

Clareou bem o caminho a seguir.


Obrigado.

Jhoni Carlos da Silva.

Por outro lado, difícil encontrar outra solução para desenvolvimento com documentação tao completa. Apesar das limitações, vejo no MQL5 a melhor solução para reles mortais (nosso caso).

Pode tentar o Protrader.

De qualquer forma, boa sorte.

[ ]'s

 
Joscelino Celso de Oliveira:

Por outro lado, difícil encontrar outra solução para desenvolvimento com documentação tao completa. Apesar das limitações, vejo no MQL5 a melhor solução para reles mortais (nosso caso).

Pode tentar o Protrader.

De qualquer forma, boa sorte.

[ ]'s

Então, não.

Não da pra confiar no MetaTrader para fazer qualquer tipo de análise de fluxo, mesmo uma bem simples.


O motivo? Desenvolvi toda uma EA só para montar o book de ofertas com base nos ticks (CopyTick), onde começa a copiar os ticks no início do dia, posiciona com os bids e asks, e agride com sells e buys.

Problema nº 1: Não tem tick para cancelamentos;

Problema nº 2: Não tem tick para mudança de ordens, não da pra saber se a ordem mudou de preço;

Problema nº 3: MqlTick.flags não é uma informação confiável, recebi um tick de venda (TICK_FLAG_SELL) de 1300 contratos DOLK19 (volume absurdo), apenas com as flags SELL LAST e VOLUME, sem nenhum outro tick de 1300 contratos antes ou depois, estranhei e fui verificar em outras plataformas, acontece que era um direto, e não simplesmente uma venda; Porém, outro direto veio apenas como TICK_FLAG_BUY, e outro veio com ambos, TICK_FLAG_SELL e TICK_FLAG_BUY;

Problema nº 4: BackTesting, Otimização não tem acesso ao DeepMarkter (ou seja, ao livro de ofertas). O MT5 deveria utilizar o Livro de ofertas do fechamento do último pregão como base, e atualizar conforme os ticks vão surgindo, mas os ticks são incompletos, e nem mesmo construindo isso de forma manual é possível usar.

Problema nº 5: BackTesting, Otimização e Contas DEMO completamente fora da realidade; Fiz uma EA de scalping, apenas para testar, e estava dando 93% de taxa de acerto na conta DEMO, coloquei na conta real (com a demo em paralelo), a demo acertou 8 trades seguidos, a conta real errou todos, mesmo com 1.2 ms na conta real e 35 ms na DEMO, e zerando o deviation (spread máximo da ordem), parece que a conta real tem mais delay que a demo, ou não entendo, simplesmente não funciona...


Fica a dica.: MetaTrade só serve para análise de gráfico, com indicadores para o gráfico, e mesmo assim, a otimização, o backtesting, e as contas DEMO dão resultados completamente fora da realidade.


Vou fazer mais alguns testes para ver se consigo aproveitar apenas a análise gráfica que desenvolvi de alguma forma, mas provavelmente vou estar abandonando MT5. Vou testar o Protrader conforme você mencionou Joscelino, se não der, parece que o ProfitPro tem uma DLL para o MarketData, e a partir dela pode-se desenvolver em qualquer linguagem, só que o pacote completo sai 5k por mês, mais o custo operacional.


Valeu ai pessoal, desculpa voltar nesse post, mas achei importante colocar aqui a minha experiência com este aspecto do MT5.


Abraços

Jhoni Carlos da Silva.

 
jdayanami:

Então, não.

Não da pra confiar no MetaTrader para fazer qualquer tipo de análise de fluxo, mesmo uma bem simples.


O motivo? Desenvolvi toda uma EA só para montar o book de ofertas com base nos ticks (CopyTick), onde começa a copiar os ticks no início do dia, posiciona com os bids e asks, e agride com sells e buys.

Problema nº 1: Não tem tick para cancelamentos;

Problema nº 2: Não tem tick para mudança de ordens, não da pra saber se a ordem mudou de preço;

Problema nº 3: MqlTick.flags não é uma informação confiável, recebi um tick de venda (TICK_FLAG_SELL) de 1300 contratos DOLK19 (volume absurdo), apenas com as flags SELL LAST e VOLUME, sem nenhum outro tick de 1300 contratos antes ou depois, estranhei e fui verificar em outras plataformas, acontece que era um direto, e não simplesmente uma venda; Porém, outro direto veio apenas como TICK_FLAG_BUY, e outro veio com ambos, TICK_FLAG_SELL e TICK_FLAG_BUY;

Problema nº 4: BackTesting, Otimização não tem acesso ao DeepMarkter (ou seja, ao livro de ofertas). O MT5 deveria utilizar o Livro de ofertas do fechamento do último pregão como base, e atualizar conforme os ticks vão surgindo, mas os ticks são incompletos, e nem mesmo construindo isso de forma manual é possível usar.

Problema nº 5: BackTesting, Otimização e Contas DEMO completamente fora da realidade; Fiz uma EA de scalping, apenas para testar, e estava dando 93% de taxa de acerto na conta DEMO, coloquei na conta real (com a demo em paralelo), a demo acertou 8 trades seguidos, a conta real errou todos, mesmo com 1.2 ms na conta real e 35 ms na DEMO, e zerando o deviation (spread máximo da ordem), parece que a conta real tem mais delay que a demo, ou não entendo, simplesmente não funciona...


Fica a dica.: MetaTrade só serve para análise de gráfico, com indicadores para o gráfico, e mesmo assim, a otimização, o backtesting, e as contas DEMO dão resultados completamente fora da realidade.


Vou fazer mais alguns testes para ver se consigo aproveitar apenas a análise gráfica que desenvolvi de alguma forma, mas provavelmente vou estar abandonando MT5. Vou testar o Protrader conforme você mencionou Joscelino, se não der, parece que o ProfitPro tem uma DLL para o MarketData, e a partir dela pode-se desenvolver em qualquer linguagem, só que o pacote completo sai 5k por mês, mais o custo operacional.


Valeu ai pessoal, desculpa voltar nesse post, mas achei importante colocar aqui a minha experiência com este aspecto do MT5.


Abraços

Jhoni Carlos da Silva.

Jhoni, 

Problemas 1 e 2 são nossos velhos conhecidos, era só ter perguntado. Não dá mesmo pra fazer "tape Reading" no MT5. Vc só tem acesso ao volume consolidado por nível de preço do book (só instantâneo, sem histórico) e mais nada

O problema 3 também é velho conhecido, mas geralmente não atrapalha muito não, pois os negócios diretos são raros. Dá pra confiar 95% na direção do fluxo (comprador/vendedor) indicado pelos tick flags.

O problema 4 foi o que me fez desistir de usar o Strategy Tester e montar meu próprio esquema de backtesting com base no histórico.

O problema 5 eu nem cheguei a conhecer pq desisti do Strategy Tester antes de encontra-lo.

A Cedro Tech vende um sinal que tem tudo isso por um preço melhor que esses 5K. Estava a uns R$ 700 e pouco por mês há tempos atrás. É só o sinal bruto mesmo, uma interface via socket que te notifica de todos os eventos, num formato mais amigável que o sinal original da B3. Mas não tem nenhuma infraestrutura pra robô, vc tem que programar tudo do zero. Estou com essa opção no radar para o dia em que eu for incluir informações do fluxo de ordens no meu "bacalhau preditivo", kkk!

 
jdayanami:

Então, não.

Não da pra confiar no MetaTrader para fazer qualquer tipo de análise de fluxo, mesmo uma bem simples.


O motivo? Desenvolvi toda uma EA só para montar o book de ofertas com base nos ticks (CopyTick), onde começa a copiar os ticks no início do dia, posiciona com os bids e asks, e agride com sells e buys.

Problema nº 1: Não tem tick para cancelamentos;

Problema nº 2: Não tem tick para mudança de ordens, não da pra saber se a ordem mudou de preço;

Problema nº 3: MqlTick.flags não é uma informação confiável, recebi um tick de venda (TICK_FLAG_SELL) de 1300 contratos DOLK19 (volume absurdo), apenas com as flags SELL LAST e VOLUME, sem nenhum outro tick de 1300 contratos antes ou depois, estranhei e fui verificar em outras plataformas, acontece que era um direto, e não simplesmente uma venda; Porém, outro direto veio apenas como TICK_FLAG_BUY, e outro veio com ambos, TICK_FLAG_SELL e TICK_FLAG_BUY;

Problema nº 4: BackTesting, Otimização não tem acesso ao DeepMarkter (ou seja, ao livro de ofertas). O MT5 deveria utilizar o Livro de ofertas do fechamento do último pregão como base, e atualizar conforme os ticks vão surgindo, mas os ticks são incompletos, e nem mesmo construindo isso de forma manual é possível usar.

Problema nº 5: BackTesting, Otimização e Contas DEMO completamente fora da realidade; Fiz uma EA de scalping, apenas para testar, e estava dando 93% de taxa de acerto na conta DEMO, coloquei na conta real (com a demo em paralelo), a demo acertou 8 trades seguidos, a conta real errou todos, mesmo com 1.2 ms na conta real e 35 ms na DEMO, e zerando o deviation (spread máximo da ordem), parece que a conta real tem mais delay que a demo, ou não entendo, simplesmente não funciona...


Fica a dica.: MetaTrade só serve para análise de gráfico, com indicadores para o gráfico, e mesmo assim, a otimização, o backtesting, e as contas DEMO dão resultados completamente fora da realidade.


Vou fazer mais alguns testes para ver se consigo aproveitar apenas a análise gráfica que desenvolvi de alguma forma, mas provavelmente vou estar abandonando MT5. Vou testar o Protrader conforme você mencionou Joscelino, se não der, parece que o ProfitPro tem uma DLL para o MarketData, e a partir dela pode-se desenvolver em qualquer linguagem, só que o pacote completo sai 5k por mês, mais o custo operacional.


Valeu ai pessoal, desculpa voltar nesse post, mas achei importante colocar aqui a minha experiência com este aspecto do MT5.


Abraços

Jhoni Carlos da Silva.

Excelentes observações.

O MT5 possui limitações mas arrisco afirmar que vai se deparar com problemas também nas demais plataformas (e sem documentação que se equipare, fórum e redes sociais com desenvolvedores para opinar como aqui).

O grande desafio eh, sabendo das limitações de TODAS AS PLATAFORMAS, desenvolver estrategia automatizada vencedora.

Discordo de você quando diz que o Metatrader só serve para analise gráfica. Minha estrategia automatizada eh totalmente matemática e meu EA sequer necessitaria do gráfico para rodar. Ele eh inserido no gráfico por uma questão de arquitetura.

Eh importante observar que nem tudo que você atribuiu ao MT5 eh problema do MT5. Ha limitações de hardware e também informações disponibilizadas pelas corretoras, bem como ticks que não possuem flags, etc etc.

Eu particularmente não utilizo backtest. Desenvolvo diretamente na conta real com lote minimo. 

Boa sorte em sua empreitada e se quiser continuar compartilhando conosco vai ser muito bom!

[ ]'s

 
Jhoni você fez novos testes com essa estrategia? conseguiu desenvolver um EA?
Razão: