Asesor para un artículo. Pruebas para todos los interesados. - página 4

 
Reshetov:


He mejorado el Asesor Experto para que calcule la probabilidad de una futura posición corta utilizando señales de trading. En consecuencia, si la probabilidad es superior a 0,5, abrimos una posición corta, de lo contrario abrimos una larga.



He hecho que las tomas y las pérdidas sean fijas, es decir, que no rueden por las señales. Esto es necesario para poder aplicar el MM.

Este es el cuadro: las primeras 136 operaciones son de optimización, el resto son OOS.


Como este tema no es de interés para los traders y sólo los floodbusters vienen aquí a discutir la personalidad del topicstater, no voy a adjuntar el código modificado del Expert Advisor.


Yuri, no los escuches. Por favor, publique el EA modificado.
 
Andru80:
Yuri, no los escuches. Por favor, publique el EA modificado.

Si tiene un artículo, también tendrá un EA. Veamos qué es lo que hay... Con algo de experiencia, ni siquiera se necesitan pruebas para evaluar la idea. Esperaremos.
 
Figar0:

Cuando el artículo esté escrito, el Asesor Experto le seguirá. Veamos qué es lo que hay. No se necesitan pruebas para estimar la idea. Esperaremos.

Estoy publicando el Asesor Experto antes del artículo, para que todo el mundo pueda probarlo y dar su opinión (aunque es posible que probablemente empiecen a discutir mi personalidad de nuevo...).


La esencia ni siquiera está en el Asesor Experto, sino en el algoritmo antiajuste que le he añadido.

Ahora no tenemos que buscar las pruebas de avance exitosas y profundizar en los resultados de las pruebas, sino buscar en las filas superiores de los resultados, deben estar en algún lugar y es muy posible que también estén en la fila superior.

Los resultados de las pruebas y de la optimización pueden ser muy diferentes, ya que el antiajuste sólo se activa durante la optimización y se desactiva el resto del tiempo.

Aquí está el gráfico de la línea superior de resultados de las pruebas (las primeras 404 operaciones son de optimización, el resto son pruebas de avance):


El Asesor Experto se encuentra en el archivo adjunto (está compilado antes de la publicación, abriré su código en el artículo).

Los parámetros de entrada son:

x0, x1, x2, x3, x4, x5, x6, x7 - ajustable de 0 a 100 en incrementos de 1. Optimizado.

sl - Stop Loss y Take Profit en pips. Por ejemplo, para el EURUSD en H1, para cinco dígitos, puede tomar de 100 a 1000 en incrementos de 50 (para cuatro dígitos, elimine un cero de todos los números). Optimizado.

lotes - volumen en lotes, es necesario poner al menos 1 lote para optimizar. No está optimizado.

mn - número mágico. No está optimizado.

d - número de decimales en el tamaño del lote. Es decir, si se permite 0,01, exponga d = 2. No se optimizará.

Optimización por factor de beneficio, los resultados de la optimización se ordenan también por este parámetro.

Por si acaso, añado al archivo ZIP un fichero con la configuración de EA, tal y como la tengo configurada.

Archivos adjuntos:
rnn_v3_1.ex4  7 kb
rnn_v3.zip  1 kb
 

¡Interesante resultado!

Yura, ¿utilizas los datos del instrumento al que está vinculado el EA en el análisis?

 
Neutron:

¡Interesante resultado!

Yura, ¿utilizas los datos del instrumento al que está vinculado el EA en el análisis?

Sí, es decir, no se analizan otros instrumentos. La AT se lleva a cabo sólo con los precios de apertura.


Básicamente, las entradas no son muy sofisticadas, así que puedo mostrarte los fragmentos de código donde se calculan todas estas cosas:


   // Считываем показания индикаторов
   double a1 = input(9, 0);
   double a2 = input(9, 1);
   double a3 = input(9, 2);

   // Вычисляем вероятность торгового сигнала для короткой позиции
   double result = getProbability(a1, a2, a3);

   ...

// Показания индикаторов, должны быть в диапазоне от 0 до 1
// p - период индикатора
// shift - смещение вглубь истории в периодах индикатора
double input(int p, int shift) { 
  return (iRSI(Symbol(), 0, p, PRICE_OPEN, p * shift) / 100.0);
}
 

Gracias.

Antifugas... Si recuerdas los clásicos de NS, el antiajuste se reduce a encontrar el mínimo error de predicción en el avance. Esto puede lograrse ejecutando las estadísticas en un centenar de ejecuciones independientes con el reentrenamiento de NS en cada ejecución. Esto es comprensible, pero muy difícil de aplicar debido a la longitud finita del PA inicial y su no estacionariedad.

Otra forma es obtener una estimación de la longitud óptima de la muestra de entrenamiento. Que yo sepa, nadie ha resuelto aún este problema de forma general...

¿Lo has conseguido?

 
Neutron:

Otra forma es obtener una estimación de la longitud óptima de la muestra de entrenamiento. Que yo sepa, nadie ha resuelto aún este problema de forma general...

No tienes que resolverlo. Basta con encontrar la longitud adecuada de la muestra de entrenamiento para un determinado caso, y es muy fácil de hacer.

Sí, y no es un anti-fit. Es un ajuste de segundo nivel. Para el ajuste de n niveles, debe haber n+1 muestras para probar, la última es una muestra de control.

Eso es exactamente lo último que Reshetov nunca tiene.

 

¡Qué sencillo!

Para cada punto de la curva, hay que reclutar estadísticas. ¿Y de dónde sacar, si el rango de precios cambia completamente después de un mes?

 

No, no tiene ningún sentido.

En el caso de Juri, el entrenamiento NS se realiza simplemente pasando por los pesos en mi tramo de historia... ¿verdad? Si es así, el análisis es simplemente el resultado de las operaciones en cada iteración. Y la afirmación: "...Ahora las pruebas de avance exitosas no necesitan una búsqueda larga y profunda en los resultados de las pruebas, sino que debemos ir a través de las líneas superiores de los resultados, deben estar en algún lugar, es muy posible que en la línea superior ... " , es incorrecta - los avances exitosos pueden estar en cualquier lugar y debemos buscar en todas partes.

 
Neutron:

Gracias.

Anti-ajuste... Si recuerdas los clásicos de NS, el antiajuste se reduce a encontrar el mínimo error de predicción en el avance. Esto puede lograrse ejecutando las estadísticas en un centenar de ejecuciones independientes con el reentrenamiento de NS en cada ejecución. Esto es comprensible, pero muy difícil de aplicar debido a la longitud finita del PA inicial y su no estacionariedad.

Otra forma es obtener una estimación de la longitud óptima de la muestra de entrenamiento. Que yo sepa, nadie ha resuelto aún este problema de forma general...

¿Lo has conseguido?

En cuanto a los sistemas de negociación, sólo es posible el ajuste del historial. Las redes neuronales tienen dos problemas a la vez: el ajuste y el reentrenamiento. Y el reentrenamiento también se realiza sobre datos estacionarios.

Pero con las redes neuronales para entradas adecuadas es un poco más fácil cuando tratamos con algún paquete de redes neuronales o con una rejilla hecha por nosotros mismos, si utilizamos un método presentado por Leonid Velichkovski: dividimos los ejemplos de entrenamiento en dos muestras: muestras de entrenamiento y de prueba, y en el proceso de aprendizaje calculamos los resultados para ambas muestras, y enseñamos la rejilla sólo por la muestra de entrenamiento. En cuanto la mejora de los resultados en la muestra de prueba se detiene, es decir, los resultados no mejoran más, significa que la red ha sido suficientemente entrenada y debemos parar en este punto. De este modo, obtenemos una red que ha sido entrenada muy adecuadamente - no mejoraremos y fácilmente empeoraremos. En este caso no nos importa exactamente cuánto se reentrena o ajusta la red, ya que tenemos un extremo en la muestra de prueba.

Es mucho más difícil con el algoritmo genético integrado en el terminal, ya que no podemos calcular los resultados en las secciones de avance y detener la optimización a tiempo. Por eso hay que buscar manualmente los delanteros en los resultados de optimización ordenados por indicadores.

He seguido un camino ligeramente diferente:

1. Se ha descubierto la causa del sobreentrenamiento de la red neuronal y se ha eliminado. Es decir, si los ejemplos de entrenamiento son estacionarios y no contienen contradicciones, entonces mi algoritmo no está sobreentrenado, pero puede fácilmente subentrenarse si el número de ejemplos no es suficiente para la interpolación.

2. Fue más complicado con el ajuste. Pero el problema también resultó ser solucionable, ya que el ajuste depende principalmente de la calidad del aprendizaje, es decir, de la adecuación del sistema de recompensas y castigos, ya que, de lo contrario, el algoritmo seguirá el camino de la menor resistencia y aprenderá de la manera que le resulte más fácil, en lugar de la que realmente sea adecuada. Así que he eliminado estos mismos caminos de menor resistencia, es decir, he obligado al algoritmo genético a evaluar la calidad del cálculo de las probabilidades de los resultados, no el número de pips.

3. no estacionariedad. No podría superarse en absoluto, ya que sólo depende del mercado, no del algoritmo. Esto es lo único que supone un verdadero obstáculo para la calidad de las previsiones. Pero su impacto, si eliminamos los otros inconvenientes de la formación, ya no es tan grande como para interferir en los ingresos.

Razón de la queja: