Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
- Visualizaciones:
- 145
- Ranking:
- Publicado:
- 2025.04.04 10:54
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Rápida versión JavaScript de la librería Report para comandos de trading estilo MT4 implementados a través de MT4Orders o Virtual.
Funciona hasta 10 veces más rápido que Report, el tamaño del archivo NTML es menor, puede cargar y mostrar hasta 5,4 millones de líneas de informe (captura de pantalla a continuación).
Funcionalidad: (la misma que Report)
- Muestra las operaciones ejecutadas por MT4, MT5, sus probadores o Probador Virtual.
- Muestra gráficos
- Abre un archivo HTML con el informe en un navegador (requiere permiso para usar DLL y el comando #define REPORT_BROWSER).
Diferencias con el Informe:
- En el código lateral de MT5, todos los datos para el informe se envían inmediatamente al archivo como una matriz, sin ensamblar las líneas con el código HTML. Esto supone un gran aumento de velocidad y una reducción del tamaño del fichero.
- El cálculo de estadísticas, gráficos y generación de código HTML con líneas de operaciones se realiza en el lado del navegador en código JavaScript. Se crea un paginador que muestra la página necesaria.
- Los gráficos muestran los tratos en una escala de tiempo en lugar de en una escala uniforme por número de trato. Así, podemos ver que un Asesor Experto hizo 1000 operaciones en la semana 1 y estuvo inactivo durante otras 52 semanas.
He aquí un ejemplo ilustrativo con 3386 operaciones durante 5 años:
Las mismas operaciones se colocan en ambos gráficos.
El gráfico superior se construye con un paso uniforme entre las operaciones (como el probador MetaQuotes muestra ahora). Parece prometedor.
El gráfico inferior se construye en una escala de tiempo y muestra que el Asesor Experto ha negociado sólo unas pocas semanas en 5 años. 1 píxel horizontal = 1 semana.
De acuerdo con el gráfico inferior, es inmediatamente claro que habrá 2 años de inactividad en el principio, entonces el Asesor Experto negociará durante unas semanas y luego 2,5 años de inactividad de nuevo. Este tipo de comercio no es tan interesante como la impresión del primer gráfico. - El gráfico de balance con opciones sin deslizamiento, sin comisión, sin comisión y deslizamiento ha sido reemplazado por el gráfico de ganancias (P/L) con las mismas opciones (sin operaciones de balance).
- Añadido un gráfico de saldo separado, que mostrará los depósitos/retiradas de operaciones de saldo. De esta forma, puede ver por separado el trabajo de las operaciones comerciales en el gráfico P/L y sus importes con las operaciones de saldo.
- Si hace clic en cualquier gráfico, se abrirá un Google.charts interactivo. En él puedes hacer zoom y ver las operaciones en detalle. 4 gráficos P/L con 100.000 operaciones abiertas durante ~10 segundos.
-
El gráfico TurnOver se sustituye por un gráfico con P/L para compras, ventas y su importe. De esta manera puede entender si su estrategia es alcista o bajista. Puede decidir desactivar una de las direcciones de negociación si no es rentable. A continuación se muestra el gráfico del precio de cierre del instrumento. Es conveniente seguir cómo las compras producen beneficios cuando el tipo sube y las ventas pérdidas, y viceversa cuando el tipo baja. Si hay varios instrumentos, sus precios se mostrarán juntos, es mejor seleccionar sólo uno de los instrumentos por filtro para ver sólo su precio.
-
Añadidos gráficos de deslizamientos y deslizamientos acumulados en apertura, cierre y su suma, la idea fue tomada de aquí https://www.mql5.com/ru/blogs/post/760817.
- Un poco reordenadas las columnas del informe, pero hay una casilla que las reordenará como en Informe-e. Si usted está más acostumbrado.
- Cuando se trabaja en Virtual, se pueden hacer varias llamadas a QuickReport y generar informes para cada virtual (si hay varios) y/o tester MT5 real
Ejemplos de uso:
- simple con MT4Orders
#include <MT4Orders.mqh> #define REPORT_BROWSER // Open report in browswer automatically. Require DLL. //#include <Informe.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));}//hora actual en día. 3600 seg en 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 prueba grande
- simple con Virtual
#include <MT4Orders.mqh> #include <fxsaber\Virtual\Virtual.mqh> #define REPORT_BROWSER // Open report in browswer automatically. Require DLL. //#include <Informe.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 el informe de cada probador return(AccountInfoDouble(ACCOUNT_BALANCE)); }
- descripción de los parámetros de llamada
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 - nombre del archivo para la grabación
is_open_file_in_browser - abrir automáticamente el archivo en el navegador cuando finalice el cálculo (se requiere permiso DLL). Los archivos no se abrirán automáticamente durante la optimización, ya que puede haber varios miles de ellos.
virtual_number - (para trabajar con Virtual) número de probador virtual (-1 - se determinará automáticamente, 0 - probador MT5, >0 - probadores virtuales)
hide_account_and_name - ocultar número de cuenta y nombre
common_path - guardar en la carpeta común de los terminales. Para evitar que los archivos sean sobrescritos por otro agente durante la optimización, se añade el número de agente (3000, 3001,...) a los nombres de los archivos. Cuando se guardan en la carpeta del comprobador (falso), se guardan en la carpeta del agente que realizó los cálculos.
fileANSI - guardar en codificación ANSI o en UNICODE. El tamaño de los ficheros UNICODE es 2 veces mayor y tardan más en procesarse, por lo que si se cargan muchos datos, por ejemplo 1 GB, es más económico utilizar ANSI. UNICODE se añade por compatibilidad con servicios de terceros si lo necesita.
Ejemplo de informe para 5,4 millones de transacciones:
( Virtual con informe de más de 100 000 líneas en mi ordenador se come toda la memoria y se cuelga, por esta razón hice versión JavaScript).
Este informe mostró Firefox. Chrome se cuelga, necesita archivos más pequeños.
Más de 5,4 millones de filas se pueden cargar en un archivo, pero el navegador Firefox no puede manejar más.
Al cargar este informe, el navegador utilizó alrededor de 6GB de memoria (procesado alrededor de 1 minuto), luego la liberó, después de lo cual el informe se muestra en la página: (Informe utiliza 5-6GB de 80-100 mil líneas).
Gráfico detallado con zoom.
Al hacer clic en cualquier gráfico se abrirá un gráfico interactivo con ese gráfico, con la posibilidad de ampliarlo para verlo en detalle.
Hay 2 opciones:
- La predeterminada es la gratuita Google.charts
- Se puede conectar Highcharts, que como producto comercial es más rápido y cómodo, pero sólo puede ser utilizado gratuitamente por los programadores durante el desarrollo; cuando se libera un proyecto/producto, hay que comprar una licencia y renovarla anualmente. Lea más aquí https://shop.highcharts.com/
Puede seleccionar Logarithmic - escala logarítmica (puede ser útil si tiene un crecimiento exponencial del balance). Para Highcharts puede seleccionar adicionalmente Ordinal - paso uniforme (como en los informes de los probadores de MetaQuotes). Después de cambiar estos elementos, es necesario hacer clic de nuevo en el gráfico deseado para aplicar la opción seleccionada.
Ejemplo de Google.chart: (zoom con la rueda del ratón).
Ejemplo de Highcharts: (cambiar la escala seleccionando la zona necesaria con el ratón).
Órdenes pendientes ejecutadas en MT5
Para las órdenes que aparecieron como resultado de la activación de órdenes pendientes, el campo Tipo muestra en color azul oscuro el tipo de orden pendiente (Buy limit, Sell limit, Buy stop o Sell stop), el tiempo desde la configuración hasta la activación de la orden en segundos y el tipo de orden/posición activada. Esta información sólo se muestra para el terminal o probador MT5, los probadores virtuales o MT4 no proporcionan esta información.
Gráficos de pérdidas y ganancias por hora y día de la semana.
A diferencia del comprobador MQ, los beneficios y pérdidas no se muestran en el momento en que se producen, sino en el momento de entrada en una operación. Esto hace que sea más fácil entender que las entradas en una hora determinada son en su mayoría poco rentables y simplemente desactivar esta hora para las entradas.
Además, se han elaborado gráficos sobre compras y ventas.
Si hace clic en cualquiera de estos gráficos, verá tablas con los importes exactos por horas y días. También hay casillas de verificación que se pueden utilizar para desactivar las horas y los días de las entradas - los gráficos y las tablas se reconstruirán y podrá evaluar el resultado sin pruebas adicionales. Es un análogo de BestInterval de Fxsaber, pero más grueso (con un paso de 1 hora) y sin automatización. Se ha añadido el intervalo M10 para reducir el paso.
En estos gráficos se pueden observar algunas ráfagas de beneficios por hora o por día en pequeños periodos de prueba. Los gráficos de arriba muestran una prueba de 1 mes con una tendencia alcista. Por lo tanto, la compra está en beneficios y la venta en pérdidas. Si aumenta la prueba a un año o más, cuando pasarán varias tendencias grandes en ambas direcciones, todo se volverá uniforme y generalmente no rentable, por lo que es poco probable que pueda desactivar algo y obtener un cambio significativo en el beneficio.
Aquí está lo que se convirtió en la misma estrategia con la prueba durante 1 año: (usted debe apagar casi todo).
Así que difícilmente puede convertirse en la base de su estrategia.
Filtrado de órdenes.
Se han añadido muchos filtros para mostrar las órdenes por diferentes parámetros.
Buy, Sell, Buy limit, Sell limit, Buy stop, Sell stop, Balance - puede eliminar cualquier tipo de orden del informe.
Symbols - mostrará toda la lista de instrumentos utilizados, puede seleccionar sólo los necesarios.
Magic - puede mostrar órdenes sólo con Magic especificado
Min Lot, Max Lot - puede seleccionar órdenes con lotes requeridos
Negative Slippage - puede mostrar órdenes con deslizamiento negativo por separado para órdenes de apertura o de cierre
Swap - muestra órdenes con swaps > 0
Min LengthTime - órdenes con duración superior al tiempo especificado (especificado por número de días, horas, minutos y segundos)
Max LengthTime - órdenes con duración inferior al tiempo especificado
Open Time - hora de apertura de la orden desde y hasta las fechas especificadas
Close Time - hora de cierre de la orden desde y hasta las fechas especificadas
TP, SL - órdenes que finalizaron con TP o SL activados
Ganancias, Pérdidas - órdenes con ganancias o pérdidas (no se incluyen comisiones y swaps, que pueden hacer que el beneficio final sea negativo)
Rechazos - órdenes no ejecutadas.
El botón Restablecer permite restablecer los filtros a los valores por defecto y mostrar todas las órdenes sin filtrar.
Opciones adicionales:
- Puede especificar la fecha de inicio del forward test, una vez aplicado se calcularán las estadísticas del gráfico completo, del gráfico anterior a la fecha especificada (BackTest) y del gráfico posterior (ForwardTest). Los gráficos mostrarán una línea vertical en esta fecha.
- Antiguo orden de las columnas: el orden de las columnas se reordenará como en la biblioteca de informes.
P.D. Cuantos más comentarios haya sobre las operaciones, menor será el número de filas que se puedan mostrar. Un informe con 5,4 millones de filas no tenía más comentarios que "fin de la prueba". Así que es mejor no ponerlos si el informe va a tener más de 4 millones de operaciones.
P.P.S. Funciona tanto en MT5 como en MT4. Gracias a fxsaber por la modificación para MT4.
Opciones de mejora:
- Puede intentar descargar el informe en un archivo binario y leerlo en el navegador, tal vez pueda funcionar con un gran número de 5,4 millones de filas. Pero entonces tendremos que seleccionar manualmente el fichero binario debido a restricciones de seguridad. Es decir, no podremos abrir automáticamente el informe inmediatamente después de la prueba.
Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/47816

Estrategia basada en el indicador estándar iCHO (Chaikin Oscillator, CHO) y el indicador personalizado 'CCIDualOnMA'.

Panel basado en la clase CDialog. Trabaja sobre el símbolo actual. Borrar, establecer Take Profit, establecer Breakeven en un grupo de posiciones.

Biblioteca básica para crear perfiles de volumen en el gráfico.

El indicador muestra el ángulo o la velocidad media de variación del precio.