Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Facebook!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Bibliotecas

TesterBenchmark - biblioteca para MetaTrader 5

Visualizações:
954
Avaliação:
(23)
Publicado:
2017.11.17 12:11
\MQL5\Include\ \MQL5\Experts\
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 Chart Save Template

O script guarda as configurações atualizadas do gráfico em um modelo com o nome especificado.

Report Report

Biblioteca para o MetaTrader 4/5, que permite realizar relatórios de acordo com o histórico de trades.

MA Zigzag Trend MA Zigzag Trend

Outro indicador de tendência ZigZag baseado em pontos extremos do indicador SMA.

Four_MA_Strength Four_MA_Strength

Indicador de força e direção da tendência com base em três médias móveis.