Puede parecer que la biblioteca tiene algo en común con un gráfico de este tipo en el informe estándar de MT5 Tester

A continuación se muestra un ejemplo de cómo obtener datos para un gráfico de este tipo
#include <MT4Orders.mqh> // https://www.mql5.com/es/code/16006 #include <fxsaber\BestInterval\BestInterval.mqh> // https://www.mql5.com/es/code/22710 void OnStart() { BESTINTERVAL BestInterval; // Creado un objeto para calcular el mejor intervalo de negociación BestInterval.Set(); // Publicado un historial de pujas BestInterval.DeleteWorseInterval() // Tiró un intervalo malo double Profit[24], Loss[24]; ArrayInitialize(Profit, 0); ArrayInitialize(Loss, 0); for (int i = BestInterval.GetAmount() - 1; i >= 0; i--) { const DEAL Deal = BestInterval[i]; // i-ésima operación en el historial de operaciones recalculado const int hour = Deal.OpenTime % 3600; // hora de la transacción i-ésima // Distribuir el beneficio a las matrices respectivas if (Deal.Profit > 0) Profit[hour] += Deal.Profit; else Loss[hour] -= Deal.Profit; } }
Pero en realidad la biblioteca no está pensada para ejecuciones individuales o visualización. Es 99% necesaria para la optimización de TS, porque le permite desenterrar modos frescos de cualquier TS, si tales modos están incrustados en él, aunque secretamente.
El registro que se muestra en la biblioteca corresponde a la fase de análisis posterior a la optimización: una única ejecución. Este registro muestra simplemente cómo se comporta una instancia concreta de la TS (un conjunto de parámetros de entrada) en los intervalos calculados. Es decir, es un control adicional, pero en la fase final. La base es la Optimización.
La biblioteca utiliza MT4Orders para recuperar el historial de operaciones.
Puede haber varias razones por las que no se deba utilizar MT4Orders. Por ejemplo, para analizadores de operaciones de terceros.
En cualquier caso, se proporciona este escenario:
#include <fxsaber\BestInterval\BestInterval.mqh> // Cálculo del mejor intervalo de negociación void OnDeinit( const int ) { BESTINTERVAL BestInterval; // Creado un objeto para calcular el mejor intervalo de negociación // Conjunto de operaciones de cierre DEAL Deals[]; // Necesitamos escribir dos campos para cada transacción de cierre // Operaciones[i].Beneficio - beneficio de la operación que cierra la posición // Deals[i].OpenTime - hora de apertura (no de cierre) de la posición que cierra la operación // BestInterval.Set(); // Historial de operaciones de venta - utiliza MT4Orders BestInterval.Set(Deals); // Publicó una historia de licitación preparada por él mismo const int AmountIntervals = 3; // Cuántos intervalos comerciales en el peor de los casos hay que tirar for (int i = 0; i < AmountIntervals; i++) if (BestInterval.DeleteWorseInterval()) // Si se ha tirado algo Print(BestInterval.ToString()); // Imprimamos los datos comerciales obtenidos else break; // De lo contrario, estamos fuera }
Es decir, puede introducir los datos que desee para calcular el mejor intervalo. La biblioteca es independiente de la plataforma.
Tenga en cuenta que el algoritmo bibla no implica ninguna optimización interna de los parámetros. No hay overshooting, porque la base es de una sola pasada: O(n) (n es el número de operaciones que cierran posiciones ). Y el enlace "más lento" es uno QuickSort: O(n*log(n)). Por eso se adapta perfectamente a la optimización, porque no ralentiza el proceso.
Los desarrolladores podrían adoptar el algoritmo (ya que es de paso único), para poner sus resultados en el informe de paso único y crear un indicador estándar.
Identificador | Descripción del indicador estadístico | Tipo |
STAT_PROFIT | Beneficio neto al final de la prueba, suma deSTAT_GROSS_PROFIT y STAT_GROSS_LOSS (STAT_GROSS_LOSS es siempre menor o igual que cero). | doble |
STAT_BESTPROFIT | Beneficio en el mejor intervalo. | doble |
La idea de la biblioteca es clara y la implementación es sorprendentemente fácil de usar. Gracias por el trabajo realizado.
Sin embargo, tengo una sugerencia para el autor: necesitamos un ejemplo de su uso en un Asesor Experto específico - desde el principio de la habilitación de las bibliotecas a la formación del filtro.
La idea de la biblioteca es clara y la implementación es sorprendentemente fácil de usar. Gracias por el trabajo realizado.
Sin embargo, tengo una sugerencia para el autor: necesitamos un ejemplo de su uso en un Asesor Experto específico - desde el principio de habilitar las bibliotecas para filtrar la formación.
Apoyo 101% :)
Usted necesita un ejemplo de su uso en un Asesor Experto específico - desde el inicio de la habilitación de las bibliotecas a la formación de un filtro.
Echa un vistazo a BestInterval_Example.mq5.
Чтобы применить найденный интервал после его расчета, нужно во входных параметрах указать BestInteval Action = true.

Características.
S
Por favor, comparta en los comentarios los resultados de la aplicación (como arriba) de la biblioteca ANTES y DESPUÉS en forma de imágenes y trozos correspondientes de los registros de una sola pasada de MT4/5.
Ahora es mucho más fácil aplicar el resultado del cálculo al Asesor Experto. Para ello, sólo tiene que hacer clic unas cuantas veces.
A modo de pequeño resumen
1. tome cualquier Asesor Experto y escriba estas líneas en su inicio
#include <MT4Orders.mqh> // https://www.mql5.com/es/code/16006 #define BESTINTERVAL_ONTESTER // El criterio de optimización es el beneficio del mejor intervalo. #include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/es/code/22577 #include <fxsaber\BestInterval\BestInterval.mqh> // https://www.mql5.com/es/code/22710
2. Establecer el número de intervalos a lanzar y la opción de no aplicarlos.

3. Establecer Optimización, o inmediatamente ejecución única. Habrá datos de cálculo en el registro del Probador si le interesa.
Amount of Delete Intervals = 0 00:00:00 - 23:59:59 : Profit = 18385.00, Total = 1070, PF = 1.61, Mean = 17.18, DD = 1769.00, RF = 10.39 SUMMARY: 00:00:00 - 23:59:59 : Profit = 18385.00, Total = 1070, PF = 1.61, Mean = 17.18, DD = 1769.00, RF = 10.39 Amount of Delete Intervals = 1 00:00:00 - 10:07:47 : Profit = 4279.00, Total = 181, PF = 2.02, Mean = 23.64, DD = 834.00, RF = 5.13 11:06:12 - 23:59:59 : Profit = 17349.00, Total = 768, PF = 1.95, Mean = 22.59, DD = 933.00, RF = 18.59 SUMMARY: 00:00:00 - 23:59:59 : Profit = 21628.00, Total = 949, PF = 1.97, Mean = 22.79, DD = 862.00, RF = 25.09
4. Después de la ejecución única, active la opción de activar el mejor intervalo e inicie de nuevo la ejecución única.

5. Obtenga el informe del Comprobador

y los datos sobre los intervalos aplicados en el registro.
Amount of Delete Intervals = 1 00:00:00 - 10:07:47 : Profit = 4279.00, Total = 181, PF = 2.02, Mean = 23.64, DD = 834.00, RF = 5.13 11:06:12 - 23:59:59 : Profit = 17349.00, Total = 768, PF = 1.95, Mean = 22.59, DD = 933.00, RF = 18.59 SUMMARY: 00:00:00 - 23:59:59 : Profit = 0.00, Total = 0, PF = Max, Mean = 0.00
En resumen, todos los resultados ANTES y DESPUÉS + datos detallados (reducción máxima añadida y factor de recuperación - por saldo) para cada subintervalo del mejor intervalo.
Puede consultar la biblioteca de este asesor.
¿Qué quiere decir?
'OnTester' - function already defined and has body BestInterval.mqh 504 8
no compila
¿A qué te refieres?
no compila.
¿Qué has hecho?
¿Qué has hecho?
No he hecho nada todavía, sólo estoy tratando de compilar este código:
#include <MT4Orders.mqh> // https://www.mql5.com/es/code/16006 #define VIRTUAL_TESTER // Ejecutar en un entorno comercial virtual #define BESTINTERVAL_ONTESTER // El criterio de optimización es el beneficio del mejor intervalo. #include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/es/code/22577 #include <fxsaber\BestInterval\BestInterval.mqh> // https://www.mql5.com/es/code/22710 #include <..\Experts\fxsaber\TesterEA\TesterEA.mq4>
sin Virtual , compila,
sin BestInterval también compila,
pero no compilan juntos.
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
BestInterval:
Cálculo del mejor intervalo del trading.
Autor: fxsaber