Mira cómo descargar robots gratis
¡Búscanos en Facebook!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Librerías

BestInterval - librería para MetaTrader 5

Visualizaciones:
1299
Ranking:
(45)
Publicado:
2018.11.26 09:53
\MQL5\Include\fxsaber\BestInterval\
Files.mqh (0.85 KB) ver
Deal.mqh (2.28 KB) ver
Interval.mqh (3.49 KB) ver
BestInterval.mqh (23.09 KB) ver
\MQL5\Experts\fxsaber\
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Las regularidades comerciales dependen de los intervalos dentro del día o la semana. Por esta razón, sería lógico limitar el trading del sistema comercial respecto al tiempo.

Por ejemplo, hay sistemas comerciales de scalping que operan bien con cruzamientos de cotizaciones en la sesión americano asiática. O bien, se practica la desactivación del sistema comercial en el período de alta volatilidad.


Por tanto, surge el siguiente problema, ¿cómo podemos encontrar el mejor tiempo para usar el sistema comercial? Normalmente, la búsqueda de este intervalo se selecciona gracias a la intuición del trader algorítmico o se asigna al Probador de Estrategias estándar. Vamos a omitir la intuición, como un caso técnico. En cuanto al Probador de Estrategias estándar para solucionar este problema, eso aumenta automáticamente el número de los repasos, entonces, el tiempo de la Optimización y el dinero (Nube). No obstante, habrá momentos que pueden ser mejorados.


Además, hay situaciones cuando tenemos un sistema comercial realmente bueno, pero sus calidades positivas están ocultos porque falta filtro de tiempo. Si habría posibilidad de encontrar el intervalo necesario de trading para este sistema comercial, no tendríamos que tirarlo, provocando las investigaciones adicionales...


Implementación.

Esta librería multiplataforma permite encontrar el intervalo óptimo del trabajo del sistema de una manera muy rápida y eficaz.

Ejemplo del uso con comentarios:

#include <MT4Orders.mqh> // https://www.mql5.com/es/code/16006

#include <fxsaber\BestInterval\BestInterval.mqh> // Cálculo del mejor intervalo del trading

void OnDeinit( const int )
{
  BESTINTERVAL BestInterval; // Creamos el objeto para calcular el mejor intervalo del trading
  
  BestInterval.Set(); // Colocamos el historial del trading
  
  const int AmountIntervals = 3; // Número de peores intervalos a eliminar
  
  for (int i = 0; i < AmountIntervals; i++)
    if (BestInterval.DeleteWorseInterval()) // Si hemos eliminado algo
      Print(BestInterval.ToString());       // Imprimimos los datos obtenidos
    else
      break;                                // De lo contrario, salimos
}


En vez de describir este ejemplo seco del uso de la librería, mostraremos el uso real usando el EA de scalping.


EA de scalping.

Iniciamos el EA de scalping de 24 horas en el Probador de Estrategias de MT5 y obtenemos la siguiente imagen

echamos un vistazo al log de un repaso único

Amount of Delete Intervals = 0
00:00:00 - 23:59:59 : Profit = 20121.00, Total = 1138, PF = 1.68, Mean = 17.68
SUMMARY: 00:00:00 - 23:59:59 : Profit = 20121.00, Total = 1138, PF = 1.68, Mean = 17.68

aquí tenemos los datos del repaso crudo (no han sido eliminados ningunos intervalos).


Ahora mostraremos consecutivamente las entradas del registro, donde será demostrado poco a poco el efecto de la eliminación de los intervalos débiles.


Eliminamos un intervalo:

Amount of Delete Intervals = 1
00:00:00 - 10:08:04 : Profit = 6830.00, Total = 203, PF = 3.10, Mean = 33.65
11:05:24 - 23:59:59 : Profit = 17086.00, Total = 819, PF = 1.93, Mean = 20.86
SUMMARY: 00:00:00 - 23:59:59 : Profit = 23916.00, Total = 1022, PF = 2.10, Mean = 23.40

Las líneas seleccionadas representan los intervalos de trading. Como se ve, desde la 10 hasta las 11 no hay trading, ha sido eliminado.


Sin dos intervalos:

Amount of Delete Intervals = 2
00:00:00 - 10:08:04 : Profit = 6830.00, Total = 203, PF = 3.10, Mean = 33.65
11:05:24 - 12:21:06 : Profit = 2767.00, Total = 112, PF = 2.46, Mean = 24.71
13:02:59 - 23:59:59 : Profit = 15915.00, Total = 664, PF = 2.17, Mean = 23.97
SUMMARY: 00:00:00 - 23:59:59 : Profit = 25512.00, Total = 979, PF = 2.36, Mean = 26.06


Por fin, sin tres intervalos

Amount of Delete Intervals = 3
00:00:00 - 10:08:04 : Profit = 6830.00, Total = 203, PF = 3.10, Mean = 33.65
11:05:24 - 12:21:06 : Profit = 2767.00, Total = 112, PF = 2.46, Mean = 24.71
13:02:59 - 17:26:06 : Profit = 7476.00, Total = 348, PF = 1.98, Mean = 21.48
17:47:36 - 23:59:59 : Profit = 9640.00, Total = 288, PF = 3.31, Mean = 33.47
SUMMARY: 00:00:00 - 23:59:59 : Profit = 26713.00, Total = 951, PF = 2.57, Mean = 28.09


Obsérvese que los valores del sistema crecen positivamente con cada intervalo eliminado.


Aplicamos el filtro calculado al sistema comercial

Se puede comparar dos gráficos ANTES y DESPUÉS. Tal vez alguien pueda hacer la animación GIF correspondiente...

Como resultado, los valores del sistema se han mejorado considerablemente casi de forma gratis: el mínimo de esfuerzos y el tiempo.


OnTester.

El ejemplo anterior se basaba en la adición de sólo dos líneas al EA original

#define BESTINTERVAL_ONTESTER // El criterio de la optimización es el beneficio del mejor intervalo.
#include <fxsaber\BestInterval\BestInterval.mqh> // Cálculo del mejor intervalo del trading


La línea seleccionada permite no escribir nada más en el EA. Además, se establece el criterio personalizado de la optimización que permite no buscar buenos intervalos como se hacía antes a través de la optimización. El criterio va a devolver el resultado del sistema comercial en el intervalo calculado, y por tanto mostrar el potencial del sistema comercial mucho mejor que a través de la Optimización clásica.


Para usar el intervalo encontrado después de su cálculo, hay que indicar BestInteval Action = true en los parámetros de entrada.



Conclusiones.

Es necesario comprobar bien todos los sistemas comerciales, incluyendo el cálculo del mejor intervalo del trading. Por eso, esta herramienta pertenece al tipo must-have.

Sería lógico usar todos los sistemas actuales, anteriores y futuros y conectar la búsqueda del intervalo óptimo a ellos (dos líneas más arriba). Esta implementación facilita aún más la creación de un sistema comercial rentable o la mejora de la robustez de un sistema existente.


Particularidades.

  • Es conveniente desactivar/activar el trading en los intervalos encontrados usando el entorno de trading virtual.
  • El algoritmo de la librería es muy rápido. Se puede colocarlo para los mismos propósitos dentro de los analizadores ajenos.
  • La idea es personal. Tal vez haya sus análogos.
  • No tenía tiempo para implementar los intervalos dentro de la semana. Tal vez lo haga en el futuro...
  • La librería es del tipo multiplataforma. Está compatible con MT4 y MT5.
  • El cálculo del mejor intervalo y su aplicación en el Probador de Estrategias se realiza sin cambiar el código original del EA.


PS:

Por favor, compartan los resultados de la aplicación de la librería en los comentarios ANTES y DESPUÉS en forma de las imágenes y bloques correspondientes de logs del repaso único MT4/5.

Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/22710

Hedge any positions Hedge any positions

Apertura de posiciones opuestas al alcanzar la pérdida de N pipos

Close all positions Close all positions

Cierre de posiciones después de alcanzar el nivel del beneficio

Deviation scaled MA MACD Deviation scaled MA MACD

Deviation scaled MA MACD

Deviation scaled MA crosses Deviation scaled MA crosses

Deviation scaled MA crosses