Оценить:
 Рейтинг: 2.67

Нейросетевая торговая система. Пошаговая разработка для платформы Meta Trader 4 в среде MATLAB. Сокращенное издание

Год написания книги
2018
<< 1 2 3 4 5 >>
На страницу:
2 из 5
Настройки чтения
Размер шрифта
Высота строк
Поля

С помощью надстройки NeuroSolutions, выделив столбцы In1-In10, отформатируем их как входы.

А столбец Out как выход нейросети.

Аналогичным образом разобьем нашу матрицу построчно на обучающее множество.

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

Теперь мы сформируем файлы для программы NeuroSolutions.

Откроем NeuroSolutions и нажмем кнопку NeuralBuilder.

Выберем модель нейросети Multilayer Perceptron.

Нажмем кнопку Browse…

И откроем файл с обучающими входами.

Далее откроем файл с обучающим выходом.

Определим 30% данных из тренировочного множества для перекрестной проверки в процессе обучения нейросети.

Жмем кнопку Next до тех пор, пока не сформируется нейросеть.

С помощью кнопки Start и запустим процесс обучения.

После завершения процесса обучения нажмем кнопку Testing.

В выпадающем списке выберем Production.

Выберем файл с данными для анализа.

Создадим текстовой файл Prod.

И экспортируем в него данные с результатами, полученными от нейросети.

Откроем файл Prod и скопируем из него отклики нейросети.

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

Поместим эти данные на график.

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

график отклика нейросети, хоть и повторяет график цен, но на один шаг от него отстает. Причем это не зависит – прогнозируем ли мы ценовые данные или производные от них. Исходя из этого, мы можем вывести какой-то постулат. Например – «То, что для нас – вчера, для нейросети – сегодня». Согласитесь, что здесь, в принципе, ни о каком прогнозе речи идти не может. Однако, забегая вперед, отмечу, что данный вариант, при определенной доработке мы так же будем использовать. Но, мы бы, конечно, хотели бы использовать постулат – «То, что для нейросети сегодня, для нас – завтра». Машина времени, какая то. Но мы с Вами ведь понимаем, что все-таки самая лучшая нейросеть – это наш мозг. И то, мы можем использовать этот постулат максимум с 50% успехом (если мы говорим о вероятности да или нет), а то и хуже. Но ведь есть еще и третий вариант постулата – «То, что для нейросети – вчера, для нас – сегодня». Разберем, что для нас означают эти постулаты в трейдинге:

первый – мы совершаем сделку и завтра получаем ответ от нейросети, что мы открылись в правильном направлении или нет. Хотя мы это уже знаем и без нейросети;

второй – мы получаем информацию от нейросети, совершаем сделку и завтра видим, правильная рекомендация была или нет;

третий – мы получаем информацию от нейросети, когда нам надо совершить ту или иную сделку.

Первый вариант, естественно мы отбрасываем сразу. А вот второй и третий для торговли подходят. Однако второй вариант – вариант как бы заглядывания в будущее. Утрировано этот вариант торговли заключается в том, что мы получаем сигнал от нейросети в определенный момент времени – например по закрытию дня с прогнозом как закроется следующий день. Реализовать его для чисто механической торговли на данном этапе сложно. Ну, а если представить, что им получит возможность воспользоваться большинство торговцев – то он сразу же потеряет свою актуальность. Смысл третьего варианта, заключается в том, что мы отслеживаем отклик нейросети на протяжении торговой сессии и покупаем либо продаем его интерпретируя. И здесь нам надо понять основное. Какой из вариантов мы сможем реализовать зависит от того как мы будем обучать нейросеть. И согласитесь, что третий вариант реализовать все-таки легче. Если во втором – мы будем использовать, какую либо информацию с прицелом на получение результата на следующий день – его закрытия (день выбран как пример, естественно может быть какой либо другой период), то в третьем варианте мы используем информацию, пришедшую за шаг до принятия решения – куда двинется цена в этот момент времени.

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

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

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

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

//+ – — – — – — – — – — – — – — – — – — – — – — – — – — – +

//| History.mq4 |

//| Copyright © 2009, Andrey Dibrov. |

//+ – — – — – — – — – — – — – — – — – — – — – — – — – — – +

#property copyright «Copyright © 2009, Andrey Dibrov.»

int file=FileOpen («history. csv», FILE_CSV|FILE_READ|FILE_WRITE,»;»);

//+ – — – — – — – — – — – — – — – — – — – — – — – — – — – +

//| Script program start function |

//+ – — – — – — – — – — – — – — – — – — – — – — – — – — – +

void OnStart ()

{

// – —

FileWrite (file,«Open; OpenD; HighD; LowD; CloseD; Max; Min; Date»);

if (file> 0)

{

Alert («Идет запись файла»);

for (int i=iBars (NULL,60) -1; i> =0; i – )

{

FileWrite (file,
<< 1 2 3 4 5 >>
На страницу:
2 из 5