Discusión sobre el artículo "Uso de modelos ONNX en MQL5" - página 3

 

Reseñas sobre aplicaciones (objetos, modelos y herramientas)

1. estudio sobre la aplicación del aprendizaje profundo en el comercio algorítmico (2021)

El trading algorítmico es una de las direcciones más preocupantes en las aplicaciones financieras.

En comparación con las estrategias de trading tradicionales, las aplicaciones de trading algorítmico realizan previsiones y arbitraje con mayor eficiencia y un rendimiento más estable.

Se han realizado numerosos estudios sobre modelos de negociación algorítmica que utilizan el aprendizaje profundo para realizar previsiones y análisis de negociación.

En este artículo, resumimos en primer lugar varios métodos de aprendizaje profundo que han mostrado un buen rendimiento en aplicaciones de negociación algorítmica, y presentamos brevemente algunas aplicaciones del aprendizaje profundo en la negociación algorítmica.

A continuación, tratamos de ofrecer la última instantánea de una aplicación de negociación algorítmica basada en la tecnología de aprendizaje profundo, y mostramos las diferentes implementaciones del modelo de negociación algorítmica desarrollado.

Por último, se sugieren algunas posibles cuestiones de investigación en el futuro.

Los objetivos principales de este documento son proporcionar un progreso de investigación exhaustivo de las aplicaciones de aprendizaje profundo en el trading algorítmico, y beneficiar la investigación posterior de los sistemas de trading de programas informáticos.


2. Aprendizaje profundo para aplicaciones financieras: un estudio (2020)

La inteligencia computacional en las finanzas ha sido un tema muy popular tanto para el mundo académico como para la industria financiera en las últimas décadas.

Se han publicado numerosos estudios que han dado lugar a diversos modelos. Mientras tanto, dentro del campo del aprendizaje automático (AM), el aprendizaje profundo (AD) ha empezado a recibir mucha atención recientemente, sobre todo debido a su rendimiento superior al de los modelos clásicos.

Hoy en día existen muchas implementaciones diferentes de DL, y el interés por este campo no cesa. Las finanzas son un área particular en la que los modelos de AD han empezado a ganar terreno, pero el campo de juego está muy abierto y todavía existen muchas oportunidades de investigación.

En este artículo intentamos ofrecer una instantánea del estado actual de los modelos de AD desarrollados para aplicaciones financieras.

No sólo clasificamos los trabajos según el subcampo de las finanzas al que se destinan, sino que también los analizamos en función de sus modelos de AD.

Además, también hemos tratado de identificar posibles implementaciones futuras y hemos destacado el camino para la investigación en curso dentro de este campo.






3. Predicción de series temporales financieras con aprendizaje profundo : una revisión sistemática de la literatura: 2005-2019 (2019)

Financial time series forecasting is, without a doubt, the top choice of computational intelligence for finance researchers from both academia and financial industry due to its broad implementation areas and substantial impact.

Los investigadores de Machine Learning (ML) han ideado varios modelos y se ha publicado un gran número de estudios en consecuencia.

Como tal, existe una cantidad significativa de encuestas que cubren ML para estudios de pronóstico de series temporales financieras.

Últimamente, los modelos de aprendizaje profundo (Deep Learning, DL) han empezado a aparecer en este campo, con resultados que superan significativamente a los modelos de ML tradicionales.

A pesar de que existe un creciente interés en el desarrollo de modelos para la investigación de predicción de series temporales financieras, hay una falta de artículos de revisión que se centraron exclusivamente en DL para las finanzas.

Por lo tanto, nuestra motivación en este artículo es proporcionar una revisión exhaustiva de la literatura sobre estudios de AD para implementaciones de previsión de series temporales financieras.

No sólo hemos clasificado los estudios en función de las áreas de aplicación de las previsiones, como índices, divisas o materias primas, sino que también los hemos agrupado en función de los modelos de AD elegidos, como las redes neuronales convolucionales (CNN), las redes profundas de creencias (DBN) o las memorias a largo y corto plazo (LSTM).

También intentamos vislumbrar el futuro de este campo, destacando los posibles contratiempos y oportunidades, para que los investigadores interesados puedan beneficiarse.





 

Red neuronal CNN LSTM creada por CHATGPT

# Import necessary libraries
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import MinMaxScaler
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LSTM, Dropout, Conv1D, MaxPooling1D, Flatten

# Load the dataset
df = pd.read_csv('https://query1.finance.yahoo.com/v7/finance/download/AAPL?period1=1411958400&period2=1636521600&interval=1d&events=history&includeAdjustedClose=true')

# Preprocess the data
scaler = MinMaxScaler(feature_range=(0, 1))
scaled_data = scaler.fit_transform(df['Close'].values.reshape(-1, 1))

# Split the data into training and testing sets
training_size = int(len(scaled_data) * 0.7)
testing_size = len(scaled_data) - training_size
training_data = scaled_data[0:training_size, :]
testing_data = scaled_data[training_size:len(scaled_data), :]

# Function to create input features and labels for model
def create_dataset(dataset, look_back):
    data_X, data_Y = [], []
    for i in range(len(dataset)-look_back-1):
        a = dataset[i:(i+look_back), 0]
        data_X.append(a)
        data_Y.append(dataset[i + look_back, 0])
    return np.array(data_X), np.array(data_Y)

# Create input features and labels for training and testing sets
look_back = 60
X_train, y_train = create_dataset(training_data, look_back)
X_test, y_test = create_dataset(testing_data, look_back)

# Reshape the input data for CNN-LSTM model
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1))
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))

# Define and compile the CNN-LSTM model
model = Sequential()

model.add(Conv1D(filters=32, kernel_size=5, activation='relu', input_shape=(look_back, 1)))
model.add(MaxPooling1D(pool_size=2))
model.add(Dropout(0.2))

model.add(Conv1D(filters=64, kernel_size=5, activation='relu'))
model.add(MaxPooling1D(pool_size=2))
model.add(Dropout(0.2))

model.add(LSTM(50, return_sequences=True))
model.add(Dropout(0.2))
model.add(LSTM(50))
model.add(Dropout(0.2))

model.add(Dense(1))

model.compile(loss='mean_squared_error', optimizer='adam')

# Train the model on the training data
model.fit(X_train, y_train, epochs=100, batch_size=32)

# Use the model to make predictions on the testing data
y_pred = model.predict(X_test)

# Rescale the data back to original values
y_pred = scaler.inverse_transform(y_pred)
y_test = scaler.inverse_transform(y_test.reshape(-1, 1))

# Plot the original and forecasted values
plt.plot(y_test, label='Actual')
plt.plot(y_pred, label='Predicted')
plt.xlabel('Time')
plt.ylabel('Close Price')
plt.title('AAPL Stock Price Forecast')
plt.legend()
plt.show()

Resultado de la ejecución en Jupyter Notebook
 
¿Esperabas algo diferente? Sólo a través de la propia experiencia y conocimiento puede haber un resultado.
 
Vladimir Perervenko #:
¿Esperabas algo diferente? Sólo a través de la propia experiencia y conocimiento puede haber un resultado.

Más bien no esperaba que algo así fuera posible ahora, la tecnología es impresionante. Estoy de acuerdo en que incluso con tales herramientas, se requiere un trabajo serio, y la experiencia es el hijo de los errores duros....

 
Vladimir Perervenko #:

Transferir el preprocesamiento a MT no es un problema, realmente quiero probar el sistema en MT tester, en python/R necesito escribir mi propio tester, plagado de errores.

 
Vladimir Perervenko proyecto de aprendizaje automático consta de tres fases:
  • preprocesamiento (muchas cosas)
  • selección del modelo, entrenamiento, optimización, etc.
  • implementación

El uso de modelos ONNX en µl resuelve el problema de la implementación. Sin embargo, no todos los modelos y no es del todo fácil.

El entrenamiento y la optimización de los modelos se resuelven mediante un proceso independiente en Python.

Pero de todo lo anterior, la primera etapa es la que más tiempo consume, la más creativa y la más importante. Y es imposible realizarla en µl. No consideramos el escalado primitivo como preprocesamiento. Y la sabiduría popular dice: "Basura dentro - basura fuera". Hay demasiadas cosas que desarrollar e implementar adicionalmente en la ACM para utilizar plenamente la MO sólo en la ACM. Es imposible abarcar lo inmenso, sobre todo porque está en constante expansión...

¿Es realmente tan malo? Al fin y al cabo, ya se han escrito muchos artículos sobre redes neuronales. E incluso hay algunos en los que todo es "simple".....

 
Vladimir Perervenko proyecto de aprendizaje automático consta de tres fases:
  • preprocesamiento (un montón de cosas)

Pero de todas ellas, la primera fase es la que más tiempo consume, la más creativa y la más importante. Y es imposible implementarla en µl.

Por lo que entiendo, estamos hablando de la dificultad de calcular algunas funciones de precio que actúan como características de la red.

¿Puedes dar un ejemplo, tal vez habrá aquí quien presente una implementación de estas cosas.

 
Denis Kirichenko #:

¿Es realmente tan malo? Ya se han escrito muchos artículos sobre redes neuronales. E incluso hay algunos en los que todo es "sencillo"....

No está mal. Todo está en un estado muy embrionario comparado con el desarrollo moderno de la funcionalidad de preprocesamiento.

Llevo bastante tiempo programando en R. He estado usando Python no hace mucho tiempo y lo principal que he notado mientras estudiaba proyectos de aprendizaje automático (paquetes) en Python es la ausencia casi completa de preprocesamiento. El enfoque es que el modelo lo sacará todo. Esto no es ni malo ni bueno. Es el enfoque que se ha desarrollado históricamente.

En contraste, R tiene un enorme arsenal de preprocesamiento con una comprensión de para qué sirve todo esto.

Aunque recientemente ha habido un préstamo mutuo de muchos desarrollos útiles.

Quiero decir que es imposible abarcar la inmensidad, y los desarrolladores se esfuerzan por hacerlo. Portar lo que está escrito en C - sí, pero reescribirlo todo en MKL.....

En cuanto a ONNX. El área es nueva, muy prometedora, se desarrolla rápidamente y tiene demanda. Esto significa que habrá una posibilidad de conducir en ONNX y preprocesamiento. TensorFlow ya tiene capas de preprocesamiento, aunque simple, pero aún así. Tienes que probarlo, será muy útil.

Por supuesto parece más atractivo usar ONNX en el entrenamiento, pero esto es sólo para Linux. Quizás los expertos en WSL puedan usarlo de alguna manera.

 
Para usar esto prefiero usar un simple patrón envolvente😀 complicado sin una buena razón
 
es genial gracias a este artículo que sé cómo obtener datos de mt5 a python y traling modelo en python a continuación, obtener el modelo de python para generar ea en mt5, no sé si este modelo más grande que los modelos tradicionales, pero estoy seguro de que va a hacer diferentes modelos. es el futuro
How to use ONNX models in MQL5
How to use ONNX models in MQL5
  • www.mql5.com
ONNX (Open Neural Network Exchange) is an open format built to represent machine learning models. In this article, we will consider how to create a CNN-LSTM model to forecast financial timeseries. We will also show how to use the created ONNX model in an MQL5 Expert Advisor.