Librerías: Report - página 13

 
fxsaber #:
Por ahora estoy usando b4070.

Se compila en 4067. Por favor, dígame, ¿los valores que faltan en la columna Deslizamiento significan deslizamiento cero (tanto para entrada como para salida)?

Archivos adjuntos:
 
leonerd #:

¿Puede decirme, por favor, si los valores que faltan en la columna Deslizamiento significan deslizamiento cero (tanto para la entrada como para la salida)?

Para las órdenes de mercado, el deslizamiento sólo puede determinarse analizando el historial de ticks. Esto aún no se ha implementado. Los aplazamientos y SL/TP dan información sobre el deslizamiento a la vez, mientras que el mercado no.

 
fxsaber #:
Estoy usando b4070 por ahora.

Escriben que es necesario actualizar a 4075. Tengo 4076 y no compila tan bien. Errores como "mismatched #ifdef/#endif pair".


 
leonerd #:

Dicen que hay que actualizar a 4075. Yo tengo 4076 y no compila tan bien. Errores como "par #ifdef/#endif mal emparejado".

 
Tuve que hacer pruebas con un gran número de transacciones. Si eran > 50.000, el probador consumía gigabytes de memoria mientras creaba el archivo de informe, y luego el navegador hacía lo mismo. Y es extremadamente difícil ver un archivo de este tipo - constantes redibujos y congelaciones. Y con unas 80 mil líneas la memoria se agotó por completo.
Para evitar todo esto añadí este código, que por defecto da salida a las primeras y últimas 1000 líneas del archivo. Normalmente a ojo línea por línea no hacía falta comprobar más. Si realmente lo necesitas, puedes cambiar la salida a todas las líneas por entrada.
.
enum showType {Show_1000_First_and_Last_Deals, Show_All_Deals };
sinput showType Report_Print_First_Last_1000 = 0; // Imprimir todas las líneas o parcialmente, para mayor rapidez

....
// en el bucle de búsqueda de cadena cambió la cadena (~2130)
          StrSum += "<tr " + ((bool)(Count & 1) ? "" : "bgcolor=#E0E0E0 ") +
                 ((OrderType() >= OP_BALANCE) ? "style=\"color:blue\" ": "") + "align=right>" + REPORT::OrderToString(Count, Filter) + "</tr>\n";

// en las líneas

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{//Mostrar_1000_primeras_y_últimas_ofertas
   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);}// sin imprimir, para calcular el saldo
}
Puede ser útil para otros usuarios.
 
Forester #:
Tuve que hacer pruebas con un gran número de transacciones. Si eran > 50.000, el probador consumía gigabytes de memoria mientras creaba el archivo de informe, y luego el navegador hacía lo mismo. Y es extremadamente difícil ver un archivo de este tipo - constantes redibujos y congelaciones. Y con unas 80 mil líneas la memoria se agotó por completo.
Para evitar todo esto añadí este código, que por defecto da salida a las primeras y últimas 1000 líneas del archivo. Normalmente a ojo línea por línea no hacía falta comprobar más. Si realmente lo necesitas, puedes cambiar la salida a todas las líneas por entrada.
Podría ser útil para otros usuarios.

Haría un spoiler para el navegador. Para informes grandes ayuda.

Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading.

Errores, bugs, preguntas

fxsaber, 2023.10.18 15:00

Clasificación de los navegadores más rápidos al abrir tablas html grandes - steutments. Resultado resumido para una tabla con 35K filas.

Navegador DuraciónTiempo (seg)
MyPal 24
Basilisk 35
PaleMoon 50
K-Meleon 52
Torio 55

Mi elección inequívoca es MyPal.


 
Forester #:
Tuve que hacer pruebas con un gran número de transacciones. Si eran > 50.000, el probador consumía gigabytes de memoria mientras creaba el archivo de informe, y luego el navegador hacía lo mismo. Y es extremadamente difícil ver un archivo de este tipo - constantes redibujos y congelaciones. Y con unas 80 mil líneas la memoria se agotó por completo.
Para evitar todo esto añadí este código, que por defecto da salida a las primeras y últimas 1000 líneas del archivo. Normalmente a ojo línea por línea no hacía falta comprobar más. Si realmente lo necesitas, puedes cambiar la salida a todas las líneas por entrada.
Podría ser útil para otros usuarios.

Me gustaría ver tal archivo html (con frenos debido a 50000 entradas) - seguramente se puede optimizar.

En cuanto al tester, probablemente puedas perfilar mql5 también y averiguar si hay algún cuello de botella de memoria.

 
Stanislav Korotky #:

Me gustaría ver ese archivo html (con frenos debido a las 50000 entradas) - seguro que se puede optimizar.

En cuanto al probador, probablemente se puede perfilar mql5 también y averiguar si hay algún cuello de botella de memoria.

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

OnTickMulti - с добавленными пересчетом прибыли в валюту депозита, свопами, комисссией в % за лот.
OnTickMulti - с добавленными пересчетом прибыли в валюту депозита, свопами, комисссией в % за лот.
  • 2023.12.25
  • www.mql5.com
Текущий вариант OnTickMulti https://www.mql5.com/ru/code/47647 считает прибыль в валюте каждого символа или можно получить в пипсах. Но на общий баланс они влияют в другой пропорции, согласно текущему
 
He decidido optimizar un poco el código de Report-a. Espero que los frenos serán menos.

Principal:

En vez de poner align=right y bgcolor=#E0E0E0 cada dos líneas, hice un estilo que lo hace sin atributos en el código HTML

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

Dividí la tabla en 3: las 2 primeras filas con información adicional, la tabla principal con los tratos, la última tabla con las estadísticas de las pruebas. Si estas tablas están pegadas, hay algunas uniones de columnas como colspan=6, colspan=14, etc. Esto es más difícil para el navegador. Hice 3 tablas simples sin uniones.

Adicional: (no debería acelerar mucho)
A veces hay color de resaltado style="color:#00A000", lo reemplacé con class="sl" más corto - no hay diferencia, sólo el código del archivo final será más corto. SL/TP resaltado con el color en negrita para la visibilidad.

Y añadí estilos para las 3 primeras y últimas líneas.

También en las columnas Resumen y Promedio añadí un salto de línea para los valores entre paréntesis. A veces son largos. Después de que la tabla se hizo más compacto.

La tabla con ofertas se puso class="at". Código CSS completo para ello:

.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

Se convirtió en


Visualmente la coloración no ha cambiado, pero el código se ha hecho más corto y la probabilidad de redibujar para informes enormes con >50k ofertas ha disminuido. He comparado archivos con 35k ofertas, el tamaño ha disminuido un 6,5% (11,7 mb nueva versión, 12,5 mb versión antigua). Bueno, lo principal no es el tamaño, sino la velocidad de dibujo, espero que haya aumentado debido al uso de estilos y tablas sin combinar celdas. También se ha añadido la opción sugerida anteriormente de imprimir todas las filas o las primeras y últimas 1000 filas.





enum showType {Show_1000_First_and_Last_Deals, Show_All_Deals };
sinput showType Report_Print_First_Last_1000 = 0; // Imprimir todas las líneas o parcialmente, para mayor rapidez

Adjunto el archivo final. Tal vez sea útil para alguien más.

Archivos adjuntos:
Report.mqh  293 kb
 
Forester #:
He decidido optimizar un poco mi código de Report-a.

Soy un cero absoluto en HTML, así que cualquier sugerencia de mejora será bienvenida.

Por supuesto, algunas decisiones visuales son de buen gusto. Pero en términos de tamaño y velocidad de renderizado - métricas objetivas.