Нейросетевая торговая система. Пошаговая разработка для платформы META TRADER 4 в среде MATLAB. Сокращенное издание
Шрифт:
В выпадающем списке выберем Production.
Выберем файл с данными для анализа.
Создадим текстовой файл Prod.
И
Откроем файл Prod и скопируем из него отклики нейросети.
Вставим эти отклики рядом с реальными дневными закрытиями, которые мы хотели бы получить в результате работы нейросети.
Поместим эти данные на график.
Результат вроде бы нас должен устроить. Кажется, что полученный результат хорошо накладывается на график цен закрытия. Однако, увеличив масштаб, мы обнаружим, что
график отклика нейросети, хоть и повторяет график цен, но на один шаг от него отстает. Причем это не зависит – прогнозируем ли мы ценовые данные или производные от них. Исходя из этого, мы можем вывести какой-то постулат. Например – “То, что для нас – вчера, для нейросети – сегодня”. Согласитесь, что здесь, в принципе, ни о каком прогнозе речи идти не может. Однако, забегая вперед, отмечу, что данный вариант, при определенной доработке мы так же будем использовать. Но, мы бы, конечно, хотели бы использовать постулат – “То, что для нейросети сегодня, для нас – завтра”. Машина времени, какая то. Но мы с Вами ведь понимаем, что все-таки самая лучшая нейросеть – это наш мозг. И то, мы можем использовать этот постулат максимум с 50% успехом (если мы говорим о вероятности да или нет), а то и хуже. Но ведь есть еще и третий вариант постулата – “То, что для нейросети – вчера, для нас – сегодня”. Разберем, что для нас означают эти постулаты в трейдинге:
первый – мы совершаем сделку и завтра получаем ответ от нейросети, что мы открылись в правильном направлении или нет. Хотя мы это уже знаем и без нейросети;
второй – мы получаем информацию от нейросети, совершаем сделку и завтра видим, правильная рекомендация была или нет;
третий – мы получаем информацию от нейросети, когда нам надо совершить ту или иную сделку.
Первый вариант, естественно мы отбрасываем сразу. А вот второй и третий для торговли подходят. Однако второй вариант – вариант как бы заглядывания в будущее. Утрировано этот вариант торговли заключается в том, что мы получаем сигнал от нейросети в определенный момент времени – например по закрытию дня с прогнозом как закроется следующий день. Реализовать его для чисто механической торговли на данном этапе сложно. Ну, а если представить, что им получит возможность воспользоваться большинство торговцев – то он сразу же потеряет свою актуальность. Смысл третьего варианта, заключается в том, что мы отслеживаем отклик нейросети на протяжении торговой сессии и покупаем либо продаем его интерпретируя. И здесь нам надо понять основное. Какой из вариантов мы сможем реализовать зависит от того как мы будем обучать нейросеть. И согласитесь, что третий вариант реализовать все-таки легче. Если во втором – мы будем использовать, какую либо информацию с прицелом на получение результата на следующий день – его закрытия (день выбран как пример, естественно может быть какой либо другой период), то в третьем варианте мы используем информацию, пришедшую за шаг до принятия решения – куда двинется цена в этот момент времени.
Критические ошибки при разработке нейросетевой системы.
Рассмотрим, на примере как допускаются ошибки при тестировании нейросети. Если у вас нет программы “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.