Читать книгу Нейросетевая торговая система - Андрей Дибров - Страница 3

Критические ошибки при разработке нейросетевой системы.

Оглавление

Рассмотрим, на примере как допускаются ошибки при тестировании нейросети. Если у вас нет программы “NeuroSolutions 6”, то пропустите дальнейшее описание работы с ней, а рассмотрите результаты и сделанные выводы. В этой книге я не буду рассматривать создание системы на основе “NeuroSolutions”. Хотя в принципе, автоматическая нейросетевая система реализована и на основе данного продукта.

Отметим, что следует понимать разницу между обучением и тестированием. Обучать нейросеть можно на любых примерах даже, некорректных для тестового множества – ведь обучение мы проводим на событиях, которые уже произошли. Данный пример взят из реальной жизни. Данный способ работы с нейросетями продавался в интернете. Позиционировался как система, которая дает 80-90% прибыльных сделок. Причем продавец, мне кажется, искренне заблуждался в идеальной результативности данного способа подготовки нейросети. Я делаю этот вывод из того, что ошибка возникала на стадии тестирования отклика сети.

Итак, сначала модернизируем и скомпилируем скрипт для получения исторических данных.

//+–+

//| History.mq4 |

//| Copyright © 2009, Andrey Dibrov. |

//+–+



В результате работы скрипта получим файл. Создадим колонку “In” и заполним ее формулой.



Добавим колонку “Out” и заполним ее формулой.


Воспользуемся программой “NeuroSolutions 6”. С помощью ее надстройки колонку “In” обозначим как “Input”.


А колонку “Out” как “Desired”.



Энное количество строк обозначим, как “Training”



Энное количество строк обозначим, как “Cross Validation”.


И последние строки как “Production”.



Далее создадим файлы для NS6.


Запустим в рабочей среде NS – NeuralBilder. Здесь мы можем выбрать нейросеть нужной нам архитектуры. Остановимся на первой сети Multilayer perceptron. Нажимаем кнопку с правыми стрелками.


Откроется окно Training Data. С помощью кнопки Browse откроем файл TrainingInput.



Далее перейдем в окно Desired Response и откроем файл TrainingDesire.



Откроем окно Cross Val. & Test Data. По умолчанию активно окошечко для ввода текста % of training data for CV. Введем 10%. Программа автоматически зарезервирует данное количество строк под CV из TD. Активировав радиокнопку Read from Separate File, мы можем выбрать файлы сохраненные, нами ране.


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



Для лучшей визуализации расширим окно Average Cost и нажмем кнопку Start. Подождем, пока закончится обучение.



Жмем кнопку Testing, Next и в выпадающем окне выбираем Production. С помощью кнопки Browse находим файл ProductionInput.



Двигаемся далее и в следующем окне активируем радиокнопку Export to a File. И находим заранее созданный нами текстовой файл с, допустим, выбранным нами именем Prod.txt.



Нажимаем кнопки Next и Finish. Таким образом, мы экспортировали отклик нейросети для тестирования в файл Prod.txt. С помощью кнопки Save, сохраним нейросеть.


Данные из файла Prod.txt подставим в файл history.csv рядом с Tag Data “Production”. В соседнюю ячейку вставим формулу условия совершения сделок на покупку.



В соседнюю ячейку вставим формулу условия совершения сделок на продажу.


В соседнюю ячейку вставим формулу суммирования сделок.


В соседнюю ячейку вставим формулу суммирования и заполним этими формулами ячейки до конца истории.


Далее вставим график нашей условной прибыли.


Как мы видим – график прибыльности у нас идеальный. Хотя мы в процессе обучения и тестирования допустили некоторые ошибки и обучали нейросеть всего на одном входе. Далее мы протестируем, обученную нейросеть на данных, которые будут к нам поступать реально. Т.е. в формуле ячеек колонки “In” мы будем использовать локальные максимумы и минимумы, которые мы записали в файл “history.csv” с помощью индикаторов “Max” и “Min”.




Введем формулу, подставив вместо High и Low дня, локальные максимумы и минимумы


Еще раз воспользуемся надстройкой NeuroSolutions для создания Production Input File.



Запустим программу NS6 и в ее среде откроем сохраненную ранее нейросеть. Протестируем теперь измененные данные.



Изменим формулы условий совершения сделок. Сделки будем открывать по открытию следующего часа после достижения локальных максимумов и минимумов. Закрывать будем по закрытию дня. Как мы видим, результат мы получаем совершенно другой.

Нейросетевая торговая система

Подняться наверх