English Русский 中文 Deutsch 日本語 Português
preview
Experimentos con redes neuronales (Parte 6): El perceptrón como herramienta autosuficiente de predicción de precios

Experimentos con redes neuronales (Parte 6): El perceptrón como herramienta autosuficiente de predicción de precios

MetaTrader 5Sistemas comerciales | 9 agosto 2023, 14:20
396 1
Roman Poshtar
Roman Poshtar

Introducción

Hola a todos, queridos usuarios de la comunidad MQL5. Una de las técnicas de aprendizaje automático que pueden usarse para predecir los precios en el mercado es el perceptrón. El uso de un perceptrón puede suponer una herramienta útil para los tráders e inversores que busquen información adicional sobre los precios futuros en el mercado. 


Conceptos generales

Un perceptrón es una red neuronal simple formada por una o varias neuronas que pueden tomar datos de entrada, procesarlos y producir datos de salida. El perceptrón fue desarrollado por Frank Rosenblatt en 1957 y desde entonces ha encontrado una amplia aplicación en diversos campos, tales como el análisis financiero y la previsión de precios bursátiles.

El perceptrón puede utilizarse para resolver problemas de clasificación y regresión, incluida la previsión de precios. En el caso más sencillo, un perceptrón consta de una única neurona que acepta varias variables de entrada y produce una única señal de salida. Por ejemplo, para predecir el precio en el mercado de divisas pueden utilizarse los siguientes datos: tipo de cambio, volumen de transacciones, índice de precios de consumo y otros factores. Tras procesar dichos datos, la neurona produce una señal de salida, que es una previsión del tipo de cambio de la pareja de divisas.

Principio de funcionamiento del perceptrón

El perceptrón funciona según el principio del aprendizaje supervisado. Esto significa que el perceptrón se entrena con datos históricos que contienen información sobre los precios en el pasado, para determinar así las relaciones entre diversos factores y los precios en el mercado. Estos datos se usan para ajustar los pesos de la neurona que determinan la importancia de cada factor de entrada en la predicción de los precios bursátiles.

El perceptrón puede funcionar en modo de aprendizaje y en modo de predicción. En el modo de aprendizaje, el perceptrón toma datos históricos y precios reales del mercado de divisas y ajusta sus ponderaciones para minimizar el error en la predicción.

Ventajas del uso del perceptrón para la previsión de precios en los mercados de divisas

  1. Usar un perceptrón para predecir los precios de las divisas tiene varias ventajas. En primer lugar, el perceptrón puede adaptarse a los cambios del mercado y ajustar sus predicciones según los nuevos datos. Esto lo hace más eficaz que los métodos tradicionales de análisis de datos, como el análisis estadístico y las series temporales, que no siempre son capaces de adaptarse a los cambios del mercado.
  2. En segundo lugar, el perceptrón puede trabajar con un gran número de factores de entrada, lo cual permite considerar muchos factores diferentes que influyen en los precios. Esto puede lograr predicciones de precios más precisas que los métodos tradicionales de análisis de datos.
  3. En tercer lugar, el perceptrón puede entrenarse con grandes cantidades de datos, lo que nos permite utilizar muchos datos históricos para entrenar y predecir los precios.

No obstante, el uso de un perceptrón para la predicción de precios también presenta algunos inconvenientes. En primer lugar, el perceptrón puede resultar sensible a valores atípicos o errores en los datos, lo cual podría provocar que sus previsiones sean inexactas. En segundo lugar, necesitamos una gran cantidad de datos históricos para entrenar un perceptrón, y si los datos históricos no son suficientemente representativos de la situación actual del mercado, las predicciones del perceptrón podrían no ser exactas.

Además, al utilizar un perceptrón para la previsión de precios, puede surgir un problema de sobreentrenamiento, debido al cual el perceptrón se vuelve demasiado sensible a los datos históricos y no puede adaptarse a los nuevos cambios del mercado. Para combatir este problema, podemos utilizar diversas técnicas de regularización, como la regularización L1 y L2, que nos ayudarán a controlar los pesos de la neurona y evitar el sobreentrenamiento.

El perceptrón puede usarse en combinación con otras técnicas de previsión, como el modelo autorregresivo (ARIMA) o el suavizado exponencial, para obtener previsiones más precisas y fiables. Por ejemplo, podemos utilizar un perceptrón para predecir una tendencia de precios a largo plazo, y el ARIMA o el suavizado exponencial para previsiones a corto plazo.  Tenga en cuenta que los datos históricos usados para entrenar el perceptrón pueden no ser representativos de las condiciones actuales del mercado. En dichos casos, los resultados de las previsiones pueden no resultar exactos. Por lo tanto, debemos actualizar periódicamente el modelo para que pueda reflejar adecuadamente los cambios del mercado.


Parámetros del perceptrón para la optimización

Un perceptrón es uno de los tipos más sencillos de redes neuronales, y consta de una capa de entrada, varias capas ocultas y una capa de salida. Puede utilizarse para realizar diversas tareas, tales como la clasificación, la regresión o el tratamiento de imágenes. Sin embargo, para que el perceptrón funcione de forma eficaz, deberemos seleccionar correctamente sus parámetros.

Los parámetros de un perceptrón son los valores que establecen su estructura y comportamiento. Entre ellos se incluyen el número de capas ocultas, el número de neuronas en cada capa, la función de activación, la tasa de aprendizaje y muchos otros. Unos parámetros bien ajustados permiten al perceptrón obtener los mejores resultados posibles.

He aquí algunos parámetros del perceptrón que pueden optimizarse:

Número de capas ocultas

El número de capas ocultas define la complejidad del modelo. Si el modelo es demasiado simple, podría fallar, y si es demasiado complejo, podría producirse un sobreentrenamiento. Por consiguiente, el número de capas ocultas deberá elegirse de forma óptima según el problema a resolver.

Número de neuronas en cada capa

El número de neuronas de cada capa también influye en la complejidad del modelo. Un gran número de neuronas puede aumentar la precisión de las predicciones, pero también hará que el tiempo de entrenamiento sea mayor. Así, debemos elegir el número de neuronas óptimo para una tarea determinada.

A continuación le mostramos un ejemplo de regulación del número de neuronas en las capas de entrada, oculta y de salida. La biblioteca usada es NeuralNets:

int OnInit()
  {

// set the number of neurons in the input, hidden and output layers
int n_inputs = 2;
int n_hidden = 3;
int n_outputs = 1;

// create a perceptron object
CNeuralNet ann;

// add layers
ann.AddLayer(n_inputs);
ann.AddLayer(n_hidden, CNeuralNet::TANH);
ann.AddLayer(n_outputs, CNeuralNet::TANH);

// set learning parameters
ann.SetLearningRate(0.1);
ann.SetMomentum(0.9);
ann.SetMaxEpochs(1000);
ann.SetDesiredAccuracy(90);

// create arrays to store input and target values
double inputs[][2] = {{0,0}, {0,1}, {1,0}, {1,1}};
double targets[] = {0, 1, 1, 0};

// train the perceptron
ann.Train((double*)inputs, targets, 4);

// test the perceptron
double output;
ann.Compute((double*)inputs[0], output);
Print("0 XOR 0 = ", output);
ann.Compute((double*)inputs[1], output);
Print("0 XOR 1 = ", output);
ann.Compute((double*)inputs[2], output);
Print("1 XOR 0 = ", output);
ann.Compute((double*)inputs[3], output);
Print("1 XOR 1 = ", output);

}

En este ejemplo, crearemos un perceptrón con dos neuronas de entrada, tres neuronas ocultas y una neurona de salida. También fijaremos los parámetros de aprendizaje, tales como la tasa de aprendizaje, el impulso y el número máximo de épocas. A continuación, creamos arrays para almacenar los datos de entrada y los valores objetivo y entrenamos el perceptrón con estos datos. Después de probar el perceptrón con cuatro datos de entrada diferentes, mostramos los resultados en la pantalla.

Función de activación

La función de activación determina cómo debe responder una neurona a la entrada. Existen muchas funciones de activación, como la sigmoidea, la ReLU y la tangente hiperbólica. La elección de la función de activación también dependerá de la tarea que vayamos a realizar.

A continuación le mostramos un ejemplo de cómo utilizar las diferentes funciones de activación:

int OnInit()
  {

// set the number of neurons in the input and output layers
int n_inputs = 2;
int n_outputs = 1;

// create a perceptron object
CNeuralNet ann;

// add layers
ann.AddLayer(n_inputs);
ann.AddLayer(3, CNeuralNet::TANH);
ann.AddLayer(n_outputs, CNeuralNet::SIGMOID);

// set learning parameters
ann.SetLearningRate(0.1);
ann.SetMomentum(0.9);
ann.SetMaxEpochs(1000);
ann.SetDesiredAccuracy(90);

// create arrays to store input and target values
double inputs[][2] = {{0,0}, {0,1}, {1,0}, {1,1}};
double targets[] = {0, 1, 1, 0};

// train the perceptron
ann.Train((double*)inputs, targets, 4);

// test the perceptron
double output;
ann.Compute((double*)inputs[0], output);
Print("0 XOR 0 = ", output);
ann.Compute((double*)inputs[1], output);
Print("0 XOR 1 = ", output);
ann.Compute((double*)inputs[2], output);
Print("1 XOR 0 = ", output);
ann.Compute((double*)inputs[3], output);
Print("1 XOR 1 = ", output);

}

En este ejemplo, añadiremos una capa oculta de tres neuronas y elegiremos las funciones de activación "tanh" para la capa oculta y "sigmoide" para la capa de salida.

Tasa de aprendizaje

La tasa de aprendizaje determina la rapidez con la que la red neuronal cambiará sus pesos. Una tasa de aprendizaje demasiado alta puede provocar un desbordamiento, mientras que una tasa de aprendizaje demasiado baja puede provocar una curva de aprendizaje demasiado larga. Debemos elegir una tasa de aprendizaje óptima para la tarea en cuestión.

Regularización

La regularización es una técnica que se usa para evitar el sobreentrenamiento. Consiste en añadir términos adicionales a la función de error que penalizan al modelo por la presencia de pesos demasiado grandes. La regularización reduce la dispersión de las predicciones y mejora la capacidad generalizadora del modelo.

Inicialización de los pesos

La inicialización de los pesos es la asignación inicial de pesos para cada neurona del perceptrón. Una inicialización incorrecta de los pesos puede hacer que el modelo converja a un mínimo local de la función de error en lugar de a un mínimo global. Por ello, debemos seleccionar el método correcto para inicializar los pesos.

Tamaño del lote

El tamaño del lote determina cuántas muestras de datos se utilizarán por iteración de entrenamiento. Un tamaño de lote demasiado pequeño puede ralentizar el proceso de aprendizaje, y un tamaño demasiado grande puede provocar el desbordamiento de la memoria. Hay que elegir el tamaño de lote óptimo para la tarea específica.

Optimizador

Un optimizador es un algoritmo que se usa para actualizar los pesos del modelo durante el proceso de entrenamiento. Existen muchos optimizadores, como el descenso de gradiente estocástico, Adam y RMSprop. Cada optimizador tiene sus propias ventajas y desventajas, y elegir el mejor dependerá de la tarea que se vaya a realizar.

En general, los parámetros óptimos del perceptrón dependerán del problema a resolver, por ello, deberemos experimentar con distintos valores de los parámetros para encontrar el conjunto óptimo para una tarea concreta. El aprendizaje automático es un proceso de mejora iterativa de un modelo, por lo que unos parámetros bien ajustados serán la clave para lograr mejores resultados.



Transmisión de indicadores y precios al perceptrón para el análisis del mercado

Los indicadores son fórmulas matemáticas que se usan para analizar el mercado y ayudan a identificar tendencias y puntos de entrada y salida, así como niveles de apoyo y resistencia. Algunos de los indicadores más habituales que pueden utilizarse en el perceptrón para analizar el mercado de divisas son:

  • La media móvil (Moving Average);
  • El índice de fuerza relativa (RSI);
  • El oscilador estocástico (Stochastic Oscillator);
  • El indicador MACD (Moving Average Convergence Divergence).

La transmisión del precio de cierre y los indicadores al perceptrón permite al modelo incorporar distintos aspectos del análisis del mercado y crear previsiones de precio más precisas. Por ejemplo, un modelo podría usar una media móvil para determinar la tendencia general del mercado y, a continuación, utilizar un oscilador estocástico para determinar el punto de entrada en el mercado.

Sin embargo, la transmisión de un gran número de indicadores al perceptrón puede provocar un problema de redundancia de datos. La redundancia de datos puede dar lugar a un sobreentrenamiento del modelo y a una baja capacidad de generalización. Por ello, deberemos seleccionar los indicadores más relevantes para una tarea específica de análisis de mercado.

Además, la transmisión de datos al perceptrón requiere un preprocesamiento de datos adecuado. Por ejemplo, si los datos contienen valores omitidos, deberemos resolver este problema, por ejemplo, rellenando los valores omitidos con valores medios o eliminando las filas con valores omitidos.

Además, deberemos seleccionar los parámetros óptimos del perceptrón para que el modelo aprenda y prediga mejor los precios. Algunos de los parámetros clave a optimizar son:

  1. El número de neuronas en la capa oculta;
  2. La función de la activación de la neuronas;
  3. El número de épocas de aprendizaje;
  4. El tamaño de los mini-paquetes de datos para el entrenamiento.

La selección de los parámetros óptimos puede lograrse por ensayo y error o utilizando algoritmos de optimización como el algoritmo genético o el método de optimización basado en el gradiente.


Ejemplos y práctica

En el trabajo práctico de hoy, analizaremos un ejemplo de asesor experto basado en un perceptrón simple en el que se transmitirán como parámetros de entrada la distancia entre dos indicadores Moving Average. Transmitiremos la distancia entre el indicador Moving Average con valor 1 y el indicador Moving Average con valor 24; utilizaremos una media móvil exponencial con cierre mediante CLOSE, y normalizaremos previamente estos valores convirtiéndolos en puntos. 

Como parámetros de entrada usaremos la distancia en las velas 1,4,7,10, es decir, 4 parámetros. A la salida del perceptrón obtendremos 2 valores para abrir una posición de compra y el segundo valor para abrir una posición de venta. Estas condiciones no son una referencia, sino un ejemplo de uso del perceptrón. Nuestro ejemplo de hoy será el más simple. Vamos allá. 

Aquí ofreceremos todos los parámetros para la optimización y las pruebas forward para no repetirnos más en el texto:
  • Mercado Fórex;
  • Pareja de divisas EURUSD;
  • Periodo H1.
  • StopLoss 300 y TakeProfit 600. El TakeProfit en el asesor experto se establece como el StopLoss multiplicado por 2;
  • Modo de optimización y prueba: "Solo precios de apertura", "Rápido (algoritmo genético)" y "Máximo del criterio complejo". Resulta esencial usar el modo "Máximo del criterio complejo", ya que ha mostrado resultados más estables y rentables en comparación con "Rentabilidad Máxima";
  • Rango de optimización 3 años. Del 2019.04.19 al 2022.04.19 . 3 años no es ningún tipo de criterio. Puede probar más o menos por su cuenta;
  • Rango de prueba forward de 1 año. Del 2022.04.19 al 2023.04.19.
  • Depósito inicial de 10000 unidades;
  • Apalancamiento 1:500.

Optimización:

Parámetros de optimización del asesor experto:

Optimización

Resultados de la optimización del asesor:

Optimización


Optimización

A continuación figuran los 5 mejores resultados de la primera prueba forward:

Prueba 1


Prueba 2


Prueba 3


Prueba 4


Prueba 5


Conclusión

Como conclusión, podemos afirmar que el perceptrón es una poderosa herramienta para predecir los precios de las divisas. Podemos utilizarlo como herramienta independiente o en combinación con otras técnicas de análisis de datos. No obstante lo dicho, si queremos obtener los mejores resultados al utilizar el perceptrón para predecir los precios de las divisas, deberemos considerar sus limitaciones y tener en cuenta el contexto de los datos históricos. También será necesario tener ciertos conocimientos y experiencia en el comercio de divisas y comprender el alto riesgo que implica el trading con estas.

Gracias por su atención, amigos, ¡y hasta pronto!


Traducción del ruso hecha por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/ru/articles/12515

Archivos adjuntos |
Perceptron_MA_4.mq5 (39.78 KB)
NeuralNets.mqh (7.83 KB)
Enrique Enguix
Enrique Enguix | 12 ago. 2023 en 14:47
Gestión de capital en el trading Gestión de capital en el trading
En este artículo, analizaremos varias formas nuevas de crear sistemas de gestión de capital e identificaremos sus principales características. Hoy en día, existen estrategias de gestión de capital para todos los gustos. Asimismo, intentaremos estudiar varias formas de gestionar el capital, basándonos para ello en diferentes modelos matemáticos de crecimiento.
Aprendiendo de las compañías de Prop-Trading (Parte 1) - Introducción Aprendiendo de las compañías de Prop-Trading (Parte 1) - Introducción
En este artículo introductorio, compartiremos algunas de las lecciones que se pueden aprender de las pruebas realizadas en las empresas de prop-trading. Esto resulta especialmente actual para los principiantes y aquellos que luchan por encontrar su lugar en el mundo del trading. El siguiente artículo se centrará en la implementación del código.
Teoría de categorías en MQL5 (Parte 7): Dominios múltiples, relativos e indexados Teoría de categorías en MQL5 (Parte 7): Dominios múltiples, relativos e indexados
La teoría de categorías es un apartado diverso y en expansión de las matemáticas, que solo recientemente ha comenzado a ser trabajado por la comunidad MQL5. Esta serie de artículos tiene por objetivo repasar algunos de sus conceptos para crear una biblioteca abierta y seguir usando este maravilloso apartado en la creación de estrategias comerciales.
Experimentos con redes neuronales (Parte 5): Normalización de parámetros de entrada para su transmisión a una red neuronal Experimentos con redes neuronales (Parte 5): Normalización de parámetros de entrada para su transmisión a una red neuronal
Las redes neuronales lo son todo. Vamos a comprobar en la práctica si esto es así. MetaTrader 5 como herramienta autosuficiente para el uso de redes neuronales en el trading. Una explicación sencilla.