Нейросетевая торговая система. Пошаговая разработка для платформы META TRADER 4 в среде MATLAB. Сокращенное издание
Шрифт:
Двигаемся далее и в следующем окне активируем радиокнопку Export to a File. И находим заранее созданный нами текстовой файл с, допустим, выбранным нами именем Prod.txt.
Нажимаем кнопки Next и Finish. Таким образом, мы экспортировали отклик нейросети для тестирования в файл Prod.txt. С помощью кнопки Save, сохраним нейросеть.
Данные
В соседнюю ячейку вставим формулу условия совершения сделок на продажу.
В соседнюю ячейку вставим формулу суммирования сделок.
В соседнюю ячейку вставим формулу суммирования и заполним этими формулами ячейки до конца истории.
Далее вставим график нашей условной прибыли.
Как мы видим – график прибыльности у нас идеальный. Хотя мы в процессе обучения и тестирования допустили некоторые ошибки и обучали нейросеть всего на одном входе. Далее мы протестируем, обученную нейросеть на данных, которые будут к нам поступать реально. Т.е. в формуле ячеек колонки “In” мы будем использовать локальные максимумы и минимумы, которые мы записали в файл “history.csv” с помощью индикаторов “Max” и “Min”.
Введем формулу, подставив вместо High и Low дня, локальные максимумы и минимумы.
Еще раз воспользуемся надстройкой NeuroSolutions для создания Production Input File.
Запустим программу NS6 и в ее среде откроем сохраненную ранее нейросеть. Протестируем теперь измененные данные.
Как мы видим, результат мы получаем совершенно другой.
Пользовательские технические индикаторы, используемые для обучения нейросети.
Индикаторы, используемые для обучения НС, являются пользовательскими, т.е. написанными на языке MQL автором этой книги, но в тоже время они являются производным от классических. Это
Для инициализации индикаторов в терминале должны быть загружены исторические данные обоих периодов. Инициируются на младшем таймфрейме.
И так… индикаторы –
В названиях индикаторов используются названия оригинальных индикаторов, что дает возможность понимать их производность.
StoxasticPolzMinTest;
StoxasticTurnMin;
WilliamsPolzMaxTest;
WilliamsTurnMax;
MaPolzMin;
MaPolzMax;
McadPolzMin ( включает в себя индикатор MaPolzMin);
McadPolzMax ( включает в себя индикатор MaPolzMax);
Max-OpenOld ( включает в себя индикатор Max) ;
OpenOld-Min (включает в себя индикатор Min);
Max;
Min;
Индикаторы Max и Min используются также для формирования выборки обучения нейросети.
Я заранее извиняюсь, если код программ на ваш взгляд выглядит не профессионально, так как сам не является профессиональным программистом. Но это является и плюсом, показывая, что с задачами, описываемыми в книге, могут с успехом справляться и трейдеры без специального программистского образования.
StoxasticPolzMinTest
Данный индикатор – перепрограммирован из классического осциллятора “Stoxastic”.
Для дальнейшего описания индикаторов я буду использовать в качестве старшего таймфрейма – дневные данные предшествующие торговой сессии. В качестве младшего таймфрейма – движение цены по часовым данным. Хотя повторюсь, что мы можем использовать и другие периоды.
Вычисляется индикатор на основании минимума и максимума количества прошедших дней, которое мы хотим использовать для обучения, и движения цены стремящейся к минимуму в течение каждого часа во время торговой сессии, что, как было сказано выше, обеспечивает динамичное принятие решения. Либо можем использовать цены открытия каждого часа – что является статичным принятием решения.
На рисунке показан данный индикатор с однодневным и десятидневным периодами.
Входные параметры индикатора:
Prices="Low" – либо “Open”.
History=50 – историческая глубина. 0 – отрисовывается на всей истории.
KPeriod=1 – количество предшествующих дней.
PeriodOld=1440 – старший период в минутах.
PeriodJun=60 – младший период в минутах.
k=0 –сдвиг входного параметра Prices (не “Open”) назад.
//+–+
//| StoxasticPolzMinTest.mq4 |
//| Copyright © 2009, Andrey Dibrov. |
//+–+
StoxasticTurnMin
Данный индикатор так же является видоизмененным стохастическим осциллятором. Вычисляется индикатор на основании минимума и максимума количества прошедших баров с 00:00 часов текущих суток и движения цены стремящейся к минимуму в течение каждого часа во время торговой сессии, что, как было сказано выше, обеспечивает динамичное принятие решения. Либо можем использовать цены открытия каждого часа – что является статичным принятием решения.