Обсуждение статьи "Третье поколение нейросетей: "Глубокие нейросети"" - страница 6

 

Еще один быстрый тест, на этот раз с тренировочным набором из 6000 баров с сентября 2014 года по февраль 2015 года. Тест вне выборки начнется в марте:

И снова мы имеем прибыльную фазу около 5 недель, пока модель не ухудшится.

Я считаю, что разделение на тестовые и тренировочные данные не нужно: мы можем использовать все данные для обучения. Точность и матрица путаницы вводят в заблуждение, потому что в большинстве случаев знак ZZ совпадает со знаком предыдущего бара, что ошибочно говорит о высокой точности. Для прибыли имеет значение только смена знака.

 
jcl365:

Теперь я обучил новую модель с предсказанием следующего бара, и кажется, что она действительно работает. Точность по-прежнему находится в диапазоне 74%. Вот кривая эквити:

:

Она ведет себя так, как я и ожидал: система становится прибыльной сразу после обучения, а затем медленно ухудшается по мере изменения рынка.

Поэтому следующим шагом будет тест WFO с регулярным переобучением модели. Для этого обучение должно быть интегрировано в скрипт стратегии.

Это исправленная функция для расчета Sig следующего бара:

Функция "Compute", которая выполняется скриптом стратегии каждые 30 минут:

Скрипт стратегии, "советник":

jcl365:

Теперь я обучил новую модель с предсказанием следующего бара, и кажется, что она действительно работает. Точность по-прежнему находится в диапазоне 74%. Вот кривая эквити:

:

Она ведет себя так, как я и ожидал: система становится прибыльной сразу после обучения, а затем медленно ухудшается по мере изменения рынка.

Поэтому следующим шагом будет тест WFO с регулярным переобучением модели. Для этого обучение должно быть интегрировано в скрипт стратегии.

Это исправленная функция для расчета Sig следующего бара:

Функция "Compute", которая выполняется скриптом стратегии каждые 30 минут:

Скрипт стратегии, "советник":

Привет

Вы переместили серию ZZ на один бар в будущее.

for(i in 1:length(ZZ)-1) { ZZ[i] = ZZ[i+1] }

Вы переместили серию dz на один бар в будущее.

 dz <- c(diff(ZZ), NA)

Таким образом, вы переместили целевую переменную в двух барах в будущее.

Это эквивалентно

dz <- Hmisc::Lag(diff(ZZ), shift=-2)

Этот вариант также может быть использован.


 


И снова у нас есть прибыльная фаза около 5 недель, пока модель не ухудшится.

Это нормально. Модель можно и нужно периодически переобучать.

Я считаю, что разделение на тестовые и обучающие данные излишне: мы можем использовать все данные для обучения.

Можно. Важно помнить несколько важных моментов:
1. обучающие и тестовые наборы не должны пересекаться.
2. Обучающий набор должен быть смешанным.

3. Если соотношение классов не сбалансировано - произвести корректировку.

Я рад, что нашлись коллеги, использующие R.

С наилучшими пожеланиями

Владимир

 

Вы правы насчет двойного сдвига: На самом деле система предсказывает разницу ZZ, основанную на средней цене следующего бара. ZZ рассчитывается по средним ценам, но во время расчета у нас есть цена закрытия, которая обычно находится примерно на полпути между последней и следующей средней ценой. Таким образом, дополнительный сдвиг предсказывает примерно на 1,5 бара в будущее, и на самом деле я получил гораздо худшие результаты без дополнительного сдвига.

Сейчас у меня есть скрипт Zorro, который переобучается каждые 4 недели и тестирует 4 недели после обучения. Deepnet работает довольно быстро, скрипту требуется всего около 10 минут на прогон, охватывающий около 60 циклов обучения/тестирования. Вот результат:

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

 
Нужно подобрать не только индикаторы , но и их параметры. Генный алгоритм вам в помощь.

Что такое Zorro? Дайте ссылки?


 
Vladimir Perervenko:
Нужно подобрать не только индикаторы , но и их параметры. Генный алгоритм вам в помощь.

Что такое Zorro? Дайте ссылки?


Да, есть книга Yu / Wang / Lai, в которой описывается генетический алгоритм для предварительного подбора индикаторов для обучения NN Forex. - Я использую Zorro, потому что скрипты проще и бэктестинг лучше, но я думаю, что MT4 тоже подойдет, если приложить некоторые усилия. Я не могу дать ссылку, так как это сайт MT4, но вы можете погуглить на предмет торгового автомата Zorro. R dll Бернда Кройса также работает с Zorro.
 

Я скачал и установил все и поместил все файлы в папки. Все пакеты установлены. Папки установлены по назначению.

Когда я помещаю эксперта на график EURUSD m30, все нормально даже в DebugView, но как только я помещаю индикатор на график, я получаю Error:

ExecutedCode: in >>> as.Logical(res <-GetRes()) [1]

Ошибка в if (z) { :

Результат функции GetRes в "i_SAE_fun.r" всегда NA и поэтому он не может преобразовать это в bool и перестает работать.

Кто-нибудь может указать мне правильное направление? Что я упускаю?

С наилучшими пожеланиями,

APoLLo

 
APoLLo_MQL:

Я скачал и установил все и поместил все файлы в папки. Все пакеты установлены. Папки установлены по назначению.

Когда я помещаю эксперта на график EURUSD m30, все нормально даже в DebugView, но как только я помещаю индикатор на график, я получаю Error:

ExecutedCode: in >>> as.Logical(res <-GetRes()) [1]

Ошибка в if (z) { :

Результат функции GetRes в "i_SAE_fun.r" всегда NA и поэтому он не может преобразовать это в bool и перестает работать.

Кто-нибудь может указать мне правильное направление? Что я упускаю?

С наилучшими пожеланиями,

APoLLo

Привет APoLLo.

Какая версия R у вас есть ?
Это довольно длинная статья и после обновления пакетов в R некоторые функции перестают работать.
Лучше использовать Revolution R Open (RRO 8.01)
Чтобы проверить, запустите скрипт в Rstudio.

Если у вас есть время, я также проверю , где находится ошибка.

С наилучшими пожеланиями/

Владимир

Revolution R Open
  • www.revolutionanalytics.com
Revolution R Open is our enhanced distribution of the world's most widely used data analysis software. Based on open source R, Revolution R Open is built, tested and distributed by Revolution Analytics and delivers: The latest R language engine from the R Foundation for Statistical Computing High-performance R language engine (multi-threaded...
 
Vladimir Perervenko:

Привет APoLLo.

Какая версия R у вас ?
Это довольно длинная статья и после обновления пакетов в R некоторые функции перестают работать.
Лучше использовать Revolution R Open (RRO 8.01)
Чтобы проверить, запустите скрипт в Rstudio.

Если у вас есть время, я также проверю , где находится ошибка.

С наилучшими пожеланиями/

Владимир

Я использую последнюю версию R 3.2.0 64bit вместе с последней сборкой MT4. Все пакеты для R скачаны вчера, так что они тоже должны быть последней версии.

Если я запускаю советник на EURUSD M30, я даже могу подключиться к нему с помощью RGUI и проверить "SAE" и "prepr" и получить много чисел обратно.

Для меня это выглядит так, как будто функция GetRes в R проверяет, открыто ли соединение, получая значение flag1, которое недоступно на сервере (советнике).

Возможно, причина в том, что "Acc" или "K" или "Kmax" никогда не рассчитывались правильно.


У меня есть время, так что если у вас есть возможность взглянуть, я буду очень рад.

Позже я попробую Revolution R 8.01, чтобы проверить, работает ли это лучше.

Спасибо за помощь :)

[Удален]  
Vladimir Perervenko:

ОГРОМНОЕ СПАСИБО автору за статью. Я начал ознакомление с применением нейросетей к рынку именно с вашей статьи. С нейросетями не был знаком до этого, язык R никогда не использовал. Но теперь установил и изучаю. Кажется сложным, но интересно!

 И да, скаааажжите пожалуйста, я не могу понять пока что как работает файл SAE.model Как быблиотека для советника или как что? то есть из R мы можем сохранить структуру нейросети и потом использовать ее как обычную библиотеку в советнике, или как? тут у вас все очень запутанно и сложно (для меня).