
Полная версия
Нейросетевая торговая система Meta Trader 4 + MATLAB. Пошаговая разработка. Издание второе

Предисловие
Во второе издание включена глава ” Шаблон автоматической нейросетевой торговой системы на стандартных индикаторах”. Используя данный шаблон, представляющий пошаговую инструкцию (с кодами скриптов и экспертов MT4 и Matlab) построения нейросетевой торговой системы, вы сможете приступить к созданию своей торговой стратегии на основе предложенной системы либо развивать нейросетевую систему самостоятельно.
По прочтению этой главы – вы самостоятельно создадите исполняемый файл ExpertPrimer.exe, который представляет собой обученную нейронную сеть. В главе “Нейросети Matlab+MT4” вы найдете инструкцию, как оформить интерфейс этой программы с помощью GUI Matlab. Ниже представлены индикаторы, скрипты и эксперты, которые вы будете использовать при создании своей первой нейронной сети.

А здесь вы можете посмотреть пример результата работы с шаблоном https://youtu.be/o9DAvnzCDlU. Как мы видим, после всей подготовительной работы по выстраиванию системы и на ее основе торговой стратегии, весь этот процесс занимает несколько минут. В конце видео показана для сравнения работа автоматической торговой системы готовой к реальной работе. По завершению тестирования на графике выводятся индикаторы, которые используются торговым экспертом. Одним из достоинств данной системы является то, что она кроме двух простейших индикаторов, использует в эксперте только ценовые данные. Все остальное делает нейросеть.
Почему я написал – первой? Эта нейросеть будет для вас шаблоном, который в дальнейшем вы сможете использовать для создания рабочей торговой системы, и на основе которой вы будете разрабатывать различные торговые стратегии. Например, вот какие индикаторы, скрипты и эксперты, я использую в системе, которую так же описываю в главе “Нейросети Matlab+MT4”.

Ниже, как пример результативности работы данной системы приведен отчет по ее тестированию.

Обратим внимание на тот факт, что тестирование проводилось в динамике. Т.е. в процессе совершенствования торговой стратегии, основанной на нейросистеме и в течение длительного времени примерно четырех лет.
В главе “Критические ошибки при разработке нейросетевой системы” я попытался рассказать о ”подводных камнях” при ее подготовке. И выделить особенно важный аспект – проведения тестов нейронной системы. Некоторую часть главы “Нейросети Matlab+MT4” мне также пришлось посвятить этой проблеме на примере рабочей нейросетевой системы – так как этот процесс неотъемлем от разработки торговой стратегии.
Так же в соответствующих главах книги я поднимаю проблемы логического обоснования обучения нейронных сетей перед принятием решения, что должно нам помочь осознать – какую сеть в результате мы хотим получить. И косвенно связанную с этой проблемой, проблему выбора временного периода исторических данных для обучения нейронной сети я поднимаю в главе “Использование синтетических баров для определения “спектра”.
Видеоуроки, облегчающие понимание обучения, тренировки и тестирования нейросетей и видеоролики примеров работы с пользовательскими индикаторами можно посмотреть на канале https://www.youtube.com/channel/UCScAAn_sRRaKHdNIxl0aI9A?view_as=subscriber
Для приобретения программных кодов индикаторов, скриптов и экспертов данной нейросетевой системы вы можете связаться с автором по адресу электронной почты andreydib@yandex.ru.
Книга написана с учетом интересов всех категорий трейдеров, а так же тех читателей, которые готовятся заняться трейдингом. Хочется обратить внимание на тот факт, что в данной книге вы не найдете никакого теоретического материала по проблемам нейросетей и самого трейдинга. В любой литературе посвященной этим двум направлениям есть список трудов различных уважаемых авторов. Мне так же хотелось бы снабдить эту книгу таким же списком. Однако, увы, я этого не могу сделать, так как максимально постарался уйти от какой либо теории и психологии, которым в основном посвящена литература о трейдинге. Однако это не значит, что в свое время я не изучал подобную литературу и, что от нее нет пользы. Вот не полный список авторов, труды которых мною изучались – Чарльз Лебо и Дэвид В. Лукас, Юрий Жваколюк, Д. Ю. Пискулов, В. С. Сафонов, Шерри Де Ковни и Кристин Такки, Анна Эрлих, Александр Элдер, Джон Дж. Мэрфи. Но для понимания и практического применения материала представленного мною, в принципе, достаточно теоретической информации, которая подается на сайтах дилинговых компаний и официального сайта Matlab. То есть, любой читатель имеющий представление о трейдинге может выполнить пошаговую инструкцию из моей книги и получить готовую автоматическую нейросетевую систему торговли. Причем, при кажущейся сложности системы в итоге вы прейдете к пониманию, что конечный результат в плане применения программных кодов поразительно легок, но в тоже время самодостачен и функционален. Ведь основная нагрузка в данной системе происходит при обучении нейросетей. Но и здесь, вникнув в процесс, вы обнаружите, что настроив систему, обучение не занимает много времени, а можно даже сказать, что занимает мало времени. Однако нам все равно придется немного пофилософствовать в следующем разделе на тему логического обоснования обучения нейросетей на принятие решения. От этого обоснования во многом зависит конечный результат.
Важно! Данная книга ориентирована на Matlab. Программа Matlab не поставляется с этой книгой. Прежде чем приступать к изучению и разработки автоматической нейросетевой системы торговли, вы должны приобрести ее отдельно и установить.
Видео с визуализацией работы исполняемых файлов нейронных сетей совместно с MT4 также можно посмотреть по ссылкам https://youtu.be/5GwhRnSqT78 – при обучении и компиляции использовалась программа Matlab, https://youtu.be/cIegQGJKbhY– при обучении и компиляции использовалась программа NeuroSolutions 6.
Логическое обоснование обучения нейросетей на принятие решения.
Прежде чем приступать к разработке любой торговой системы, мы задаемся вопросом – на каких принципах данная система будет функционировать? У нас есть два основополагающих принципа – использования флэтов и продолжение тенденции. Пока не будем рассматривать более узкие производные от них – внутри дневная торговля или нет, на фундаментальных данных, на новостях, на открытии рынков и т.д. Мне пришлось сталкиваться с описанием нейросетевых продуктов, где их авторы в примерах использования предлагали прогнозирование каких либо курсов – акций, валют и т.д. Приведем пример, используя платформу NeuroSolutions. Весь процесс повторять не обязательно, так как данную платформу мы в построении нашей системы использовать не будем, а я в данном случае использую ее как пример. Напишем скрипт для получения ценовых данных в MT4. Хочется обратить внимание на то, что при копировании программного кода из файла в формате PDF не сохраняется его стиль – все строки при переносе сохраняются без отступов. Так же могут быть скопированы номера страниц. Для текстовых редакторов эта проблема отсутствует.
//+-+
//|History.mq4 |
//| Copyright © 2009, Andrey Dibrov. |
//| "https://www.youtube.com/channel/UCScAAn_sRRaKHdNIxl0aI9A?view_as=subscriber"|
//+-+
#property copyright "Copyright © 2009, Andrey Dibrov."
#property link “ https://www.youtube.com/channel/UCScAAn_sRRaKHdNIxl0aI9A?view_as=subscriber”
#property version "1.00"
#property strict
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,
iOpen(NULL,60,i),
iOpen(NULL,1440,iBarShift(NULL,1440,iTime(NULL,60,i))),
iHigh(NULL,1440,iBarShift(NULL,1440,iTime(NULL,60,i))),
iLow(NULL,1440,iBarShift(NULL,1440,iTime(NULL,60,i))),
iClose(NULL,1440,iBarShift(NULL,1440,iTime(NULL,60,i))),
iCustom(NULL,60,"Max",0,1440,60,0,i),
iCustom(NULL,60,"Min",0,1440,60,0,i));
TimeToStr(iTime(NULL,60,i)));
}
}
Alert("Файл записан");
FileClose(file);
}
//+-+

Запустив данный скрипт – в папке …MQL4/Files каталога данных терминала, получим файл “history”.


Откроем этот файл и добавим в начале десять столбцов In1-10 и один столбец Out.

Заполним эти столбцы Данными из столбца CloseD. Как Вы уже поняли, это данные дневных закрытий.

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


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

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

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

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

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

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


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

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

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

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


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


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







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


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


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

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


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

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


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

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


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

Результат вроде бы нас должен устроить. Кажется, что полученный результат хорошо накладывается на график цен закрытия. Однако, увеличив масштаб, мы обнаружим, что
график отклика нейросети, хоть и повторяет график цен, но на один шаг от него отстает. Причем это не зависит – прогнозируем ли мы ценовые данные или производные от них. Исходя из этого, мы можем вывести какой-то постулат. Например – “То, что для нас – вчера, для нейросети – сегодня”. Согласитесь, что здесь, в принципе, ни о каком прогнозе речи идти не может. Однако, забегая вперед, отмечу, что данный вариант, при определенной доработке мы так же будем использовать. Но, мы бы, конечно, хотели бы использовать постулат – “То, что для нейросети сегодня, для нас – завтра”. Машина времени, какая то. Но мы с Вами ведь понимаем, что все-таки, самая лучшая нейросеть – это наш мозг. И то, мы можем использовать этот постулат максимум с 50% успехом (если мы говорим о вероятности да или нет), а то и хуже. Но ведь есть еще и третий вариант постулата – “То, что для нейросети – вчера, для нас – сегодня”. Разберем, что для нас означают эти постулаты в трейдинге:
Конец ознакомительного фрагмента.
Текст предоставлен ООО «ЛитРес».
Прочитайте эту книгу целиком, купив полную легальную версию на ЛитРес.
Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.