Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 3404

 
Rorschach #:

Внимание вопрос. Как видно, на часовиках нет явного сигнала, но присутствует кластеризация шума. Что это может быть?

кластеризация волатильности мб

 
mytarmailS #:


Напишите полностью кусок последнего кода, пожалуйста. Я в R не разбираюсь и куда вставлять обрывки кода не совсем понимаю

Сделал так

# Загрузка данных из CSV
data <- read.csv("E:\\FX\\MT5_CB\\MQL5\\Files\\00_Standart_50\\Setup\\train.csv", sep = ";")
data <- data[, !(names(data) %in% c("Time", "Target_P", "Target_100", "Target_100_Buy", "Target_100_Sell"))]


bad_colums <- caret::findLinearCombos(data[1:500,])$remove

ncol(data)         # количество всех колонок 2408
length(bad_colums) # кличество линейно зависимых 1908


clear_data <- cbind.data.frame(
  target, 
  data[,-bad_colums]
)


which(original_colum_names %in% colnames(data)[-bad_colums])
which(original_colum_names %in% colnames(data)[ bad_colums])-1

remaining_columns_indices <- which(original_colum_names %in% colnames(data)[,-bad_colums])
remaining_columns_indices_minus1 <- which(original_colum_names %in% colnames(data)[bad_colums]) - 1

write.csv(remaining_columns_indices_minus1, "E:\\FX\\MT5_CB\\MQL5\\Files\\00_Standart_50\\Setup\\Оставшиеся_предикторы_00.csv", row.names = FALSE)

Получил ошибку

> remaining_columns_indices <- which(original_colum_names %in% colnames(data)[,-bad_colums])
Error in colnames(data)[, -bad_colums] : incorrect number of dimensions
 
Rorschach #:

Внимание вопрос. Как видно, на часовиках нет явного сигнала, но присутствует кластеризация шума. Что это может быть?

Без понимания контекста, когда вижу подобные фразы, сразу начинаю думать о зависимости от времени суток. Чем ниже (начиная с H1) таймфрейм, тем слабее прослеживается на приращениях.

 
Aleksey Vyazmikin #:

Напишите полностью кусок последнего кода, пожалуйста. Я в R не разбираюсь и куда вставлять обрывки кода не совсем понимаю

Сделал так

Получил ошибку

Я эту фразу слишу от тебя уже лет 5, может уже пора?


код по отсеву линейных признаков

data <- data.table::fread("D:\\train.csv", sep = ";") |> as.data.frame()
original_colum_names <- colnames(data)
target <- data$Target_100
data <- data[, !(names(data) %in% c("Time", "Target_P", "Target_100", "Target_100_Buy", "Target_100_Sell"))]
bad_colums <- caret::findLinearCombos(data[1:500,])$remove
good_colums_idx <- which(original_colum_names %in% colnames(data)[bad_colums])-1
write.csv(good_colums_idx, "E:\\...\\индексы_колонок.csv", row.names = FALSE)



код по отбору

data <- data.table::fread("D:\\train.csv", sep = ";") |> as.data.frame()
original_colum_names <- colnames(data)
target <- data$Target_100
data <- data[, !(names(data) %in% c("Time", "Target_P", "Target_100", "Target_100_Buy", "Target_100_Sell"))]
data <- scale(data)
# table(target) # баланс целевой
#################################################
### без балансировки классов в большую сторону ##
#################################################
library(abess)
model <- abess(y = target, x = data, tune.path = "gsection", early.stop = TRUE) 
ex <- extract(model)
ex$support.vars
#  сохранение имен колонок 
# write.csv(ex$support.vars, "E:\\FX\\MT5_CB\\MQL5\\Files\\00_Standart_50\\Setup\\Pred.csv", row.names = FALSE)
best_colums_idx <- which(!original_colum_names %in% ex$support.vars)-1
# Сохранение индексов в CSV файл
#write.csv(best_colums_idx, "E:\\FX\\MT5_CB\\MQL5\\Files\\00_Standart_50\\Setup\\Оставшиеся_предикторы.csv", row.names = FALSE)
################################################
### с балансировкой классов в большую сторону ##
################################################
x <- caret::upSample(x = data, y = as.factor(target), list = TRUE)
x$y <- as.numeric(as.character(x$y))
# table(x$y) # баланс целевой
model <- abess(y = x$y, x = x$x, tune.path = "gsection", early.stop = TRUE) 
ex <- extract(model)
ex$support.vars
#  сохранение имен колонок 
# write.csv(ex$support.vars, "E:\\FX\\MT5_CB\\MQL5\\Files\\00_Standart_50\\Setup\\Pred.csv", row.names = FALSE)
best_colums_idx <- which(!original_colum_names %in% ex$support.vars)-1
# Сохранение индексов в CSV файл
#write.csv(best_colums_idx, "E:\\FX\\MT5_CB\\MQL5\\Files\\00_Standart_50\\Setup\\Оставшиеся_предикторы.csv", row.names = FALSE)
 
mytarmailS #:
Я эту фразу слишу от тебя уже лет 5, может уже пора?

Ну, пока синтаксис питона понятней оказался, да и комьюнити больше, а значит легче найти ответы на свои вопросы. А теперь и ChatGPT позволяет не сложные вещи подсказывать адекватно.

Если бы здешние участники помогали с пониманием кода на R, то может и был бы толк в затеи изучения на уровни осознанного копирования.

mytarmailS #:
код по отсеву линейных признаков

Спасибо, что написали в завершённом виде.

Удалось запустить без ошибок - поставил на обучение модели.

 
Aleksey Vyazmikin #:

Удалось запустить без ошибок - поставил на обучение модели.


Жду результаты🙄
 
fxsaber #:

Без понимания контекста, когда вижу подобные фразы, сразу начинаю думать о зависимости от времени суток. Чем ниже (начиная с H1) таймфрейм, тем слабее прослеживается на приращениях.

Извините за реплику. К вам отношусь с уважением.

Время затраченное на качественное изучение рыночных отношений примерно равно времени качественного обучения программированию + время изучения темы применения.

 

ОФФТОП

Я заментил что спустя время после публикации сообщения , я потом не могу его отредактировать, просто пропадает кнопка "правка". Eто какое то нововведение или у меня что то глючит?

 
mytarmailS #:

ОФФТОП

Я заментил что спустя время после публикации сообщения , я потом не могу его отредактировать, просто пропадает кнопка "правка". Єто какое то нововведение или у меня что то глючит?

Сократилось время изменения постов. Значительно. Надо сразу правильно выражать мысли. 

 
mytarmailS #:

Жду результаты🙄

Вот результаты - первый в серии график - ребалансировка, второй - отсев линейных признаков, а третий - без ничего.
Выборка train:


Выборка test:


Выборка exam (ср. знач: 2551, 3117, 2866):


Получается, что только  отсев линейных признаков дал какой то результат по улучшению среднего значения фин результатов модели.

Даже не смотря на относительно низкую вероятность выбрать убыточную стратегию, такой разброс фин результата удручает.

В то же время, знаю, что можно получить и лучше результаты максимальные с выборки - вот один из вариантов - обучения на листьях модели (без отбора моделей):


Причина обращения: