Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 268
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
получил варнинг
логично, скрипт попробовал прочитать ранее созданную табличку из rdata файла но не смог, вот и варнинг. При следующем запуске скрипта rdata файл с табличкой прочитается, и варнинга не будет.
NA - тоже логично, данные для создания модели нужно подготавливать, а не брать сырой выход из тех индикаторов. Там ещё много чего можно сделать -
<NA> в начале таблички - нормально, candlesticks ведь требует как минимум 23 бара. Для первых 23 баров вообще всегда можно ожидать NA.
Я табличку до ширины окна вообще не заполнял, там мало того что будут NA, но и можно ждать "какие-то не такие" результаты из-за меньшей глубины расчётов индикаторов.
Лучше вообще вырезать все первые строки до ширины окна.
trainData <- trainData[-(1:indicatorDepth), ]
Поправить <NA> в названии колонок кроме цели: colnames(trainData)[-ncol(trainData)] <- paste0("pred",1:(ncol(trainData)-1))
Замените цель на 1 для всех положительных, и -1 для всех отрицательных. Или {0;1} если у вас нейронка.
Те индикаторы что содержат в себе какие-то значения близкие к ценам - шкалируйте в 0-1, или считайте дельты. (например значения MA всегда находятся где-то рядом с ценой, их нужно шкалировать или дельтировать. А RSI всегда находится в своём собственном диапазоне 0-100, и это хорошо уже само по себе. Если значения индикатора могут выйти за пределы значений известных при обучении - дельтируйте его, хуже не станет)
Для нейронки вообще все индикаторы лучше шкалировать в 0-1.
Ну итд.
А вот NA в колонках 46-51 - действительно что-то не так. Там или индикаторы в другом формате всё возвращают и нужен другой код конкретно для их вставки в табличку.
Или - эти индикаторы просто сами по себе возвращают NA; может быть нужна большая ширина окна; или они всегда возвращают NA для последнего бара, и потом заменяют NA на основании данных нового бара, что есть перерисовка, и плохо.
Вот пришел новый бар, который является вестником разворота рынка. Но мы, продолжая кормить священную корову, не меняем свой взгляд на историю ради некоторой идеи, взятой из раздела "анализ".
Для простой торговли это вполне отлично, согласен. Индикатор нашёл какую-то только сейчас проявившуюся закономерность, и показал её нам, всё хорошо.
Но нам нужно подготовить данные и обучить модель. Если индикатор перерисовывается, то обычно это означает что значения прошлых баров постоянно изменяются на основе более новых данных, т.е. в них появляется заглядывание в будущее. И модель в итоге учится на этих заглядывающих в будущее значениях, ничего хорошего из этого не может получиться.
Хотя, такие индикаторы можно использовать как цель для обучения, тот-же зигзаг например - заглядывает на 100 бар вперёд, потому и так красиво рисует тренды.
А вот NA в колонках 46-51 - действительно что-то не так. Там или индикаторы в другом формате всё возвращают и нужен другой код конкретно для их вставки в табличку.
Или - эти индикаторы просто сами по себе возвращают NA; может быть нужна большая ширина окна; или они всегда возвращают NA для последнего бара, и потом заменяют NA на основании данных нового бара, что есть перерисовка, и плохо.
Проверил, похоже на перерисовку. Для последнего бара индикатор nextCandlePosition всегда возвращает NA. А потом на следующем баре заменяет NA на что-то нужное. @mytarmailS Попробуйте ещё раз свой первый код, но без этого индикатора, и обучите модель, я думаю результат будет похуже.
Я поправил свой скрипт чтоб брать предпоследнее значение nextCandlePosition вместо последнего, теперь в последних строках таблицы не будет NA.
Для простой торговли это вполне отлично, согласен. Индикатор нашёл какую-то только сейчас проявившуюся закономерность, и показал её нам, всё хорошо.
Но нам нужно подготовить данные и обучить модель. Если индикатор перерисовывается, то обычно это означает что значения прошлых баров постоянно изменяются на основе более новых данных, т.е. в них появляется заглядывание в будущее. И модель в итоге учится на этих заглядывающих в будущее значениях, ничего хорошего из этого не может получиться.
Хотя, такие индикаторы можно использовать как цель для обучения, тот-же зигзаг например - заглядывает на 100 бар вперёд, потому и так красиво рисует тренды.
Давайте на простом примере.
1. Рисуем сглаживание по Ходрику-Прескотту. Перерисовывается.
На текущем баре касательная смотрела вверх. На очередном баре касательная показывает вниз - индикатор перерисовался, так как учел текущие изменения. Прогноз на один шаг вперед - вниз.
2. Рисуем машку.
На текущем баре касательная смотрела вверх. На очередном баре касательная показывает вверх - до индикатора не дошли еще изменения. прогноз на один шаг вперед вверх.
Следует учесть что индикатор НР перестает пререрисовываться где-то с 10-15 бара.
Ваш выбор и почему?
Ваш выбор и почему?
В торговле руками - могу предположить что есть хорошие стратегии с использованием обеих этих индикаторов. Я таких стратегий не знаю, так что я бы с ними не торговал.
В машинном обучении - выберу машку. Тупой запаздывающий индикатор лучше чем любой перерисовывающийся.
Проверил, похоже на перерисовку. Для последнего бара индикатор nextCandlePosition всегда возвращает NA. А потом на следующем баре заменяет NA на что-то нужное. @mytarmailS Попробуйте ещё раз свой первый код, но без этого индикатора, и обучите модель, я думаю результат будет похуже.
Я поправил свой скрипт чтоб брать предпоследнее значение nextCandlePosition вместо последнего, теперь в последних строках таблицы не будет NA.
Да я писал что удалял около шести лучших предикторов чтобы как раз удалить те что возможно перерисовываються, но точность упала буквально на 3%, там наверное все перерисовываються ...
Так что вы тренировали уже модель? может для начала взять несколько тысяч на пробу а не сразу 50к считать?
Да я писал что удалял около шести лучших предикторов чтобы как раз удалить те что возможно перерисовываються, но точность упала буквально на 3%, там наверное все перерисовываються ...
Взял ваш код, убрал 6 индикаторов полученных от nextCandlePosition (X27), получил точность 52% вместо 100%. На чуть других индексах для тренировки точность иногда меньше 50%. В общем - рандом.
хотя что там может перерисововаться хз, там в подавляющем большинстве свечные формации всего три варианта TRUE,FALSE,NA на выходе
Используя nextCandlePosition - вы получаете значения реально относящиеся для следующего бара, тут заглядывание в будущее на 1 шаг.
В общем не прокатило.
Взял ваш код, убрал 6 индикаторов полученных от nextCandlePosition (X27), получил точность 52% вместо 100%. На чуть других индексах для тренировки точность иногда меньше 50%. В общем - рандом.
Используя nextCandlePosition - вы получаете значения реально относящиеся для следующего бара, тут заглядывание в будущее на 1 шаг.
В общем не прокатило.
Ну и хорошо что все прояснилось, я особо и не верил в грааль
Появился новый и очень перспективный пакет RKEEL шлюз к KEEL.
Удачи