Erro no testador de estratégias (FowardTest) - página 2

 
Adailton Silva #:

Eis aqui (  https://www.mql5.com/pt/forum/416156#comment_39299878 ) um teste que realizei detalhado demonstrando que, talvez o problema esteja nos dados que estão utilizando para testar ou a forma como estão entendendo o teste. 

Espero que resolvam o problema/dúvida de vocês e possam dar continuidade a seus projetos. 

Sucesso por aí. 

Obrigado pela ajuda, Adailton.

Infelizmente acredito que o problema não esteja na forma como estamos entendendo o teste. Se você observar as minhas considerações nesse e no tópico correlato, assim como as condiderações do autor do tópico correlato, verá que interpretamos os resultados de forma indêntica à sua interpretação. Quanto aos dados, também configuramos a divisão entre back e foward da mesma forma que você, eu ainda configurei na opção de intervalo personalizado, enquanto o autor do outro tópico,  assim como você , utilizou as opções prontas de 1/2, 1/4 e etc. 

Porém, os dados realmente podem ser o pivô desse problema (os dados, não o intervalo utilizado), só não sei dizer como, pois eu testei em ativos diversos, em timeframes diversos e em períodos de tempo diversos. 

Porém, como já disse antes, acredito que algo no código dos EAs "dispare" algum tipo de erro na simulação. Simplifiquei o código ao máximo para encontrar e tudo o que descobri foi que muitos parâmetros e com muitos passos de otimização favorecem o aparecimento do erro. Favorecem no sentido de aumentar a incidência do mesmo, fazendo com que certos resutados da otimização produzam resultados idênticos no fowardtest rodado de forma única, porém, outros acabam dando esse erro, de forma que quanto mais parâmetros e mais passos forem utilizados na simulação, mais esses erros vão atingir os resultados do fowardtest.

Mas, como eu disse, isso pode ser um efeito ligado ao "tipo" do meu EA, ou seja, algo relacionado à forma que ele opera e talvez não afeta outros EAs. Inclusive, acredito que esse seja o motivo de existirem poucos tópicos sobre esse assunto aqui no Fórum e também o motivo pelo qual poucas pessoas respoderam a esses poucos tópicos. Além do fato de que a maioria pré-supõe que existam erros triviais no código, como erros de envio de ordens, erros de stoploss ou takeprofit, erros na geração dos ticks e etc. Porém, como eu expliquei, construí o meu código de forma que todos esses problemas não ocorram (ou, pelo menos, sejam minimizados), pois as ordens são executadas uma por vez, sempre após o fechamento da anterior e todas as ordens são a mercado e executadas na abertura de cada candle.

Dito isso, faria todo sentido se houvesse disparidade entre a simulação e a operação na conta demo, ou entre a simulação e a operação em conta real, porém não vejo motivo para ocorrerem inconsistências entre duas simulações com o mesmo EA, nas mesmas condicões, com os mesmos parâmetros e no mesmo intervalo de tempo. Se a otimização fosse feita no modo OHLC ou somenta abertura e o teste único no modo tick a trick ou tick real, tudo bem, poderiam haver inconsistências, mas esse não é o caso. 

 
psScofield #:

Obrigado pela ajuda, Adailton.

Infelizmente acredito que o problema não esteja na forma como estamos entendendo o teste. Se você observar as minhas considerações nesse e no tópico correlato, assim como as condiderações do autor do tópico correlato, verá que interpretamos os resultados de forma indêntica à sua interpretação. Quanto aos dados, também configuramos a divisão entre back e foward da mesma forma que você, eu ainda configurei na opção de intervalo personalizado, enquanto o autor do outro tópico,  assim como você , utilizou as opções prontas de 1/2, 1/4 e etc. 

Porém, os dados realmente podem ser o pivô desse problema (os dados, não o intervalo utilizado), só não sei dizer como, pois eu testei em ativos diversos, em timeframes diversos e em períodos de tempo diversos. 

Porém, como já disse antes, acredito que algo no código dos EAs "dispare" algum tipo de erro na simulação. Simplifiquei o código ao máximo para encontrar e tudo o que descobri foi que muitos parâmetros e com muitos passos de otimização favorecem o aparecimento do erro. Favorecem no sentido de aumentar a incidência do mesmo, fazendo com que certos resutados da otimização produzam resultados idênticos no fowardtest rodado de forma única, porém, outros acabam dando esse erro, de forma que quanto mais parâmetros e mais passos forem utilizados na simulação, mais esses erros vão atingir os resultados do fowardtest.

Mas, como eu disse, isso pode ser um efeito ligado ao "tipo" do meu EA, ou seja, algo relacionado à forma que ele opera e talvez não afeta outros EAs. Inclusive, acredito que esse seja o motivo de existirem poucos tópicos sobre esse assunto aqui no Fórum e também o motivo pelo qual poucas pessoas respoderam a esses poucos tópicos. Além do fato de que a maioria pré-supõe que existam erros triviais no código, como erros de envio de ordens, erros de stoploss ou takeprofit, erros na geração dos ticks e etc. Porém, como eu expliquei, construí o meu código de forma que todos esses problemas não ocorram (ou, pelo menos, sejam minimizados), pois as ordens são executadas uma por vez, sempre após o fechamento da anterior e todas as ordens são a mercado e executadas na abertura de cada candle.

Dito isso, faria todo sentido se houvesse disparidade entre a simulação e a operação na conta demo, ou entre a simulação e a operação em conta real, porém não vejo motivo para ocorrerem inconsistências entre duas simulações com o mesmo EA, nas mesmas condicões, com os mesmos parâmetros e no mesmo intervalo de tempo. Se a otimização fosse feita no modo OHLC ou somenta abertura e o teste único no modo tick a trick ou tick real, tudo bem, poderiam haver inconsistências, mas esse não é o caso. 

O que vi, correlacionado, foi que ambos, você e o  @Alvaro Velloso estão utilizando os ticks do contrato cheio baixados diretamente na corretora para o momento do teste.

Evite utilizar o contrato cheio.

Sugiro portanto que utilize este tópico onde expliquei como criar um símbolo personalizado e então refaça o teste. 

https://www.mql5.com/pt/forum/388772/page2

Se possível, da um retorno.

Backtest - Por que são apresentados resultados diferentes para o mesmo ativo (WING22) nas contas DEMO e Real ?
Backtest - Por que são apresentados resultados diferentes para o mesmo ativo (WING22) nas contas DEMO e Real ?
  • 2022.02.13
  • www.mql5.com
Testei o EA, mês a mês, de 2017 pra cá, usando a opção Cada Tick e os resultados se mostraram promissores, mas ao colocar em conta real surgiram al...
 
Adailton Silva #:

O que vi, correlacionado, foi que ambos, você e o  @Alvaro Velloso estão utilizando os ticks do contrato cheio baixados diretamente na corretora para o momento do teste.

Evite utilizar o contrato cheio.

Sugiro portanto que utilize este tópico onde expliquei como criar um símbolo personalizado e então refaça o teste. 

https://www.mql5.com/pt/forum/388772/page2

Se possível, da um retorno.

Desculpe, mas não sei se entendi completamente seu ponto, mas vou tentar responder, me desculpe se não tiver entendido corretamente.

Na verdade eu não utilizei os ticks, meu EA utiliza somente os preços de abertura dos candles. Já enfrentei inúmeros problemas por tentar utilizar a simulação de ticks do metatrader e nem os tais "ticks reais" são confiáveis. Eu preferi utilizar somente os preços de abertura justamente para isolar meu EA desse tipo de problema. Note que isso ocorreu em diversos ativos e em várias corretoras, incluindo corretoras brasileiras e corretoras de Forex. 

Baseado em todos os testes que fiz, incluindo muito do que me foi sugerido aqui no fórum e também em conversas que tive com alguns membros aqui do fórum, acredito que o problema seja algo relacionado ao EA. Acredito que algum tipo de "operação" realizada no código que implementa a lógica do EA está provocando o erro no fowardtest. Na verdade essa dedução é bem lógica, pois se o EA é utilizado em diversos papeis, em intervalos de tempo distintos e somente nos preços de abertura (o que anula quaisquer eventuais erros causados pela simulação de ticks) o que sobra é o único fator comum a todos os testes, o próprio EA. 

Provavelmente a única forma de econtrar a solução seria analizando o código do meu EA e o código do  @Alvaro Velloso.

No meu caso, utilizo o GA do metatrader para otimizar (tenha em mente que o GA nada mais é do que um otimizador bioinspirado) certos algoritmos de ML e também as estratégias utilizadas com base na resposta desses algoritmos, é algo razoavelmente complexo e na verdade realizar isso diretamente no metatrader nem seria o ideal, mas deveria funcionar e não digo funcionar no sentido de ser LUCRATIVO, ele poderia não encontrar nenhuma solução viável, ou seja, que atenda meus critérios de otimização tanto no backtest quanto no fowardtest. Tanto que o fiz apenas para validar uma idéia antes de partir para uma codificação mais "pesada", de forma que se o otimizador do metatrader encontrasse soluções viáveis valeria a pena me dedicar a construção de um otimizador voltado para essa única finalidade que poderia contar com muito mais recursos que o do metatrader pois seria para um uso específico.

Lembrando que tomei o cuidado de só utilizar como inputs os preços de OHLC dos candles e, em nenhuma parte do código qualquer cálculo utiliza algo que não sejam os preços OHLC e nem nenhuma operação é realizada em outro lugar que não seja na abertura dos candles. 

Adailton Silva
Adailton Silva
  • 2022.05.02
  • www.mql5.com
Perfil do Trader
 
psScofield #:

Desculpe, mas não sei se entendi completamente seu ponto, mas vou tentar responder, me desculpe se não tiver entendido corretamente.

Na verdade eu não utilizei os ticks, meu EA utiliza somente os preços de abertura dos candles. Já enfrentei inúmeros problemas por tentar utilizar a simulação de ticks do metatrader e nem os tais "ticks reais" são confiáveis. Eu preferi utilizar somente os preços de abertura justamente para isolar meu EA desse tipo de problema. Note que isso ocorreu em diversos ativos e em várias corretoras, incluindo corretoras brasileiras e corretoras de Forex. 

Baseado em todos os testes que fiz, incluindo muito do que me foi sugerido aqui no fórum e também em conversas que tive com alguns membros aqui do fórum, acredito que o problema seja algo relacionado ao EA. Acredito que algum tipo de "operação" realizada no código que implementa a lógica do EA está provocando o erro no fowardtest. Na verdade essa dedução é bem lógica, pois se o EA é utilizado em diversos papeis, em intervalos de tempo distintos e somente nos preços de abertura (o que anula quaisquer eventuais erros causados pela simulação de ticks) o que sobra é o único fator comum a todos os testes, o próprio EA. 

Provavelmente a única forma de econtrar a solução seria analizando o código do meu EA e o código do  @Alvaro Velloso.

No meu caso, utilizo o GA do metatrader para otimizar (tenha em mente que o GA nada mais é do que um otimizador bioinspirado) certos algoritmos de ML e também as estratégias utilizadas com base na resposta desses algoritmos, é algo razoavelmente complexo e na verdade realizar isso diretamente no metatrader nem seria o ideal, mas deveria funcionar e não digo funcionar no sentido de ser LUCRATIVO, ele poderia não encontrar nenhuma solução viável, ou seja, que atenda meus critérios de otimização tanto no backtest quanto no fowardtest. Tanto que o fiz apenas para validar uma idéia antes de partir para uma codificação mais "pesada", de forma que se o otimizador do metatrader encontrasse soluções viáveis valeria a pena me dedicar a construção de um otimizador voltado para essa única finalidade que poderia contar com muito mais recursos que o do metatrader pois seria para um uso específico.

Lembrando que tomei o cuidado de só utilizar como inputs os preços de OHLC dos candles e, em nenhuma parte do código qualquer cálculo utiliza algo que não sejam os preços OHLC e nem nenhuma operação é realizada em outro lugar que não seja na abertura dos candles. 

Esta desculpado, sem problema mas, de fato você não entendeu e está ainda sem entender algumas coisas básicas pois, sempre, sempre nobre, você utilizará ticks. 

Se demonstra tão convicto que parece sequer ter realizado a sugestão que dei.

Sua intenção é que a EA realize teste em vários papéis, contudo, você também não entendeu isso, pois ao invés de utilizar a opção que realiza o teste nos papéis observáveis na janela de observação de mercado você realizou no WIN$N.

Sabe o que este ativo significa?

Tive muitos, muitos problemas mesmo até conseguir entender certas coisas dentro do mercado e dentro das possibilidades claras que o MT disponibiliza mas, com o passar do tempo fui chegando a conclusão que, 99% das vezes foi erro de interpretação minha de como determinada função ou critério estava sendo lido. Isso porém não me levou a desistir pois isso aqui é minha vida hoje em dia, logo, desistir não era uma opção. 

Tento elucidar portanto àqueles que tem dificuldades que já enfrentei, como os demais que respondem as perguntas aqui no fórum pois reconheço e, acredito que eles também reconhecem, claramente a dor, angústia e tempo "perdido" que é buscar solução mas, uma coisa eu sempre fiz, segui as instruções daqueles que me ofereceram ajuda mesmo estando convicto de que estava certo.

Então, encerro minhas tentativas com relação a este assunto.

Já foi provado >>> aqui <<< que sim, o teste funciona.

Quanto a sua predisposição de vencer ou não este obstáculo, eu não tenho pretensão alguma de interferir, pois o livre-arbítrio é dado a todos e cada um faz com ele o que bem entende mas, quanto àqueles que desejam viver este "sonho", acredito que tenha ajudado com as soluções que aqui passei.

Teste Para Frente não funciona
Teste Para Frente não funciona
  • 2022.05.04
  • www.mql5.com
Olá, Há alguns anos que o teste para frente parou de funcionar adequadamente...
 
Adailton Silva #:

Eis aqui (  https://www.mql5.com/pt/forum/416156#comment_39299878 ) um teste que realizei detalhado demonstrando que, talvez o problema esteja nos dados que estão utilizando para testar ou a forma como estão entendendo o teste. 

Espero que resolvam o problema/dúvida de vocês e possam dar continuidade a seus projetos. 

Sucesso por aí. 

Valeu Adailton! O teste é esse mesmo, mas o problema só acontece com amostras maiores, como acabei de postar. Por exemplo, 6 meses, WDO, 20 minutos, 1200 trades...

Abraços e sucesso também !