¿Qué alimentar a la entrada de la red neuronal? Tus ideas... - página 50

 
Ivan Butko #:



En el ejemplo de uno de los conjuntos: Se puede ver que las tomas se toman cortas, y los codos son más fuertes. Si se sobrepone, deja "mocos" verdes en forma de caída de la renta variable. Pero si encuentra un buen punto en el gráfico, puede cerrar a tiempo y mostrar así cierta estabilidad

Optimización - año: 2021-2022, EURUSD H1

Gracias por tus investigaciones y desarrollos (por compartirlos) - muy interesantes.... releyéndolos (yo mismo estoy en el tema) me dan ganas de seguir haciendo ejercicios con ellos (NS)... :-)

 
Roman Shiredchenko #:

Gracias por sus investigaciones y desarrollos (por compartirlos) - muy interesante.... releyendo (yo mismo en el tema), hay un deseo de continuar los ejercicios con ellos (NS) ... :-)







Gracias por sus comentarios. Tengo una rama de NS simple, hecho en mi rodilla, sobre la base de artículos sencillos aquí, https://www.mql5.com/ru/articles/497, aquí más complicado https://www.mql5.com/ru/articles/5486, y éste a veces uso https://www.mql5.com/ru/articles/830 Asesores Expertos, que modifico para adaptarse a las ideas - también desde allí. A pesar de que no hay una solución segura, los experimentos son fascinantes.


Нейронные сети - от теории к практике
Нейронные сети - от теории к практике
  • www.mql5.com
В наше время, наверное, каждый трейдер слышал о нейронных сетях и знает, как это круто. В представлении большинства те, которые в них разбираются, это какие-то чуть ли не сверхчеловеки. В этой статье я постараюсь рассказать, как устроена нейросеть, что с ней можно делать и покажу практические примеры её использования.
 
Ivan Butko #:

Lo que también es potencialmente bueno es el tamaño intradía de las operaciones: al menos no son operaciones de una sola vela, sino que a veces se extienden en el tiempo. Además, las operaciones se negocian en ambos sentidos, COMPRA y VENTA. El eterno problema de la aproximación (si utilizo el término correctamente) es que NS elige qué operaciones ganan más y construye pesos para ellas. Como resultado - si la tendencia en la sección optimizada es bajista, y un tercio de su sección es alcista, entonces se produce un hundimiento global en el avance o retroceso.

Creo que no se trata del eterno problema de la aproximación, sino del eterno problema de la clasificación en la capa de salida. Es bueno que no se manifieste en este caso.

 
Andrey Dik #:

Creo que no se trata de un problema perenne de aproximación, sino de un problema perenne de clasificación en la capa de salida. Es bueno que no aparezca en este caso.





¿Cuál es el mecanismo del fenómeno? ¿Por qué el optimizador MT5 elige tales pesos que se niegan a negociar en comprar en un período a largo plazo (en el que hay muchas tendencias alcistas - este es el tiempo de inactividad, el beneficio potencial, es necesario explorar esta área), y el comercio sólo en vender. No todos los conjuntos, pero los primeros, que parecen ser los más importantes. Cuando se inicia, sólo hay ventas. Aunque los conjuntos que están abajo cotizan en ambos sentidos, pero mal.

 
Ivan Butko #:





¿Cuál es el mecanismo del fenómeno? ¿Por qué el optimizador MT5 elige tales pesos que se niegan a operar en compra en un período a largo plazo (en el que hay un montón de tendencias alcistas - este es el tiempo ocioso, el beneficio potencial, es necesario explorar esta área), y el comercio sólo en venta. No todos los conjuntos, pero los principales, que son los más importantes. Cuando se inicia, sólo hay ventas. Aunque los conjuntos que están en la parte inferior están negociando en ambos sentidos, pero mal.

El mecanismo es bastante sencillo.

El primer factor: veo que el entrenamiento se realiza en EURUSD, y en él las ventas son más rentables a igualdad de lo demás (lo he notado muchas veces en diferentes TSs).

El segundo factor, más importante: la función de fitness no tiene en cuenta la relación de compra / venta, las señales "rollo" hacia la venta como más eficaz y, finalmente, conduce a una ausencia total de compra (en otros símbolos puede haber un rollo hacia la compra).

Es decir, tenemos que entender qué es exactamente lo que la NN está aprendiendo, y el criterio de su aprendizaje es siempre la función de aptitud. El paso lógico es multiplicar el criterio personalizado por la relación min/max, donde min es el número mínimo de operaciones de compra o venta y max - viceversa, respectivamente.

FF = Fcustom * MathMin (buys, sells) / MathMax (buys, sells);

Ahora vemos que si hay un 100% de asimetría, tal FF será igual a 0, y en igualdad de condiciones, el mejor valor será aquel en el que el número de direcciones en ambos sentidos sea el mismo.

Por supuesto, esto no es la panacea, pero merece la pena intentarlo.

Por cierto, ésta es una de las maneras de cambiar la forma de la superficie FF de modo que el óptimo deseado sea global para una interpretación inequívoca.

Para estimular adicionalmente el aprendizaje hacia un mayor número de operaciones, puede hacer lo siguiente:

if (FF == 0) FF = -DBL_MAX;
 
Estaba hojeando en algún sitio antiguo, un artículo de hace 10 años sobre redes neuronales en forex. Sugieren introducir...











el ángulo entre Close N velas atrás y el precio actual. Es una locura, ¡pero me gusta! No lo he probado todavía, pero definitivamente lo intentaré, tan pronto como entienda cómo encontrar este maldito ángulo La segunda variante es también con pre-podvypodvert, se me acaba de ocurrir: El precio puede caer o subir dos velas seguidas.

Normalmente, esto significa alimentar las entradas con números normalizados adyacentes. Pero, como estamos usando una ventana offset, cortar el valor del impulso al final afectará dramáticamente al número normalizado, literalmente en un paso una vela con el número 0.7 se convertirá en -0.3, aunque el cambio en la nueva vela puede ser cero. Este es el problema con las ventanas.

Y, como he mencionado anteriormente, los pesos tienen un problema similar, cuando introducimos una secuencia de números, que también se corta al final de un nuevo paso y se añade un nuevo valor - puede que nada cambie en el gráfico, pero los pesos son diferentes y cambian la señal drásticamente. En el ejemplo de un número normalizado por entrada podemos hacer uno adicional - es latasa de cambio.

Después de todo, la tendencia puede empezar a desvanecerse, los precios pueden empezar a disminuir gradualmente, y en la ventana de entrada cualquier aumento será lo contrario - mostrando valores cada vez mayores y en aumento. La entrada adicional reflejará la aceleración - si está ahí, es más de 0 a 1, si se está desvaneciendo, es de 0 a -1.
 
Ivan Butko #:
Todavía no lo he probado, pero definitivamente lo haré una vez que averigüe cómo encontrar este maldito ángulo

Calcularlo como un porcentaje - de cero al precio de apertura de la barra actual - en esencia, será un análogo.

 
Aleksey Vyazmikin #:

Cuenta en porcentajes - desde cero hasta el precio de apertura de la barra actual - esencialmente el análogo será.

Gracias por la respuesta, voy a pensar en ello
 



El único reentrenamiento que funciona en mi memoria. Por lo general, después de un monstruoso factor de recuperación de 68, el saldo se sumerge hasta el fondo en el delantero.

Pero aquí se redujo ligeramente, y luego subió durante todo un año. Backtest es un desastre (que está en la parte posterior, fuera de la optimización), no he sido capaz de repetirlo en otros pares y períodos. Hasta ahora.

Así que dejémoslo en una anomalía curiosa del EURUSD. Al mismo tiempo, las operaciones son enormes, incluso intradía, y el spread no tiene ningún efecto (Zig es torpe y lento). Eh, un sueño


 

Me las arreglé para averiguar cómo alimentar un ángulo a la entrada.


No puedo decir nada sobre las ventajas, los resultados son diferentes para diferentes terminales.



Parece depender de las cotizaciones, spreads y comisiones. Pero definitivamente es mejor que los incrementos de precio. Me gustaría señalar una peculiaridad: los valores altos del ángulo no indican una tendencia fuerte o larga, sino un impulso - un salto o fallo de precio extremadamente brusco, grande y a corto plazo.

Mientras que una ventana normalizada (otro tipo de datos de entrada) incluso con un ángulo extremadamente agudo (movimiento casi plano) mostrará valores altos, si el último precio es más alto que todos los demás. Es decir, el ángulo tiene sus ventajas informativas. Además, es similar a una función no lineal cuando los valores extremos se anulan. De hecho, nunca obtendremos un valor de 0,95 o 0,99.

Dicen que el ángulo es casi recto, equivale a que el precio ha volado hasta la estratosfera. En general, hay más elementos de reflexión sobre el ángulo.


    int i = 0;
    double radians, angle, C1, C5, C20, C80;
    
    C1  = iClose(NULL, PERIOD_CURRENT, 1);  
    C5  = iClose(NULL, PERIOD_CURRENT, 5); 
    C20 = iClose(NULL, PERIOD_CURRENT, 20); 
    C80 = iClose(NULL, PERIOD_CURRENT, 80);   
    
    radians = atan(   ((C1 - C5) / _Point) / 5);   // Вычисляем арктангенс высоты к длине основания в радианах
    angle = radians * 180 / M_PI / 90;             // Конвертируем радианы в градусы и преобразуем в диапазон [-1..1]
    inputs[i] = angle;       i++; 
    
    radians = atan(   ((C1 - C20) / _Point) / 20); 
    angle = radians * 180 / M_PI / 90; 
    inputs[i] = angle;       i++; 
    
    radians = atan(   ((C1 - C80) / _Point) / 80); 
    angle = radians * 180 / M_PI / 90; 
    inputs[i] = angle;       i++;  

    //  Print("Угол: ", angle, " градусов");