Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 984
- Avaliação:
- Publicado:
- 2017.11.17 12:11
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Ao escrever diferentes versões de um mesmo código, você precisará medir o impacto no desempenho geral do Expert Advisor no testador. Isso permite que você compreenda o quão ótimo é o código, em comparação com outros, e fornece pré-requisitos para uma otimização mais rápida de EAs. Essa abordagem nos permite identificar o "gargalo" na performance do robô.
O MetaTrader 5 fornece uma excelente função para definir o perfil de Expert Advisors em dados históricos. Mas tem algumas desvantagens: é lento (no modo visual) e o resultado final é apresentado em unidades relativas, ou seja, não é possível comparar o desempenho em termos absolutos.
Além disso, no MetaTrader 5, o EA é executado em um agente local mesmo durante uma única execução sem visualização. Às vezes, uma grande parte do tempo é tomada para sincronizar o terminal com o agente local correspondente durante o teste. Portanto, os dados do tempo das seguintes linhas
Core 1 EURUSD,M1: 3387955 ticks, 52608 bars generated. Environment synchronized in 0:00:01.389. Test passed in 0:00:09.422 (including ticks preprocessing 0:00:00.187). Core 1 EURUSD,M1: total time from login to stop testing 0:00:10.811 (including 0:00:01.389 for history data synchronization)
são uma representação fraca do desempenho do EA/testador na rede, e podem diferir muito em diferentes corridas.
O tempo de operação do Testador de Estratégias é o tempo do primeiro evento Tick (a primeira execução do OnTick) até o último tick no intervalo testado. Imediatamente após este intervalo, o testador chama o OnTester (OnDeinit vem depois).
O tempo de execução do testador
A biblioteca permite adicionar ao código do EA uma linha
#include <TesterBenchmark.mqh>
e obter em logs os dados de desempenho do testador.
Core 1 2017.07.21 23:59:59 Interval = 8.842 s., Count = 3387955, 383166.1 unit/sec Core 1 EURUSD,M1: 3387955 ticks, 52608 bars generated. Environment synchronized in 0:00:01.389. Test passed in 0:00:09.422 (including ticks preprocessing 0:00:00.187). Core 1 EURUSD,M1: total time from login to stop testing 0:00:10.811 (including 0:00:01.389 for history data synchronization)
Além disso, se no testador você mudar de uma única execução para um modo de otimização (não há necessidade de especificar intervalos de otimização para o MetaTrader 5), a biblioteca executará o EA pelo número especificado de vezes e gerará as estatísticas de desempenho do testador, com base no qual você pode entender o desempenho puro do testador.
------ OnTesterInit i = 0 Pass = 0 OnTester = 8.687 s.: Count = 3387955, 390002.9 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 i = 1 Pass = 1 OnTester = 8.702 s.: Count = 3387955, 389330.6 unit/sec, Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 iMin = 0 Results[iMin] = 8.687s. iMax = 1 Results[iMax] = 8.702s. Amount = 2 Mean = 8.694 s. - 83.89% OnTesterDeinit ------ Interval = 20.729 s., Count = 0, 0.0 unit/sec
Neste caso, é claro que houve duas partidas no mesmo Agente local. O tempo de cálculo mínimo, máximo e médio é mostrado. O tempo total de otimização (Interval) também se pode ver. As características percentuais (83,89%) mostram quanto tempo toma o otimizador na média para a operação do testador em uma corrida (o tempo necessário para sincronização com Agentes é levado em consideração).
Profiling OnTick
Adicionando mais uma linha
#define PROFILER_OnTick // Mede o tempo líquido de todas as execuções OnTick, pode retardar um pouco a funcionamento global #include <TesterBenchmark.mqh>
Você pode ver o tempo gasto na execução do OnTick, sem ter em conta o tempo necessário para simular o ambiente de negociação, o desempenho, etc.
------ OnTesterInit i = 0 Pass = 0 OnTester = 9.540 s.: OnTick Profiler: Count = 3387955, Interval = 8.079 s., 419359.4 unit/sec , Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 i = 1 Pass = 1 OnTester = 9.471 s.: OnTick Profiler: Count = 3387955, Interval = 8.029 s., 421956.9 unit/sec , Agent = C:\Program Files\Alpari Limited MT5\Tester\Agent-127.0.0.1-3000 iMin = 1 Results[iMin] = 9.471s. iMax = 0 Results[iMax] = 9.540s. Amount = 2 Mean = 9.505 s. - 98.86% OnTesterDeinit ------ Interval = 19.231 s., Count = 0, 0.0 unit/sec
Exemplo
A biblioteca é fornecida com um exemplo EA (MQL4/5) com um cabeçalho, o que ajuda a entender uma das aplicações práticas da biblioteca.
#include <TesterBenchmark.mqh> // Se ambas as linhas incluídas abaixo forem comentadas, a lógica comercial será escrita em MQL5 - API de negociação // Caso contrário, uma linha descomentada é o wrapper de API. // TesterBench mostra o desempenho de cada uma dos três API. // #include <MT4Orders.mqh> // https://www.mql5.com/pt/code/16006 // #include <Trade\Trade.mqh>
Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/18804
![Chart Save Template](https://c.mql5.com/i/code/script.png)
O script guarda as configurações atualizadas do gráfico em um modelo com o nome especificado.
![Report](https://c.mql5.com/i/code/library.png)
Biblioteca para o MetaTrader 4/5, que permite realizar relatórios de acordo com o histórico de trades.
![MA Zigzag Trend](https://c.mql5.com/i/code/indicator.png)
Outro indicador de tendência ZigZag baseado em pontos extremos do indicador SMA.
![Four_MA_Strength](https://c.mql5.com/i/code/indicator.png)
Indicador de força e direção da tendência com base em três médias móveis.