Librerías: BestInterval - página 17

 
Andrey Khatimlianskii:

¿Existe una manera fácil de dejar su OnTester funcionando después de conectar BestInterval?

Esto no ayuda:

Sigue devolviendo el saldo final (y necesitas tu propio criterio complejo, BESTINTERVAL_ONTESTER_FORMULA no resuelve el problema).

#define  BESTINTERVAL_ONTESTER // El criterio de optimización es el beneficio del mejor intervalo.
#define  BESTINTERVAL_CALL_ONFUNCTIONS // OnTester será llamado en modo BESTINTERVAL_ONTESTER и OnTimer.
#include <fxsaber\BestInterval\BestInterval.mqh> // Cálculo del mejor intervalo de negociación

double OnTester()
{
  Print("Hello World");
  
  return(123);
}

En el registro verá Print triggered, es decir, OnTester se ejecutará. Pero no más que eso - su resultado es ignorado.


Necesita esto

#define  BESTINTERVAL_ONTESTER // El criterio de optimización es el beneficio del mejor intervalo.
#define  BESTINTERVAL_ONTESTER_FORMULA MyOnTester()
#include <fxsaber\BestInterval\BestInterval.mqh> // Cálculo del mejor intervalo de negociación

input int Input = 0;

double MyOnTester()
{
  return(123);
}


Resultado

pass 1 returned result 123.000000 in 0:00:00.468
pass 0 returned result 123.000000 in 0:00:00.469
 
Andrey Khatimlianskii:


ps: la última versión de MT5 tiene un montón de advertencias "comportamiento obsoleto, la llamada a métodos ocultos se desactivará en una futura versión del compilador MQL" al compilar.

¿Qué significa esto?

 
fxsaber:

Necesitas esto

No funciona con Cantidad de Intervalos de Borrado = 0.

En pruebas he llegado a este EA:

#define  BESTINTERVAL_ONTESTER // El criterio de optimización es el beneficio del mejor intervalo.
#define  BESTINTERVAL_ONTESTER_FORMULA MyOnTester()
#include <fxsaber\BestInterval\BestInterval.mqh> // Cálculo del mejor intervalo de negociación

input int inputParam = 0;

double MyOnTester()
{
  return(inputParam*100);
}

Cuando Importe de Borrar Intervalos = 0, devuelve el saldo inicial en todas las pasadas.

Si Cantidad de Borrar Intervalos = 1, devuelve valores esperados.

 
Andrey Khatimlianskii:

No funciona con Cantidad de intervalos de borrado = 0.

En las comprobaciones he llegado a este asesor:

Cuando Importe de Borrar Intervalos = 0, devuelve el saldo inicial en todas las pasadas.

Si Cantidad de Borrar Intervalos = 1, devuelve valores esperados.

En la línea 713.

  if (!inBestInterval_Action && inAmountDeleteIntervals)

elimine la segunda condición.

 
fxsaber:

Línea 713

eliminar la segunda condición.

¡Ya está! Gracias.

 

En tales bibliotecas universales, pongo los parámetros de entrada en un archivo separado y los envuelvo con ifdef, de modo que puedo insertarlos en el lugar correcto sin mirar el orden en que los propios archivos de la biblioteca están conectados (que puede jugar un papel).

¿Quizás haya otra forma más elegante de gestionar el orden de las entradas?

 
Andrey Khatimlianskii:

¿Quizá haya otra forma más elegante de gestionar el orden de las entradas?

Nunca me he molestado con tales cosméticos. Hay tantas otras cosas que hacer...

Sería bueno tener un lugar para discutir cosas prometedoras. Está casi completamente en silencio.

 
fxsaber:

Estaría bien tener un lugar donde debatir cosas de futuro. El silencio es casi total.

Existe la opinión de que las estrategias rentables no pueden discutirse públicamente. Es por eso que sólo hay rudimentos de la investigación en el foro, y en la primera reunión (incluso accidental) con un grano de oro - pasar a la clandestinidad.

Siempre estoy a favor de la discusión, pero no voy a ayudar mucho en términos de comercio, estoy más centrado en cuestiones técnicas.

 
Andrey Khatimlianskii:

Siempre estoy a favor del debate

Con un gran número de operaciones e intervalos desechables surge un interesante objeto de estudio.

Profit = 55367.00 = 54785.00 + 582.00 (1.06%) - Amount of Delete Intervals = 20
00:00:00 - 02:29:28 : Profit = 8460.00 (15.28%), Total = 293 (88.74%), PF = 4.95, Mean = 28.87, DD = 298.00, RF = 28.39
02:34:20 - 03:06:49 : Profit = 763.00 (1.38%), Total = 74 (79.73%), PF = 1.64, Mean = 10.31, DD = 696.00, RF = 1.10
03:12:43 - 03:46:29 : Profit = 1067.00 (1.93%), Total = 76 (75.00%), PF = 2.07, Mean = 14.04, DD = 440.00, RF = 2.43
03:54:37 - 07:15:26 : Profit = 3641.00 (6.58%), Total = 327 (77.68%), PF = 1.66, Mean = 11.13, DD = 1183.00, RF = 3.08
07:30:54 - 09:16:59 : Profit = 2452.00 (4.43%), Total = 253 (79.45%), PF = 1.57, Mean = 9.69, DD = 877.00, RF = 2.80
09:34:03 - 09:42:17 : Profit = 865.00 (1.56%), Total = 42 (83.33%), PF = 3.03, Mean = 20.60, DD = 177.00, RF = 4.89
09:42:19 - 09:51:57 : Profit = 1389.00 (2.51%), Total = 51 (84.31%), PF = 4.99, Mean = 27.24, DD = 93.00, RF = 14.94
09:56:38 - 10:04:58 : Profit = 1351.00 (2.44%), Total = 75 (82.67%), PF = 2.52, Mean = 18.01, DD = 350.00, RF = 3.86
14:22:11 - 14:46:12 : Profit = 2167.00 (3.91%), Total = 110 (78.18%), PF = 3.33, Mean = 19.70, DD = 488.00, RF = 4.44
14:51:09 - 15:01:51 : Profit = 1511.00 (2.73%), Total = 69 (79.71%), PF = 2.68, Mean = 21.90, DD = 353.00, RF = 4.28
15:04:47 - 15:46:23 : Profit = 3605.00 (6.51%), Total = 297 (76.09%), PF = 1.75, Mean = 12.14, DD = 670.00, RF = 5.38
15:54:05 - 16:04:53 : Profit = 2051.00 (3.70%), Total = 103 (82.52%), PF = 2.65, Mean = 19.91, DD = 299.00, RF = 6.86
16:08:24 - 16:15:39 : Profit = 896.00 (1.62%), Total = 56 (78.57%), PF = 2.22, Mean = 16.00, DD = 167.00, RF = 5.37
16:21:19 - 16:44:18 : Profit = 2159.00 (3.90%), Total = 184 (79.89%), PF = 1.71, Mean = 11.73, DD = 352.00, RF = 6.13
16:54:29 - 17:01:09 : Profit = 1457.00 (2.63%), Total = 68 (82.35%), PF = 4.70, Mean = 21.43, DD = 118.00, RF = 12.35
17:10:30 - 17:30:56 : Profit = 2858.00 (5.16%), Total = 178 (78.09%), PF = 2.07, Mean = 16.06, DD = 431.00, RF = 6.63
17:41:23 - 17:51:28 : Profit = 989.00 (1.79%), Total = 88 (76.14%), PF = 1.65, Mean = 11.24, DD = 478.00, RF = 2.07
17:53:57 - 18:51:41 : Profit = 4399.00 (7.95%), Total = 449 (73.72%), PF = 1.53, Mean = 9.80, DD = 635.00, RF = 6.93
18:56:38 - 19:41:09 : Profit = 1646.00 (2.97%), Total = 181 (75.14%), PF = 1.51, Mean = 9.09, DD = 474.00, RF = 3.47
19:44:55 - 20:03:20 : Profit = 1492.00 (2.69%), Total = 70 (78.57%), PF = 3.25, Mean = 21.31, DD = 130.00, RF = 11.48
20:11:31 - 23:59:59 : Profit = 10149.00 (18.33%), Total = 659 (77.24%), PF = 2.12, Mean = 15.40, DD = 645.00, RF = 15.73
SUMMARY: 00:00:00 - 23:59:59 : Profit = 55367.00 (100.00%), Total = 3703 (78.50%), PF = 2.04, Mean = 14.95, DD = 1247.00, RF = 44.40

Tenemos que averiguar cómo identificar buenos tramos de operaciones a partir de estos datos. Tiene que haber una combinación de un número decente de operaciones en un trozo, serias ganancias por unidad de tiempo, etc. Aún no he podido formalizarlo.


La tarea es aproximadamente la siguiente: dado un gran número de intervalos descartados, determinar probablemente trozos del sistema y sólo sobre su base calcular un criterio de optimización personalizado.

La solución del problema permitirá revelar mucho más el potencial de TC.

 
fxsaber:

Aún no he podido formalizarlo.

entonces esta es una tarea para una red neuronal, prepara los datos a mano y entrena la NS, luego en el futuro evaluaras los resultados usando la NS entrenada.

FN: si en los dedos, cómo enseñar la tabla de multiplicar a NS https://www.mql5.com/ru/forum/8265/page2#comment_333746 (probablemente ya he molestado a todos con este ejemplo )))) ) - le das datos a las entradas, la salida es tu evaluación, que sea en una escala de 3 puntos: excelente, bueno, insatisfactorio - el NS hace frente a esta tarea perfectamente bien, pero tendrás que preparar los datos a mano, o más bien clasificar lo que crees que es un resultado bueno/malo.