Análise dos resultados dos testes e otimização no testador de estratégia MetaTrader 5 - página 5

 
Anatoli Kazharski:

A mesma coisa que está sendo feita agora. Carregue os símbolos durante o processo de teste.

Ou imediatamente antes do início do teste, defina e anexe aos símbolos selecionados para o teste na lista, se tal lista existir. Alternativamente, se for determinado que os símbolos que estão no cache não são mais necessários, então não os utilize no teste.

Não posso ter uma resposta definitiva em nenhum caso, mas apenas no nível das suposições e sugestões de opções.

Ok.

O especialista não negocia. Mas como parece verificar a possibilidade de entrar no mercado, um par a mais é carregado adicionalmente ao principal para o cálculo das exigências de margem. Os dados em dois pares são armazenados em cache para que não haja perda de tempo para desempacotar e preparar os dados durante o próximo teste.

O Expert Advisor começa a negociar. O segundo par que falta é carregado para calcular o lucro. Estes dados são armazenados novamente em cache, para que não se perca tempo na descompressão e preparação dos dados durante o próximo teste.

Pessoalmente, você não gosta de perder tempo com a aplicação "desnecessária" de carrapatos na história. Todos os outros não gostam muito de perder muito mais tempo na reunificação e na preparação dos dados.

OK, você responde. Por que não, enquanto não houver solicitação, aplicar carrapatos de ferramentas "supérfluas"? "Boa pergunta" (ts) E neste momento, o momento do pedido, você tem que construir a história, (e além disso ter carrapatos, porque alguém pode pedi-los também). A perda de tempo será ainda maior do que se construíssemos gradualmente a história (como a estamos construindo agora).

Não há garantia de que um especialista que usa uma determinada história não use essa história em outros passes. 99% de chance de que a história nos passes subseqüentes seja a mesma que a usada nos passes anteriores

 
Eu concordo com Slava - o exemplo é esférico.
 
Slava:

Ok.

O Expert Advisor não negocia. Mas devido ao fato de que parece verificar a possibilidade de entrar no mercado, mais um par é carregado adicionalmente ao par principal para o cálculo das exigências de margem. Os dados em dois pares são armazenados em cache para que não haja perda de tempo para desempacotar e preparar os dados durante o próximo teste.

O Expert Advisor começa a negociar. O segundo par que falta é carregado para calcular o lucro. Estes dados são armazenados novamente em cache, para que não se perca tempo na descompressão e preparação dos dados durante o próximo teste.

Pessoalmente, você não gosta de perder tempo com a aplicação "desnecessária" de carrapatos na história. Outros não gostarão muito de perder muito mais tempo na re-extração e na preparação dos dados.

OK, você responde. Por que não, enquanto não houver solicitação, aplicar carrapatos de ferramentas "supérfluas"? "Boa pergunta" (ts) E neste momento, o momento do pedido, você tem que construir a história, (e além disso ter carrapatos, porque alguém pode pedi-los também). A perda de tempo será ainda maior do que se construíssemos gradualmente a história (como a estamos construindo agora).

Você não pode prever com certeza que o Expert Advisor usando algum histórico não usará o mesmo histórico em outros passes. 99% de chance de que o histórico utilizado nos testes subseqüentes seja o mesmo que o utilizado nos testes anteriores

Eu realmente não insisto. Você poderia ter começado imediatamente com este esclarecimento. Se você sabe com certeza que sua opção é a melhor, então você pode economizar tempo sem desperdiçá-lo em discussões. Mas é necessário um esclarecimento, se me permitem, pois não tenho certeza de ter sido compreendido.

Todo este esclarecimento sobre o processo de otimização?

E se se tratar apenas do processo de teste único? Por que carrapatos de GBPUSD e AUDUSD de testes anteriores quando apenas EURUSD está sendo testado?

Eu simplesmente não vejo em que caso podemos precisar de carrapatos de outros símbolos (GBPUSD e AUDUSD), quando apenas um símbolo (EURUSD) é necessário. Precisa de alguns exemplos e números específicos.

E se eu já tiver testado 20 símbolos de cada vez? Por que eu preciso de carrapatos de todos estes símbolos se eu só preciso testar um? Quanto mais caracteres forem usados no teste único anterior, mais tempo levará para testar em apenas um. Afinal, posso mudar para testes de caracteres de um grupo de caracteres completamente diferente. E eu não preciso dos dados do grupo de caracteres anterior neste momento.

E de que tipo de tempo estamos falando (desempacotar/preparar)? Quanto tempo leva para desempacotar e preparar os dados? E quanto tempo aumenta para um único teste após um teste com múltiplos símbolos?

Vou fazer os testes agora e mostrar os resultados. Preciso de esclarecimentos a respeito de um exemplo específico.

 
Anatoli Kazharski:
Falta a caixa de seleção "Reset caches".
 

1 símbolo: EURUSD

2018.01.29 19:30:33.875 Core 1  EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0:00:00.078. Test passed in 0:00:27.266 (including ticks preprocessing 0:00:01.282).
2018.01.29 19:30:33.875 Core 1  EURUSD,M5: total time from login to stop testing 0:00:27.344 (including 0:00:00.078 for history data synchronization)
2018.01.29 19:30:33.875 Core 1  837 Mb memory used including 8 Mb of history data, 512 Mb of tick data

//---

5 símbolos: EURUSD,GBPUSD,USDJPY,AUDUSD,USDCAD

2018.01.29 19:59:39.750 Core 1  EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0:00:00.078. Test passed in 0:11:52.156.
2018.01.29 19:59:39.750 Core 1  EURUSD,M5: total time from login to stop testing 0:11:52.234 (including 0:00:00.078 for history data synchronization)
2018.01.29 19:59:39.750 Core 1  130637614 total ticks for all symbols
2018.01.29 19:59:39.750 Core 1  AUDUSD: passed to tester 20717720 ticks
2018.01.29 19:59:39.750 Core 1  EURUSD: passed to tester 26169180 ticks
2018.01.29 19:59:39.750 Core 1  GBPUSD: passed to tester 27742039 ticks
2018.01.29 19:59:39.750 Core 1  USDCAD: passed to tester 23409978 ticks
2018.01.29 19:59:39.750 Core 1  USDJPY: passed to tester 32598697 ticks
2018.01.29 19:59:39.750 Core 1  1574 Mb memory used including 44 Mb of history data, 1088 Mb of cached tick data (total memory for tick data 2495 Mb)

//---

Agora precisamos testar novamente em um único símbolo.

1 símbolo: EURUSD

2018.01.29 20:04:25.737 Core 1  EURUSD,M5: 26169180 ticks, 74266 bars generated. Environment synchronized in 0:00:00.078. Test passed in 0:01:34.203.
2018.01.29 20:04:25.737 Core 1  EURUSD,M5: total time from login to stop testing 0:01:34.281 (including 0:00:00.078 for history data synchronization)
2018.01.29 20:04:25.737 Core 1  130637614 total ticks for all symbols
2018.01.29 20:04:25.737 Core 1  AUDUSD: passed to tester 20717720 ticks
2018.01.29 20:04:25.737 Core 1  EURUSD: passed to tester 26169180 ticks
2018.01.29 20:04:25.737 Core 1  GBPUSD: passed to tester 27742039 ticks
2018.01.29 20:04:25.737 Core 1  USDCAD: passed to tester 23409978 ticks
2018.01.29 20:04:25.737 Core 1  USDJPY: passed to tester 32598697 ticks
2018.01.29 20:04:25.737 Core 1  1288 Mb memory used including 44 Mb of history data, 1024 Mb of cached tick data (total memory for tick data 2495 Mb)

//---

Neste caso, por que precisamos de carrapatos destes símbolos? Devido a esta carga extra, o tempo de teste em um símbolo aumentou mais de 3 vezes. O intervalo de tempo é de um ano. E se eu precisasse fazer um teste em 5 anos?

 
fxsaber:
Falta a caixa de seleção "Reset caches".
Pode ser possível fazer sem a caixa de seleção. Só precisa ser encontrada.
 
fxsaber:
Falta a caixa de seleção "Reset caches".

Tivemos um carrapato (semelhante) em quatro. Nós o removemos. Porque houve um mal-entendido por parte da maioria dos usuários e um monte de perguntas.

 
Slava:

Tivemos um carrapato (semelhante) em quatro. Nós o removemos. Como houve um mal-entendido entre a maioria dos usuários e muitas perguntas.

Há sempre terminal.ini:)
 

Três posts serão publicados em seguida:

  1. Quanto tempo dura um teste de EA no testador de estratégia?
  2. Quanto tempo é necessário para otimizar os parâmetros em um computador?
  3. Quanto tempo é necessário para otimizar os parâmetros na nuvem?

Usarei meu próprio Expert Advisor para os testes. Você pode realizar a mesma série de testes e apresentar seus resultados. No meu caso, recebo várias dezenas de milhares de negócios durante um ano.


1. Quanto tempo dura um teste de um Expert Advisor no testador de estratégia?

Tomemos como exemplo os resultados do teste na modalidadePreço Aberto apenas. PrazoM5(dados de cinco minutos). Conta tipoHedge. Prazo um ano(2017.01.01.01-2018.01.01).

Símbolo: EURUSD

EURUSD,M5: 281877 ticks, 74300 bars generated. Test passed in 0:00:01.453.
282883 total ticks for all symbols
EURUSD: passed to tester 282883 ticks
466 Mb memory used including 8 Mb of history data, 64 Mb of tick data

De acordo com os resultados do teste acima, podemos ver que o teste em um símbolo dura1-1,5 segundos por um período de um ano.

Agora vamos tentar testar um par de moedas sem moeda de conta. Por exemplo, se sua conta está em USD, então para o teste vamos pegar um símbolo que não tem USD. Por exemplo, o EURCHF. A razão é que para cálculos corretos das exigências de margem e lucros neste caso o teste usará os símbolos EURUSD e USDCHF, o que, por sua vez, aumenta o tempo de teste.

Símbolo: EURCHF

EURCHF,M5: 281063 ticks, 74273 bars generated. Test passed in 0:00:01.860.
846826 total ticks for all symbols
EURCHF: passed to tester 282468 ticks
EURUSD: passed to tester 282883 ticks
USDCHF: passed to tester 281475 ticks
467 Mb memory used including 8 Mb of history data, 64 Mb of tick data

Como podemos ver, o teste para taxas cruzadas será aproximadamente o dobro do tempo. Neste caso, o teste levou de1,5 a 2 segundos. Agora vamos tentar testá-lo em vários símbolos.

Símbolos: EURUSD,GBPUSD,USDJPY

EURUSD,M5: 282881 ticks, 74300 bars generated. Environment synchronized in 0:00:00.031. Test passed in 0:00:07.172.
EURUSD,M5: total time from login to stop testing 0:00:07.203 (including 0:00:00.031 for history data synchronization)
853054 total ticks for all symbols
EURUSD: passed to tester 282883 ticks
GBPUSD: passed to tester 285067 ticks
USDJPY: passed to tester 285104 ticks
628 Mb memory used including 26 Mb of history data, 64 Mb of tick data

Símbolos: EURCHF,AUDCAD,AUDNZD

EURCHF,M5: 282465 ticks, 74273 bars generated. Environment synchronized in 0:00:00.031. Test passed in 0:00:12.109.
EURCHF,M5: total time from login to stop testing 0:00:12.140 (including 0:00:00.031 for history data synchronization)
2264405 total ticks for all symbols
AUDCAD: passed to tester 284995 ticks
AUDNZD: passed to tester 285398 ticks
AUDUSD: passed to tester 282069 ticks
EURCHF: passed to tester 282468 ticks
EURUSD: passed to tester 282883 ticks
NZDUSD: passed to tester 282153 ticks
USDCAD: passed to tester 282964 ticks
USDCHF: passed to tester 281475 ticks
854 Mb memory used including 26 Mb of history data, 192 Mb of tick data

Ao testar vários símbolos, a velocidade de teste diminui. Infelizmente, não é possível fazer isso de maneira diferente agora, sem perder a precisão dos testes. Mas, como mencionado anteriormente, nas próximas atualizações, os desenvolvedores do terminal irão expandir as capacidades da MQL5, adicionando a capacidade de realizar testes de múltiplos símbolos muito mais rapidamente.

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 

2. Quanto tempo leva para otimizar os parâmetros em meu computador?

Como exemplo, vamos tentar otimizar os parâmetros nos dados do corretorda Alpari em diferentes símbolos no modoPreço Aberto apenas. PrazoM5(dados de cinco minutos). Tipo de conta dehedge. Prazo um ano(2017.01.01.01-2018.01.01).

Símbolo: EURUSD

result cache used 7953 times
genetic optimization finished on pass 15616 (of 504330836375520000)
optimization done in 28 minutes 56 seconds
local 7663 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Símbolo: EURCHF

result cache used 2507 times
genetic optimization finished on pass 8704 (of 504330836375520000)
optimization done in 32 minutes 50 seconds
local 6197 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Símbolos: EURUSD,GBPUSD,USDJPY

result cache used 9892 times
genetic optimization finished on pass 18176 (of 504330836375520000)
optimization done in 2 hours 15 minutes 03 seconds
local 8284 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Símbolos: EURCHF,AUDCAD,AUDNZD

result cache used 7281 times
genetic optimization finished on pass 13312 (of 504330836375520000)
optimization done in 3 hours 13 minutes 37 seconds
local 6031 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

Num futuro próximo, o terminalMetaTrader 5 será atualizado, e a velocidade dos testes e otimização será muito mais rápida. Talvez então seja possível conduzir a otimização mesmo no modoAll ticks. Além disso, o uso do serviçoMQL5 Cloud Network se tornará mais lucrativo, pois a velocidade da otimização aumentará.

Распределенные вычисления в сети MQL5 Cloud Network
Распределенные вычисления в сети MQL5 Cloud Network
  • cloud.mql5.com
Большую часть времени современные компьютеры простаивают и не используют всех возможностей процессора. Мы предлагаем задействовать их с пользой. Вы можете сдавать мощности вашего компьютера другим участникам нашей сети для выполнения разнообразных...
Razão: