Книга для новичков и продвинутых трейдеров, желающих раздвинуть горизонты традиционного анализа рынка. Сокращенное описание пошаговой инструкции для разработки системы ведения автоматической торговли на финансовых рынках в терминале MT4, основанное на анализе рыночной ситуации нейронными сетями MATLAB. Неограниченные возможности модернизации, творческий подход, не требует глубоких знаний в программировании, не перегружает торговый комплекс, комплект новых пользовательских индикаторов.
Приведённый ознакомительный фрагмент книги Нейросетевая торговая система. Пошаговая разработка для платформы Meta Trader 4 в среде MATLAB. Сокращенное издание предоставлен нашим книжным партнёром — компанией ЛитРес.
Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других
Логическое обоснование обучения нейросетей на принятие решения
Прежде чем приступать к разработке любой торговой системы, мы задаемся вопросом — на каких принципах данная система будет функционировать? У нас есть два основополагающих принципа — использования флэтов и продолжение тенденции. Пока не будем рассматривать более узкие производные от них — внутри дневная торговля или нет, на фундаментальных данных, на новостях, на открытии рынков и т. д. Мне пришлось сталкиваться с описанием нейросетевых продуктов, где их авторы в примерах использования предлагали прогнозирование каких либо курсов — акций, валют и т. д. Приведем пример, используя платформу NeuroSolutions. Весь процесс повторять не обязательно, так как данную платформу мы в построении нашей системы использовать не будем, а я в данном случае использую ее как пример. Напишем коротенький скрипт для получения ценовых данных в MT4. Хочется обратить внимание на то, что при копировании программного кода из файла в формате PDF не сохраняется его стиль — все строки при переносе сохраняются без отступов. Так же могут быть скопированы номера страниц. Для текстовых редакторов эта проблема отсутствует.
//+ — — — — — — — — — — — — — — — — — — — — — — — +
// 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,«OpenD; HighD; LowD; CloseD; Date»);
if (file> 0)
{
Alert («Идет запись файла»);
for (int i=iBars (NULL,1440) — 1; i> =0; i — )
{
FileWrite (file,
iOpen (NULL,1440,i),
iHigh (NULL,1440,i),
iLow (NULL,1440,i),
iClose (NULL,1440,i),
TimeToStr (iTime (NULL,1440,i)));
}
}
Alert («Файл записан»);
FileClose (file);
}
//+ — — — — — — — — — — — — — — — — — — — — — — — — — — — +
Запустив данный скрипт — в папке…MQL4/Filse каталога данных терминала, получим файл «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% успехом (если мы говорим о вероятности да или нет), а то и хуже. Но ведь есть еще и третий вариант постулата — «То, что для нейросети — вчера, для нас — сегодня». Разберем, что для нас означают эти постулаты в трейдинге:
первый — мы совершаем сделку и завтра получаем ответ от нейросети, что мы открылись в правильном направлении или нет. Хотя мы это уже знаем и без нейросети;
второй — мы получаем информацию от нейросети, совершаем сделку и завтра видим, правильная рекомендация была или нет;
третий — мы получаем информацию от нейросети, когда нам надо совершить ту или иную сделку.
Первый вариант, естественно мы отбрасываем сразу. А вот второй и третий для торговли подходят. Однако второй вариант — вариант как бы заглядывания в будущее. Утрировано этот вариант торговли заключается в том, что мы получаем сигнал от нейросети в определенный момент времени — например по закрытию дня с прогнозом как закроется следующий день. Реализовать его для чисто механической торговли на данном этапе сложно. Ну, а если представить, что им получит возможность воспользоваться большинство торговцев — то он сразу же потеряет свою актуальность. Смысл третьего варианта, заключается в том, что мы отслеживаем отклик нейросети на протяжении торговой сессии и покупаем либо продаем его интерпретируя. И здесь нам надо понять основное. Какой из вариантов мы сможем реализовать зависит от того как мы будем обучать нейросеть. И согласитесь, что третий вариант реализовать все-таки легче. Если во втором — мы будем использовать, какую либо информацию с прицелом на получение результата на следующий день — его закрытия (день выбран как пример, естественно может быть какой либо другой период), то в третьем варианте мы используем информацию, пришедшую за шаг до принятия решения — куда двинется цена в этот момент времени.
Конец ознакомительного фрагмента.
Приведённый ознакомительный фрагмент книги Нейросетевая торговая система. Пошаговая разработка для платформы Meta Trader 4 в среде MATLAB. Сокращенное издание предоставлен нашим книжным партнёром — компанией ЛитРес.
Купить и скачать полную версию книги в форматах FB2, ePub, MOBI, TXT, HTML, RTF и других