Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 129
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Вот же, четко по слогам расписал что я делаю:
Подробнее: на текущем баре сигнал бай, типа покупаем, отсчитываем наименьшее кол-во баров вперёд в будущее и проверяем - в прибыль ли получится сделка, если да то типа закрываем, если нет - отсчитываем вперед ещё один бар и снова проверяем. И так до максимального кол-ва баров и закрываем окончательно. Такой механизм обучения.
Что тут не понятно?... Это не фантазия, сейчас я так именно и делаю. Целевая функция - максимизация прибыли при минимальных просадках. Обучаю с помощью своей генетики.
СанСаныч Фоменко:
2. Вроде можно и просто так реализовать?1. А чему учим?
1. Целевая функция - максимизация прибыли при минимальных просадках. Обучаю с помощью своей генетики.
2. Да, очень просто.
кто то знает как можно узнать на каком языке написан пакет для R?
Документация. Открывается из Справка в R:
Кроме этого детально описана работа с Срр
Господа, новая задачка от меня:
Здесь лежит набор данных в формате .R: https://drive.google.com/open?id=0B_Au3ANgcG7CcjZVRU9fbUZyUkE
В наборе примерно 40 000 строк, 101 столбец. Крайний правый столбец - целевая переменная. Слева - 100 входов.
Предлагаю вам попробовать построить регрессионную модель, предсказывающую значение 101-ого столбца на основе 100 остальных столбцов, на первых 20 000 наблюдений.
На оставшихся 20 000+ наблюдениях построенная модель должна показать R^2 не хуже 0.5.
Затем я раскрываю способ генерации данных и даю свое решение.
Подсказка - это данные временного ряда. На вход подается 100 отсчетов, прогноз на 1 вперед. Это не цены и не котировки и не их производные.
Алексей
Попробовал найти важность предикторов через пакет vtreat. Но пакет не умеет искать взаимосвязи между предикторами, учитывает только прямые зависимости между предиктором и целью, для такой задачи не очень подходит.
Судя по важности vtreat - lag_diff_51 и lag_diff_52 самые полезные. Понемногу добавлял другие предикторы по полученному списку, смотрел на рост R^2 на тренировочных данных для леса. В итоге я остановился на этих предикторах - 51, 52, 53, 54, 55, 17, 68, скорее всего именно они используются для расчёта цели. R^2 на тренировочных данных с ними > 0.9, но на тесте и валидациях всё плохо. Теперь нужно пробовать разные математические операции с этими предикторами, подбирать формулы итд, чтобы на кроссвалидации R^2 тоже рос. Дальше я это искать не буду :)
Дописал позже:
Ещё немного поэкспериментировал, наделал кучу новых предикторов из имеющихся, с разными математическими операциями. Как vtreat, так и лес очень сильно любят эти две комбинации: sum(51,52) и average(51,52). Но получить формулу для целевого значения я так и не смог. И модели обученные на этих предикторах тоже не могут ничего адекватно предсказать.
100 входов? Сильно.
А чего не тысяча?
Ребята, вы совершенно не понимаете что такое нервосеть.
Попробовал найти важность предикторов через пакет vtreat. Но пакет не умеет искать взаимосвязи между предикторами, учитывает только прямые зависимости между предиктором и целью, для такой задачи не очень подходит.
Судя по важности vtreat - lag_diff_51 и lag_diff_52 самые полезные. Понемногу добавлял другие предикторы по полученному списку, смотрел на рост R^2 на тренировочных данных для леса. В итоге я остановился на этих предикторах - 51, 52, 53, 54, 55, 17, 68, скорее всего именно они используются для расчёта цели. R^2 на тренировочных данных с ними > 0.9, но на тесте и валидациях всё плохо. Теперь нужно пробовать разные математические операции с этими предикторами, подбирать формулы итд, чтобы на кроссвалидации R^2 тоже рос. Дальше я это искать не буду :)
Дописал позже:
Ещё немного поэкспериментировал, наделал кучу новых предикторов из имеющихся, с разными математическими операциями. Как vtreat, так и лес очень сильно любят эти две комбинации: sum(51,52) и average(51,52). Но получить формулу для целевого значения я так и не смог. И модели обученные на этих предикторах тоже не могут ничего адекватно предсказать.
И еще, 0.9 это переобучение. R^2 больше 0.6 на обучающем множестве это реалистичный максимум.
И еще - помните про взаимодействия. Одиночные связи могут вести в ложном направлении.
Я вот сам пытаюсь решить свою же задачку. Применил однослойную НС. На тесте R^2 не больше 0.148. Не подходит...