Discussione sull’articolo "Come utilizzare i modelli ONNX in MQL5" - pagina 3

 

Recensioni sulle applicazioni (oggetti, modelli e strumenti)

1. indagine sull'applicazione del deep learning nel trading algoritmico (2021)

Il trading algoritmico è una delle direzioni più interessate nelle applicazioni finanziarie.

Rispetto alle strategie di trading tradizionali, le applicazioni di trading algoritmico eseguono previsioni e arbitraggi con maggiore efficienza e prestazioni più stabili.

Sono stati condotti numerosi studi sui modelli di trading algoritmico che utilizzano il deep learning per eseguire previsioni e analisi di trading.

In questo articolo, riassumiamo innanzitutto diversi metodi di deep learning che hanno mostrato buone prestazioni nelle applicazioni di trading algoritmico e introduciamo brevemente alcune applicazioni del deep learning nel trading algoritmico.

In seguito, cerchiamo di fornire l'ultima applicazione istantanea per il trading algoritmico basata sulla tecnologia del deep learning e mostriamo le diverse implementazioni del modello di trading algoritmico sviluppato.

Infine, vengono suggeriti alcuni possibili temi di ricerca per il futuro.

L'obiettivo principale di questo articolo è quello di fornire un quadro completo dei progressi della ricerca sulle applicazioni del deep learning nel trading algoritmico e di trarne beneficio per le successive ricerche sui sistemi di trading basati su programmi informatici.


2. Apprendimento profondo per le applicazioni finanziarie: uno studio (2020)

Negli ultimi decenni l'intelligenza computazionale nella finanza è stata un argomento molto popolare sia per il mondo accademico che per l'industria finanziaria.

Sono stati pubblicati numerosi studi che hanno dato vita a diversi modelli. Nel frattempo, nell'ambito del Machine Learning (ML), il Deep Learning (DL) ha iniziato a ricevere molta attenzione di recente, soprattutto grazie alle sue prestazioni superiori rispetto ai modelli classici.

Oggi esistono molte implementazioni diverse di DL e l'interesse è in continua crescita. La finanza è un'area particolare in cui i modelli DL hanno iniziato a farsi strada, ma il campo di gioco è ancora aperto e le opportunità di ricerca sono ancora molte.

In questo lavoro abbiamo cercato di fornire un'istantanea dello stato dell'arte dei modelli DL sviluppati per le applicazioni finanziarie, ad oggi.

Non solo abbiamo classificato i lavori in base al loro sottocampo di applicazione nella finanza, ma li abbiamo anche analizzati in base ai loro modelli DL.

Inoltre, abbiamo anche cercato di identificare le possibili implementazioni future e di evidenziare il percorso della ricerca in corso nel settore.






3. Previsione delle serie temporali finanziarie con l'apprendimento profondo: una revisione sistematica della letteratura: 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.

I ricercatori di Machine Learning (ML) hanno ideato diversi modelli e di conseguenza è stato pubblicato un gran numero di studi.

Esiste quindi una quantità significativa di studi sul ML per la previsione delle serie temporali finanziarie.

Ultimamente, i modelli di Deep Learning (DL) hanno iniziato a fare la loro comparsa in questo campo, con risultati che superano in modo significativo le controparti tradizionali del ML.

Nonostante il crescente interesse per lo sviluppo di modelli per la ricerca sulle previsioni delle serie temporali finanziarie, mancano articoli di revisione incentrati esclusivamente sul DL per la finanza.

Pertanto, la nostra motivazione in questo lavoro è quella di fornire una revisione completa della letteratura sugli studi di DL per le implementazioni di previsione delle serie temporali finanziarie.

Non solo abbiamo classificato gli studi in base alle aree di implementazione delle previsioni, come ad esempio le previsioni di indici, forex e materie prime, ma li abbiamo anche raggruppati in base alle scelte dei modelli DL, come le reti neurali convoluzionali (CNN), le reti di credenza profonde (DBN) e la memoria a breve termine (LSTM).

Abbiamo anche cercato di immaginare il futuro del settore, evidenziando i possibili problemi e le opportunità, in modo che i ricercatori interessati possano trarne beneficio.





 

Rete neurale CNN LSTM creata da 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()

Risultato dell'esecuzione in Jupyter Notebook
 
Vi aspettavate qualcosa di diverso? Solo attraverso la propria esperienza e conoscenza si può ottenere un risultato.
 
Vladimir Perervenko #:
Vi aspettavate qualcosa di diverso? Solo attraverso la propria esperienza e conoscenza si può ottenere un risultato.

Non mi aspettavo che una cosa del genere fosse possibile ora, la tecnologia è impressionante. Sono d'accordo sul fatto che anche con questi strumenti è necessario un lavoro serio, e l'esperienza è figlia di errori duri....

 
Vladimir Perervenko #:

Trasferire la preelaborazione a MT non è un problema, voglio davvero testare il sistema con il tester di MT, in python/R devo scrivere il mio tester, pieno di errori.

 
Vladimir Perervenko progetto di apprendimento automatico si compone di tre fasi:
  • preelaborazione (molte cose)
  • selezione del modello, addestramento, ottimizzazione, ecc.
  • implementazione

L'uso dei modelli ONNX in µl risolve il problema dell'implementazione. Tuttavia, non tutti i modelli e non sono del tutto semplici.

L'addestramento e l'ottimizzazione dei modelli sono risolti con un processo separato in Python.

Ma di tutto ciò, la prima fase è quella che richiede più tempo, più creativa e più importante. Ed è impossibile realizzarla su µl. Non consideriamo la scalatura primitiva come una preelaborazione. E la saggezza popolare dice: "Garbage in - rubbish out". C'è troppo da sviluppare e implementare in MCL per poter utilizzare appieno il MO solo su MCL. È impossibile abbracciare l'immenso, soprattutto perché è in continua espansione...

È davvero così grave? Dopo tutto, sono già stati scritti molti articoli sulle reti neurali. E ce ne sono anche alcuni in cui tutto è "semplice".....

 
Vladimir Perervenko progetto di apprendimento automatico si compone di tre fasi:
  • preelaborazione (molte cose)

Ma di tutte queste fasi, la prima è quella che richiede più tempo, più creativa e più importante. Ed è impossibile implementarla su µl.

Per quanto ho capito, stiamo parlando della difficoltà di calcolare alcune funzioni di prezzo che agiscono come caratteristiche della rete.

Può fare un esempio, forse ci sarà chi presenterà un'implementazione di queste cose.

 
Denis Kirichenko #:

È davvero così grave? Voglio dire, sono già stati scritti molti articoli sulle reti neurali. E ce ne sono anche alcuni in cui tutto è "semplice"....

Non è male. Tutto è in uno stato molto embrionale rispetto allo sviluppo moderno delle funzionalità di preprocessing.

Programmo in R da molto tempo. Ho iniziato a usare Python non molto tempo fa e la cosa principale che ho notato studiando i progetti (pacchetti) di apprendimento automatico in Python è la quasi totale assenza di preelaborazione. L'approccio è che il modello elimina tutto. Questo non è né un male né un bene. È l'approccio che si è sviluppato storicamente.

Al contrario, R dispone di un enorme arsenale di preelaborazione con una comprensione di ciò che serve.

Anche se recentemente c'è stato un prestito reciproco di molti sviluppi utili.

Intendo dire che è impossibile coprire la vastità, e gli sviluppatori si sforzano di farlo. Portare ciò che è scritto in C - sì, ma riscrivere tutto in MKL.....

Per quanto riguarda ONNX. L'area è nuova, molto promettente, in rapido sviluppo e molto richiesta. Ciò significa che ci sarà la possibilità di entrare in ONNX e nella preelaborazione. TensorFlow dispone già di livelli di preelaborazione, anche se semplici, ma comunque. Dovete provarlo, vi tornerà utile.

Ovviamente sembra più interessante usare ONNX per l'addestramento, ma questo è solo per Linux. Forse gli esperti di WSL possono usarlo in qualche modo.

 
Per utilizzare questo modello preferirei utilizzare un semplice engulfing pattern😀 complicato senza alcuna ragione.
 
è fantastico grazie a questo articolo che so come ottenere i dati da mt5 a python e come tracciare il modello in python e poi ottenere il modello da python per generare l'ea su mt5, non so se questo modello è più grande dei modelli tradizionali ma sono sicuro che creerà modelli diversi. è il 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.