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)
Diferenças em relação ao relatório:

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.

Exemplos de uso:
#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); } }
#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)); }
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
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).
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).

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:
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:

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:
Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/47816
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 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 no gráfico.
Ângulo e velocidade
O indicador mostra o ângulo ou a velocidade média da mudança de preço.