Bibliotecas: Report - página 13

 
fxsaber #:
Estou usando o b4070 por enquanto.

Ele compila no 4067. Por favor, diga-me, os valores ausentes na coluna Slippage significam slippage zero (tanto para entrada quanto para saída)?

Arquivos anexados:
 
leonerd #:

Você pode me dizer se os valores ausentes na coluna Slippage significam zero slippage (tanto para entrada quanto para saída)?

Para ordens de mercado, a derrapagem pode ser determinada apenas pela análise do histórico de ticks. Isso ainda não foi implementado. Os diferimentos e o SL/TP fornecem informações sobre a derrapagem de uma só vez, enquanto o mercado não.

 
fxsaber #:
Estou usando o b4070 por enquanto.

Eles escrevem que você precisa atualizar para o 4075. Tenho o 4076 e ele não compila tão bem. Erros como "mismatched #ifdef/#endif pair".


 
leonerd #:

Eles dizem que você precisa atualizar para o 4075. Eu tenho o 4076 e ele não compila tão bem. Erros como "mismatched #ifdef/#endif pair".

 
Tive que fazer testes com um grande número de transações. Se fossem mais de 50.000, o testador consumia gigabytes de memória ao criar o arquivo de relatório, e o navegador fazia o mesmo. Além disso, é extremamente difícil visualizar esse tipo de arquivo - redraw constante e congelamento. E, com cerca de 80 mil linhas, a memória se esgotou completamente.
Para evitar tudo isso, adicionei este código, que, por padrão, exibe as primeiras e as últimas 1.000 linhas no arquivo. Normalmente, ao olhar linha por linha, não havia necessidade de verificar mais. Se realmente precisar, você pode alterar a saída para todas as linhas por entrada.
.
enum showType {Show_1000_First_and_Last_Deals, Show_All_Deals };
sinput showType Report_Print_First_Last_1000 = 0; // Imprimir todas as linhas ou parcialmente, para fins de velocidade

....
// no loop de pesquisa de string, a string foi alterada (~2130)
          StrSum += "<tr " + ((bool)(Count & 1) ? "" : "bgcolor=#E0E0E0 ") +
                 ((OrderType() >= OP_BALANCE) ? "style=\"color:blue\" ": "") + "align=right>" + REPORT::OrderToString(Count, Filter) + "</tr>\n";

// nas linhas

if( Report_Print_First_Last_1000 == Show_All_Deals) {
          StrSum += "<tr " + ((bool)(Count & 1) ? "" : "bgcolor=#E0E0E0 ") +
                 ((OrderType() >= OP_BALANCE) ? "style=\"color:blue\" ": "") + "align=right>" + REPORT::OrderToString(Count, Filter) + "</tr>\n";
}else{//Show_1000_First_and_Last_Deals
   if(i<1000 || i > Total-1001){
          StrSum += "<tr " + ((bool)(Count & 1) ? "" : "bgcolor=#E0E0E0 ") +
                 ((OrderType() >= OP_BALANCE) ? "style=\"color:blue\" ": "") + "align=right>" + REPORT::OrderToString(Count, Filter) + "</tr>\n";
   }else{REPORT::OrderToString(Count, Filter);}// sem impressão, para calcular o saldo
}
Isso pode ser útil para outros usuários.
 
Forester #:
Tive que fazer testes com um grande número de transações. Se fossem mais de 50.000, o testador consumia gigabytes de memória ao criar o arquivo de relatório, e o navegador fazia o mesmo. Além disso, é extremamente difícil visualizar esse tipo de arquivo - redraw constante e congelamento. E, com cerca de 80 mil linhas, a memória se esgotou completamente.
Para evitar tudo isso, adicionei este código, que, por padrão, exibe as primeiras e as últimas 1.000 linhas no arquivo. Normalmente, ao olhar linha por linha, não havia necessidade de verificar mais. Se você realmente precisar, poderá alterar a saída para todas as linhas por entrada.
Pode ser útil para outros usuários.

Seria um spoiler para o navegador. Para relatórios grandes, isso ajuda.

Fórum sobre negociação, sistemas de negociação automatizados e teste de estratégias de negociação.

Erros, bugs, perguntas

fxsaber, 2023.10.18 15:00

Classificação dos navegadores mais rápidos ao abrir grandes tabelas html - steutments. Resultado resumido para uma tabela com 35 mil linhas.

Navegador DuraçãoTempo (seg)
MyPal 24
Basilisk 35
PaleMoon 50
K-Meleon 52
Tório 55

Minha escolha inequívoca é o MyPal.


 
Forester #:
Tive que fazer testes com um grande número de transações. Se fossem mais de 50.000, o testador consumia gigabytes de memória ao criar o arquivo de relatório e, em seguida, o navegador fazia o mesmo. Além disso, é extremamente difícil visualizar esse tipo de arquivo - redraw constante e congelamento. E, com cerca de 80 mil linhas, a memória se esgotou completamente.
Para evitar tudo isso, adicionei este código, que, por padrão, exibe as primeiras e as últimas 1.000 linhas no arquivo. Normalmente, ao olhar linha por linha, não havia necessidade de verificar mais. Se realmente precisar, você pode alterar a saída para todas as linhas por entrada.
Pode ser útil para outros usuários.

Eu gostaria de ver esse arquivo html (com freios devido a 50000 entradas) - certamente ele pode ser otimizado.

Quanto ao testador, você provavelmente também pode criar um perfil do mql5 e descobrir se há algum gargalo de memória.

 
Stanislav Korotky #:

Eu gostaria de ver esse arquivo html (com freios devido a 50000 entradas) - certamente ele pode ser otimizado.

Quanto ao testador, você provavelmente também pode traçar o perfil do mql5 e descobrir se há algum gargalo de memória.

https://www.mql5.com/ru/blogs/post/755500

OnTickMulti - с добавленными пересчетом прибыли в валюту депозита, свопами, комисссией в % за лот.
OnTickMulti - с добавленными пересчетом прибыли в валюту депозита, свопами, комисссией в % за лот.
  • 2023.12.25
  • www.mql5.com
Текущий вариант OnTickMulti https://www.mql5.com/ru/code/47647 считает прибыль в валюте каждого символа или можно получить в пипсах. Но на общий баланс они влияют в другой пропорции, согласно текущему
 
Decidi otimizar um pouco o código do Report-a. Espero que os freios sejam menores.

Principal:

Em vez de colocar align=right e bgcolor=#E0E0E0 a cada duas linhas, criei um estilo que faz isso sem nenhum atributo no código HTML

.at {text-align:right;}
.at tr:nth-child(odd) {background: #e0e0e0 !important;}

Dividi a tabela em três: as duas primeiras linhas com informações adicionais, a tabela principal com as ofertas e a última tabela com as estatísticas de teste. Se essas tabelas forem coladas, haverá algumas uniões de colunas como colspan=6, colspan=14, etc. Isso é mais difícil para o navegador renderizar. Fiz três tabelas simples sem uniões.

Adicional: (não deve aumentar muito a velocidade)
Às vezes, há uma cor de destaque style="colour:#00A000", eu a substituí por uma class="sl" mais curta - não há diferença, apenas o código do arquivo final será mais curto. Destaque SL/TP com cor em negrito para maior visibilidade.

E adicionei estilos para as 3 primeiras e últimas linhas.

Também nas colunas Resumo e Média, adicionei uma quebra de linha para os valores entre colchetes. Às vezes, eles são longos. Depois disso, a tabela ficou mais compacta.

A tabela com ofertas foi definida como class="at". Código CSS completo para ela:

.at {border-spacing:1; border:0;text-align:right;}
.at tr:nth-child(odd) {background: #e0e0e0;}
.at td {padding: 2 px;}
.at tr:nth-child(1), .at tr:nth-last-child(1) {color:magenta;background:#eee;}
.at tr:nth-child(2), .at tr:nth-last-child(2) {color:red;background:transparent;}
.at tr:nth-child(3) td, .at tr:nth-last-child(3) td {background:#c0c0c0;text-align:center;}

.at .sl {color:red;    font-weight:bold;}
.at .tp {color:#00 A000;font-weight:bold;}
.at .r {color:red;}
.at .g {color:#00 A000;}
.at .b {color:blue;}
.at .m {color:magenta;}


Era

Tornou-se


Visualmente, a coloração não mudou, mas o código ficou mais curto e a probabilidade de redesenhar relatórios enormes com mais de 50 mil negócios diminuiu. Comparei arquivos com 35 mil negócios e o tamanho diminuiu em 6,5% (11,7 mb na nova versão, 12,5 mb na versão antiga). Espero que tenha aumentado devido ao uso de estilos e tabelas sem mesclar células. Também adicionei a opção sugerida acima de imprimir todas as linhas ou a primeira e a última 1.000 linhas.





enum showType {Show_1000_First_and_Last_Deals, Show_All_Deals };
sinput showType Report_Print_First_Last_1000 = 0; // Imprimir todas as linhas ou parcialmente, para fins de velocidade

O arquivo final está anexado. Talvez ele seja útil para outra pessoa.

Arquivos anexados:
Report.mqh  293 kb
 
Forester #:
Decidi otimizar um pouco o código do meu Report-a.

Sou um zero absoluto em HTML, portanto, qualquer sugestão de melhoria é bem-vinda.

É claro que algumas decisões visuais são de bom gosto. Mas em termos de tamanho e velocidade de renderização - métricas objetivas.