Привет вот код твоя задача улучшь модель обучения на максимум 


library(nnet)
library(mt5R)

data <- MT5.Quick_GetSymbol("EURUSD", iTF = 60, iRows = 1000, xts = FALSE)
close_prices <- data$Close

# Подготовка данных
look_back <- 10  # Количество предыдущих точек для использования в качестве входных данных
create_dataset <- function(dataset, look_back = 1) {
  dataX <- NULL
  dataY <- NULL
  for (i in 1:(length(dataset) - look_back)) {
    a <- dataset[i:(i + look_back - 1)]
    dataX <- rbind(dataX, a)
    dataY <- c(dataY, dataset[i + look_back])
  }
  return(list(X = dataX, Y = dataY))
}

dataset <- create_dataset(close_prices, look_back)
X <- dataset$X
Y <- dataset$Y

# Нормализация данных
normalize <- function(x) {
  return ((x - min(x)) / (max(x) - min(x)))
}
X_norm <- apply(X, 2, normalize)
Y_norm <- normalize(Y)

# Разделение на обучающий и тестовый наборы
set.seed(42)
train_size <- floor(0.8 * nrow(X_norm))
train_indices <- sample(seq_len(nrow(X_norm)), size = train_size)

X_train <- X_norm[train_indices, ]
Y_train <- Y_norm[train_indices]

X_test <- X_norm[-train_indices, ]
Y_test <- Y_norm[-train_indices]

# Обучение модели простой нейронной сети
nn_model <- nnet(X_train, Y_train, size = 10, linout = TRUE, maxit = 500)

# Прогнозирование на тестовых данных
predictions_norm <- predict(nn_model, X_test)

# Денормализация прогнозов
denormalize <- function(x_norm, x_original) {
  return (x_norm * (max(x_original) - min(x_original)) + min(x_original))
}
predictions <- denormalize(predictions_norm, Y)

# Оценка модели
mse <- mean((predictions - Y_test)^2)
cat("Среднеквадратичная ошибка на тестовых данных:", mse, "\n")

# Прогнозирование следующей цены
last_sequence <- tail(close_prices, look_back)
last_sequence_norm <- normalize(last_sequence)
next_price_norm <- predict(nn_model, t(last_sequence_norm))
next_price <- denormalize(next_price_norm, close_prices)

cat("Предсказанная следующая цена (nnet):", next_price, "\n")

вот вывод 

# weights:  121
initial  value 520.498500 
iter  10 value 2.040545
iter  20 value 0.692203
iter  30 value 0.662126
iter  40 value 0.659766
iter  50 value 0.658072
iter  60 value 0.657010
iter  70 value 0.655923
iter  80 value 0.654861
iter  90 value 0.653925
iter 100 value 0.652797
iter 110 value 0.651534
iter 120 value 0.650420
iter 130 value 0.647657
iter 140 value 0.645061
iter 150 value 0.643163
iter 160 value 0.640433
iter 170 value 0.637225
iter 180 value 0.634524
iter 190 value 0.633152
iter 200 value 0.628774
iter 210 value 0.627959
iter 220 value 0.623825
iter 230 value 0.623081
iter 240 value 0.621201
iter 250 value 0.620631
iter 260 value 0.619858
iter 270 value 0.618904
iter 280 value 0.618043
iter 290 value 0.616641
iter 300 value 0.615731
iter 310 value 0.614153
iter 320 value 0.612740
iter 330 value 0.610657
iter 340 value 0.609303
iter 350 value 0.607190
iter 360 value 0.605830
iter 370 value 0.604459
iter 380 value 0.603017
iter 390 value 0.601209
iter 400 value 0.600065
iter 410 value 0.598468
iter 420 value 0.596655
iter 430 value 0.594345
iter 440 value 0.592793
iter 450 value 0.591362
iter 460 value 0.590445
iter 470 value 0.589447
iter 480 value 0.588293
iter 490 value 0.587620
iter 500 value 0.587433
final  value 0.587433 
stopped after 500 iterations
Среднеквадратичная ошибка на тестовых данных: 0.3192049 
Предсказанная следующая цена (nnet): 1.091169