Discussão do artigo "Uso de modelos ONNX em MQL5" - página 3

 

Revisões sobre aplicativos (objetos, modelos e ferramentas)

1. pesquisa sobre a aplicação de aprendizagem profunda em negociação algorítmica (2021)

A negociação algorítmica é uma das direções mais importantes em aplicações financeiras.

Em comparação com as estratégias de negociação tradicionais, os aplicativos de negociação algorítmica realizam previsões e arbitragem com maior eficiência e desempenho mais estável.

Vários estudos sobre modelos de negociação algorítmica usando aprendizagem profunda foram conduzidos para realizar previsões e análises de negociação.

Neste artigo, primeiramente, resumimos vários métodos de aprendizagem profunda que demonstraram bom desempenho em aplicativos de negociação algorítmica e apresentamos brevemente algumas aplicações de aprendizagem profunda em negociação algorítmica.

Em seguida, tentamos fornecer o mais recente aplicativo de instantâneo para negociação algorítmica com base na tecnologia de aprendizagem profunda e mostramos as diferentes implementações do modelo de negociação algorítmica desenvolvido.

Por fim, sugerimos algumas possíveis questões de pesquisa para o futuro.

Os principais objetivos deste artigo são fornecer um progresso abrangente da pesquisa de aplicativos de aprendizagem profunda em negociação algorítmica e beneficiar a pesquisa subsequente de sistemas de negociação de programas de computador.


2) Aprendizagem profunda para aplicativos financeiros: uma pesquisa (2020)

A inteligência computacional em finanças tem sido um tópico muito popular tanto no meio acadêmico quanto no setor financeiro nas últimas décadas.

Diversos estudos foram publicados, resultando em vários modelos. Enquanto isso, no campo do aprendizado de máquina (ML), o aprendizado profundo (DL) começou a receber muita atenção recentemente, principalmente devido ao seu desempenho superior ao dos modelos clássicos.

Atualmente, existem muitas implementações diferentes de DL, e o amplo interesse continua. As finanças são uma área específica em que os modelos de DL começaram a ganhar força; no entanto, o campo de jogo está bem aberto e ainda há muitas oportunidades de pesquisa.

Neste documento, tentamos fornecer um panorama do estado da arte dos modelos de DL desenvolvidos para aplicativos financeiros, até o momento.

Não apenas categorizamos os trabalhos de acordo com o subcampo pretendido em finanças, mas também os analisamos com base em seus modelos de DL.

Além disso, também procuramos identificar possíveis implementações futuras e destacamos o caminho para a pesquisa em andamento nesse campo.






3. previsão de séries temporais financeiras com aprendizagem profunda: uma revisão sistemática da 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.

Os pesquisadores de aprendizado de máquina (ML) criaram vários modelos e um grande número de estudos foi publicado de acordo com eles.

Dessa forma, existe uma quantidade significativa de pesquisas que abrangem o AM para estudos de previsão de séries temporais financeiras.

Ultimamente, os modelos de aprendizagem profunda (DL) começaram a aparecer no campo, com resultados que superam significativamente os equivalentes tradicionais de ML.

Embora haja um interesse crescente no desenvolvimento de modelos para pesquisas de previsão de séries temporais financeiras, há uma falta de artigos de revisão que se concentrem exclusivamente em DL para finanças.

Portanto, nossa motivação neste artigo é fornecer uma revisão abrangente da literatura sobre estudos de DL para implementações de previsão de séries temporais financeiras.

Não só categorizamos os estudos de acordo com suas áreas de implementação de previsão pretendidas, como previsão de índices, forex e commodities, mas também os agrupamos com base em suas escolhas de modelos de DL, como redes neurais convolucionais (CNNs), redes de crenças profundas (DBNs) e memória de longo e curto prazo (LSTM).

Também tentamos vislumbrar o futuro do campo, destacando os possíveis contratempos e oportunidades, para que os pesquisadores interessados possam se beneficiar





 

Rede neural CNN LSTM criada pelo 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 da execução no Jupyter Notebook
 
Você esperava algo diferente? Somente por meio de sua própria experiência e conhecimento é possível obter um resultado.
 
Vladimir Perervenko #:
Você esperava algo diferente? Somente por meio de sua própria experiência e conhecimento é possível obter um resultado.

Eu não esperava que isso fosse possível agora, a tecnologia é impressionante. Concordo que, mesmo com essas ferramentas, é necessário um trabalho sério, e a experiência é filha de erros difíceis....

 
Vladimir Perervenko #:

Transferir o pré-processamento para o MT não é um problema, eu realmente quero testar o sistema no testador MT, em python/R preciso escrever meu próprio testador, repleto de erros.

 
Vladimir Perervenko projeto de aprendizado de máquina consiste em três fases:
  • pré-processamento (muitas coisas)
  • Seleção de modelos, treinamento, otimização, etc.
  • implementação

O uso de modelos ONNX em µl resolve o problema de implementação. No entanto, nem todos os modelos e nem sempre são fáceis.

O treinamento e a otimização dos modelos são resolvidos por um processo separado em Python.

Mas, de todos os itens acima, o primeiro estágio é o mais demorado, altamente criativo e o mais importante. E é impossível realizá-la no µl. Não consideramos o dimensionamento primitivo como pré-processamento. E a sabedoria popular diz: "Lixo dentro - lixo fora". Há muito a ser desenvolvido e implementado adicionalmente na MCL para o uso completo do MO somente na MCL. É impossível abraçar o imenso, especialmente porque ele está em constante expansão...

É realmente tão ruim assim? Afinal de contas, muitos artigos já foram escritos sobre redes neurais. E há até alguns em que tudo é "simples".....

 
Vladimir Perervenko projeto de aprendizado de máquina consiste em três fases:
  • pré-processamento (um monte de coisas)

Mas de todas as fases acima, a primeira é a que consome mais tempo, é altamente criativa e é a mais importante. E é impossível implementá-la no µl.

Pelo que entendi, estamos falando sobre a dificuldade de calcular algumas funções de preço que atuam como recursos da rede.

Você pode dar um exemplo, talvez haja alguém aqui que apresente a implementação dessas coisas.

 
Denis Kirichenko #:

É realmente tão ruim assim? Quero dizer, muitos artigos já foram escritos sobre redes neurais. E há até alguns em que tudo é "simples" ....

Não é ruim. Tudo está em um estado muito embrionário em comparação com o desenvolvimento moderno da funcionalidade de pré-processamento.

Estou programando em R há bastante tempo. Tenho usado Python há pouco tempo e a principal coisa que notei ao estudar projetos (pacotes) de aprendizado de máquina em Python é a ausência quase completa de pré-processamento. A abordagem é que o modelo eliminará tudo. Isso não é ruim nem bom. Essa é a abordagem que se desenvolveu historicamente.

Em contraste, o R tem um enorme arsenal de pré-processamento com uma compreensão de sua finalidade.

Embora recentemente tenha havido um empréstimo mútuo de muitos desenvolvimentos úteis.

Quero dizer que é impossível cobrir a vastidão, e os desenvolvedores se esforçam para fazer isso. Para portar o que está escrito em C - sim, mas para reescrever tudo em MKL.....

Com relação ao ONNX. A área é nova, muito promissora, está se desenvolvendo rapidamente e tem demanda. Isso significa que haverá a possibilidade de entrar no ONNX e no pré-processamento. O TensorFlow já tem camadas de pré-processamento, embora simples, mas ainda assim. Você precisa experimentá-lo, ele será útil.

É claro que parece mais atraente usar o ONNX no treinamento, mas isso é apenas para Linux. Talvez os especialistas em WSL possam usá-lo de alguma forma.

 
Para usar isso, eu preferiria usar um padrão simples de engolfamento😀 complicado sem uma boa razão
 
É ótimo, graças a este artigo, que eu saiba como obter dados do mt5 para o python e como traduzir o modelo em python e, em seguida, obter o modelo do python para gerar um ea no mt5, não sei se esse modelo é melhor do que os modelos tradicionais, mas tenho certeza de que ele criará modelos diferentes.
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.