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
Visualizações:
212
Avaliação:
(6)
Publicado:
Freelance MQL5 Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Versão JavaScript rápida da biblioteca Report para comandos de negociação no estilo MT4 implementados via MT4Orders ou Virtual.

Funciona até 10 vezes mais rápido que o Report, o tamanho do arquivo NTML é menor, pode carregar e exibir até 5,4 milhões de linhas de relatório (captura de tela abaixo).

Funcionalidade: (a mesma do Report)

  • Mostra as negociações executadas pelo MT4, MT5, seus testadores ou o testador Virtual.
  • Mostra gráficos
  • Abre o arquivo HTML com o relatório em um navegador (requer permissão para usar a DLL e o comando #define REPORT_BROWSER).

Diferenças em relação ao relatório:

  • No código paralelo do MT5, todos os dados do relatório são imediatamente enviados para o arquivo como uma matriz, sem a montagem de linhas com código HTML. Isso resulta em um grande aumento de velocidade e redução do tamanho do arquivo.

  • O cálculo das estatísticas, a criação de gráficos e a geração de código HTML com linhas de negociações são feitos no lado do navegador em código JavaScript. É criado um paginador, que mostra a página necessária.

  • Os gráficos exibem as transações em uma escala de tempo em vez de uma escala uniforme por número de transação. Assim, podemos ver que um Expert Advisor fez 1.000 negócios na semana 1 e ficou inativo por mais 52 semanas.
    Aqui está um exemplo ilustrativo com 3386 negócios durante 5 anos:
    Número_vs_Tempo
    Os mesmos negócios são colocados em ambos os gráficos.
    O gráfico superior é construído com um passo uniforme entre os negócios (como o testador da MetaQuotes mostra agora). Ele parece promissor.
    O gráfico inferior é construído em uma escala de tempo e mostra que o Expert Advisor negociou apenas algumas semanas em 5 anos. 1 pixel na horizontal = 1 semana.
    De acordo com o gráfico inferior, fica imediatamente claro que haverá 2 anos de inatividade no início, depois o Expert Advisor negociará por algumas semanas e, em seguida, 2,5 anos de inatividade novamente. Essa negociação não é tão interessante quanto a impressão do primeiro gráfico.

  • O gráfico de saldo com opções sem slippage, sem comissão, sem comissão e slippage foi substituído por um gráfico de lucro (P/L) com as mesmas opções (sem operações de saldo).

  • Foi adicionado um gráfico de saldo separado, que mostrará os depósitos/retiradas das operações de saldo. Dessa forma, você pode ver separadamente o trabalho das operações de negociação no gráfico P/L e seus valores com operações de saldo

  • Se você clicar em qualquer gráfico, será aberto um Google.charts interativo. Nele, você pode aumentar o zoom e ver as negociações em detalhes. 4 gráficos P/L com 100.000 negociações abertas por aproximadamente 10 segundos.

  • O gráfico de TurnOver é substituído por um gráfico com P/L para compras, vendas e seu valor. Dessa forma, você pode entender se sua estratégia é de alta ou de baixa. Você pode decidir desativar uma das direções de negociação se ela não for lucrativa. O gráfico do preço de fechamento do instrumento é mostrado abaixo, o que é conveniente para acompanhar como as compras geram lucro quando a taxa sobe e as vendas geram perdas, e vice-versa quando a taxa cai. Se houver vários instrumentos, seus preços serão mostrados juntos; é melhor selecionar apenas um dos instrumentos por filtro para ver somente o preço dele.

  • Adicionados gráficos de derrapagens e derrapagens cumulativas na abertura, no fechamento e em sua soma, a ideia foi tirada daqui https://www.mql5.com/ru/blogs/post/760817.

  • Reorganizei um pouco as colunas do relatório, mas há uma caixa de seleção que as reorganizará como no Report-e. Se estiver mais acostumado com isso.

  • Ao trabalhar no Virtual, você pode fazer várias chamadas para o QuickReport e gerar relatórios para cada testador virtual (se houver vários) e/ou real do MT5

Exemplos de uso:

  • simples com MT4Orders
    #include <MT4Orders.mqh>
    #define REPORT_BROWSER            // Open report in browswer automatically. Require DLL.
    //#include <Report.mqh>
    #include <MT4Orders_QuickReport.mqh>//
    
    void OnInit(){}
    
    void OnTick(){ strategy (); }
    
    void OnDeinit(const int  reason ){
       QuickReport("report", true);
    }
    
    int TimeHour     ( datetime time ){return((int)((time / 3600) % 24));}//horas atuais no dia. 3600 segundos em uma hora
    
    void strategy (){
      string Symb = _Symbol;
      MqlTick Tick;
      if (SymbolInfoTick(Symb, Tick)){    
        if(TimeHour(TimeCurrent())<23 && TimeHour(TimeCurrent())>0 ){return;} 
        OrderSend(Symb, OP_BUY,  10, Tick.ask, 0, Tick.bid, Tick.bid,  NULL, 1000);
        OrderSend(Symb, OP_SELL, 10, Tick.bid, 0, Tick.ask, Tick.ask,  NULL, 1000);
       }
    }
    
  • código de teste grande

  • simples com o Virtual
    #include <MT4Orders.mqh>
    
    #include <fxsaber\Virtual\Virtual.mqh>
    #define REPORT_BROWSER            // Open report in browswer automatically. Require DLL.
    //#include <Report.mqh>
    #include <MT4Orders_QuickReport.mqh>
    
    double OnTester() { //or OnDeinit()
       for (int v = 0 ; v <= VIRTUAL::Total(); v++){if (VIRTUAL::SelectByIndex(v)){QuickReport("report_"+(string)v, true, v);}} //mostrar relatório para cada testador
       return(AccountInfoDouble(ACCOUNT_BALANCE)); 
    }
  • descrição dos parâmetros de chamada
    void QuickReport(string file_name, bool is_open_file_in_browser=true, int virtual_number=0, bool hide_account_and_name=false, bool common_path=false, bool fileANSI=true){...}
    file_name - nome do arquivo para gravação
    is_open_file_in_browser - abre automaticamente o arquivo no navegador quando o cálculo é concluído (é necessária a permissão da DLL). Os arquivos não serão abertos automaticamente durante a otimização, pois pode haver vários milhares deles.
    virtual_number - (para trabalhar com o Virtual) número do testador virtual (-1 - será determinado automaticamente, 0 - testador MT5, >0 - testadores virtuais)
    hide_account_and_name - oculta o número e o nome da conta
    common_path - salva na pasta comum dos terminais. Para evitar que os arquivos sejam sobrescritos por outro agente durante a otimização, o número do agente (3000, 3001,...) é adicionado aos nomes dos arquivos. Ao salvar na pasta do testador (falso), eles são salvos na pasta do agente que executou os cálculos.
    fileANSI - salvar em codificação ANSI ou em UNICODE. O tamanho dos arquivos UNICODE é duas vezes maior e leva mais tempo para ser processado, portanto, se você carregar muitos dados, por exemplo, 1 GB, é mais econômico usar ANSI. O UNICODE é adicionado para compatibilidade com serviços de terceiros, se você precisar dele.


Exemplo de relatório para 5,4 milhões de transações:

( Virtual com relatório de mais de 100.000 linhas em meu computador consome toda a memória e trava, por isso criei a versão JavaScript).

Exemplo de QuickReport

Esse relatório mostrou o Firefox. O Chrome trava, pois precisa de arquivos menores.

Mais de 5,4 milhões de linhas podem ser carregadas em um arquivo, mas o navegador Firefox não consegue lidar com mais.

Ao carregar esse relatório, o navegador utilizou cerca de 6 GB de memória (processada em cerca de 1 minuto) e, em seguida, liberou-a, após o que o relatório é exibido na página: (O relatório utiliza de 5 a 6 GB de 80 a 100 mil linhas).

Uso da memória


Gráfico detalhado com zoom.

Clicar em qualquer gráfico abrirá um gráfico interativo com esse gráfico, com a capacidade de aumentar o zoom para visualização detalhada.
Há duas opções:

  1. O padrão é o Google.charts gratuito
  2. Você pode conectar o Highcharts, que, por ser um produto comercial, é mais rápido e conveniente, mas só pode ser usado gratuitamente por programadores durante o desenvolvimento; ao lançar um projeto/produto, uma licença deve ser adquirida e renovada anualmente. Leia mais aqui https://shop.highcharts.com/

Você pode selecionar Logarithmic - escala logarítmica (pode ser útil se você tiver um crescimento exponencial do saldo). Para Highcharts, você também pode selecionar Ordinal - etapa uniforme (como nos relatórios de teste do MetaQuotes). Após alterar esses itens, é necessário clicar novamente no gráfico desejado para aplicar a opção selecionada.

Exemplo do Google.chart: (zoom com a roda do mouse).


Exemplo do Highcharts: (altere a escala selecionando a área necessária com o mouse).


Ordens pendentes executadas no MT5

Para ordens que apareceram como resultado do acionamento de ordens pendentes, o campo Type (Tipo) mostra em azul escuro o tipo de ordem pendente (Buy limit, Sell limit, Buy stop ou Sell stop), o tempo entre a configuração e o acionamento da ordem em segundos e o tipo de ordem/posição ativada. Essas informações são mostradas somente para o terminal ou testador MT5; os testadores virtuais ou MT4 não fornecem essas informações.



Gráficos de lucros e perdas por hora e dia da semana.

Ao contrário do testador MQ, os lucros e as perdas são exibidos não no momento de sua ocorrência, mas no momento da entrada em uma negociação. Isso facilita a compreensão de que as entradas em uma determinada hora são, em sua maioria, não lucrativas e simplesmente desativa essa hora para entradas.
Além disso, foram criados gráficos de compras e vendas.


Se você clicar em qualquer um desses gráficos, verá tabelas com valores exatos por horas e dias. Há também caixas de seleção que podem ser usadas para desativar as horas e os dias das entradas - os gráficos e as tabelas serão reconstruídos e você poderá avaliar o resultado sem testes adicionais. É um análogo do BestInterval do Fxsaber, mas mais grosseiro (com uma etapa de 1 hora) e sem automação. O intervalo M10 foi adicionado para reduzir a etapa.

Algumas explosões de lucro por hora ou por dia nesses gráficos podem ser vistas em pequenos períodos de teste. Os gráficos acima mostram um teste de 1 mês com uma tendência de alta. Portanto, a compra dá lucro e a venda dá prejuízo. Se você aumentar o teste para um ano ou mais, quando várias tendências grandes em ambas as direções passarão, tudo ficará uniformemente manchado e geralmente não será lucrativo, portanto, é improvável que você consiga desativar algo e obter uma mudança significativa no lucro.
Aqui está o que aconteceu com a mesma estratégia com o teste de 1 ano: (você deve desligar quase tudo).

Portanto, dificilmente isso pode se tornar a base de sua estratégia.


Filtragem de ordens.

Muitos filtros foram adicionados para exibir ordens de acordo com diferentes parâmetros.


Buy, Sell, Buy limit, Sell limit, Buy stop, Sell stop, Balance - você pode remover qualquer tipo de ordem do relatório.
Symbols - mostrará toda a lista de instrumentos usados; você pode selecionar apenas os necessários.
Magic - você pode mostrar ordens apenas com o Magic especificado
Min Lot, Max Lot - você pode selecionar ordens com os lotes necessários
Negative Slippage - você pode mostrar ordens com slippage negativo separadamente para abrir ordens ou para fechar
Swap - mostrará ordens com swaps > 0
Min LengthTime - ordens com duração maior que o tempo especificado (especificado pelo número de dias, horas, minutos e segundos)
Max LengthTime - ordens com duração menor que o tempo especificado
Open Time - hora de abertura da ordem de e para as datas especificadas
Close Time - hora de fechamento da ordem de e para as datas especificadas
TP, SL - ordens que terminaram com TP ou SL acionados
Profits, Losses - ordens com lucro ou prejuízo (comissões e swaps não estão incluídos, pois podem tornar o lucro final negativo)
Rejects - ordens não executadas.

O botão Reset (Redefinir) permite redefinir os filtros para os valores padrão e mostrar todas as ordens sem filtragem.


Opções adicionais:



  1. Você pode especificar a data de início do teste avançado. Depois que ele for aplicado, serão calculadas as estatísticas do gráfico completo, do gráfico anterior à data especificada (BackTest) e do gráfico posterior (ForwardTest). Os gráficos mostrarão uma linha vertical nessa data.
  2. Ordem antiga das colunas - a ordem das colunas será reorganizada como na biblioteca de relatórios

P.S. Quanto mais comentários sobre as negociações, menor será o número de linhas a serem exibidas. Um relatório com 5,4 milhões de linhas não tinha nenhum comentário, exceto "fim do teste". Portanto, é melhor não colocá-los se o relatório tiver mais de 4 milhões de transações.

P.P.S. Funciona tanto no MT5 quanto no MT4. Agradecemos a fxsaber pela modificação para o MT4.

Opções de aprimoramento:

  • Você pode tentar descarregar o relatório em um arquivo binário e lê-lo no navegador, talvez isso funcione com um número grande de 5,4 milhões de linhas. Mas, nesse caso, será necessário selecionar manualmente o arquivo binário devido a restrições de segurança. Ou seja, não será possível abrir automaticamente o relatório imediatamente após o teste.

Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/47816

Filtro iCHO Trend CCIDualOnMA Filtro iCHO Trend CCIDualOnMA

Estratégia baseada no indicador padrão iCHO (Chaikin Oscillator, CHO) e no indicador personalizado 'CCIDualOnMA'

Painel de rastreamento de posição manual Painel de rastreamento de posição manual

Painel baseado na classe CDialog. Trabalhar com o símbolo atual. Exclusão, definição de Take Profit, definição de Breakeven em um grupo de posições

Biblioteca básica para criar perfis de volume Biblioteca básica para criar perfis de volume

Biblioteca básica para criar perfis de volume no gráfico.

Ângulo e velocidade Ângulo e velocidade

O indicador mostra o ângulo ou a velocidade média da mudança de preço.