Читаем Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5. Издание 2-е, исправленное и дополненное полностью

Теперь можно приступить к коду нашего индикатора.



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

И здесь мы взяли входные параметры и код инициализации из кода сгенерированного эксперта.



Так как модули сигналов работают с данными как с таймсериями, применим функцию ArraySetAsSeries к буферам нашего индикатора.



В функции OnCalculate индикатора мы сначала обновляем все данные, а затем получаем взвешенные сигналы модулей и сравниваем их с пороговым значением.

В итоге получаем прогноз на увеличение или уменьшение цены.



После присоединения к графику нашего индикатора на основе модулей сигналов советника, мы увидим, как индикатор меняет цвет в зависимости от прогноза на рост или снижение цены.

Создание такого индикатора — это способ наглядно посмотреть работу советника на графике символа.

Генетические алгоритмы

Если рассматривать задачу создания самооптимизирующегося советника,



То при создании самооптимизирующегося советника, на определенном этапе его работы, требуется автоматический вызов кода, который заново оптимизирует параметры советника на истории финансового инструмента, и далее советник продолжит свою работу уже с новыми параметрами.

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

Для оптимизации параметров советника, или теперь уже параметров индикатора, совпадающих с параметрами советника, можно использовать полный перебор, однако для сокращения времени оптимизации можно применить генетический алгоритм.

Для начала обратимся к терминологии.



Хромосома состоит из набора генов — набора случайно выбранных параметров советника в допустимых диапазонах.

Поколение это набор хромосом.

Фитнес функция FF это код, возвращающий значение советника, по которому производится оптимизация, например прибыль.

Значение функции фитнеса VFF используется для вычисления вероятности P воспроизведения хромосомы — члена популяции.

Начальная популяция формируется случайным образом и размер популяции (количество особей) фиксируется и не изменяется в течение работы всего алгоритма.

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

Каждая следующая популяция формируется из предыдущей с помощью отбора, скрещивания и мутации.

Для отбора могут использоваться такие алгоритмы как рулетка, турнирный отбор и элитный отбор.



При применении рулетки, колесо рулетки делится на сектора, число которых совпадает с числом особей популяции.

Площадь каждого сектора пропорциональна вероятности воспроизведения особи популяции.

Отбор производится с помощью вращения колеса рулетки.

Таким образом, особь с наибольшим значением вероятности воспроизведения попадает в следующую популяцию наибольшее число раз.

Количество копий особи в следующей популяции определяется по формуле, как показано на слайде, где N — число особей в популяции.



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

При элитном отборе несколько лучших особей переходят в следующую популяцию без изменений, не участвуя в отборе и скрещивании.



После отбора идет скрещивание особей, при котором сначала выбираются две особи, затем случайно определяется точка разрыва в диапазоне числа параметров фитнес функции, после чего особи обмениваются сегментами хромосомы.

Само скрещивание производится с вероятностью ½.

При применении мутации, сначала случайно выбирается параметр фитнес функции, затем он модифицируется.

Сама мутация производится с вероятностью 0,001.



Библиотека UGAlib MQL5 Community реализации генетического алгоритма использует представление хромосомы в виде массива Chromosome, где 0 индекс это значение фитнес функции, а остальные индексы это параметры фитнес функции или гены хромосомы.

Оптимизация параметров фитнес функции ведется в одном диапазоне от RangeMinimum до RangeMaximum.

Поэтому если оптимизируемые параметры имеют разные диапазоны, их нужно привести к одному диапазону, как правило, от 0.0 до 1.0.

Популяция особей представлена двумерным массивом Population, где строки это хромосомы.

Популяция ранжируется по значению фитнес функции таким образом, что первый ее член имеет наилучшее значение фитнес функции по критерию оптимизации.

Популяция делится на две части.



Вначале вся популяция заселяется особями со случайно выбранными генами в диапазоне.

Затем для этих особей вычисляется значение фитнес функции, которое помещается в 0 индекс хромосомы.

При этом функция GetFitness расчета значения фитнес функции оперирует колонией потомков, представленной массивом Colony, имеющим размер в два раза меньший, чем размер популяции.

Таким образом, популяция заселяется двумя колониями потомков.

Перейти на страницу:

Похожие книги

Самоучитель UML
Самоучитель UML

Самоучитель UMLПервое издание.В книге рассматриваются основы UML – унифицированного языка моделирования для описания, визуализации и документирования объектно-ориентированных систем и бизнес-процессов в ходе разработки программных приложений. Подробно описываются базовые понятия UML, необходимые для построения объектно-ориентированной модели системы с использованием графической нотации. Изложение сопровождается примерами разработки отдельных диаграмм, которые необходимы для представления информационной модели системы. Цель книги – помочь программистам освоить новую методологию разработки корпоративных программных приложений для последующего применения полученных знаний с использованием соответствующих CASE-инструментов.

Александр Васильевич Леоненков , Александр Леоненков

Зарубежная компьютерная, околокомпьютерная литература / Программирование / Прочая компьютерная литература / Книги по IT
Компьютер для тех, кому за…
Компьютер для тех, кому за…

В наш век высоких технологий без компьютера не обходится практически ни один человек. Но что делать, если вам уже за…, а компьютер вы так и не освоили? Не стоит отчаиваться! Эта книга была написана специально для тех, кто по каким-то причинам не смог освоить его раньше. Легким и доступным языком в книге изложены основные принципы работы на компьютере. Вы узнаете, как создать документ в текстовом редакторе, выстроить таблицы и диаграммы в экселе, освоите графический редактор, который позволит вам рисовать и редактировать фото и рисунки, научитесь самостоятельно подключать принтер и печать, общаться с родными и друзьями по скайпу и ICQ, узнаете, какие бывают игры, как выбрать игру для себя, и многое-многое другое.Никогда не поздно осваивать что-то новое! А уж тем более — компьютер. Он откроет вам целый мир безграничных возможностей. Не упустите свой шанс узнать что-то новое и интересное — дайте компьютеру прочно войти в вашу жизнь. Ведь пользоваться им так же просто, как и обычным телефоном, только в тысячу раз интереснее!

Оксана Грибова

Зарубежная компьютерная, околокомпьютерная литература / Интернет / Программное обеспечение / Прочая компьютерная литература / Книги по IT
Omert@. Руководство по компьютерной безопасности и защите информации для Больших Боссов
Omert@. Руководство по компьютерной безопасности и защите информации для Больших Боссов

Увы, друг мой, защита твоей информации - или хотя бы четкое понимание того, что это такое и как подобная защита должна строиться - это Твое Личное Дело! Не Cosa Nostra (хотя твои проблемы могут стать и Нашим Делом тоже), а Cosa Roba - Твое Дело!  Я знаю, что ты солидный человек, который привык платить, чтобы за него решали проблемы. Однако есть проблемы, которые за тебя никто не решит, - даже за очень большие деньги. Например, заниматься любовью со своей женой должен ты сам. Но кто тебе сказал, что защита твоей информации - это менее интимное дело, и его можно поручить постороннему?  Первая книга по безопасности для Менеджеров, а не для ботаников-компьютерщиков, информации от широко неизвестного благодаря своей репутации эксперта международного класса. Только благодаря ей Большой Босс сможет понять, каким образом он сможет чувствовать себя хотя бы в относительной безопасности!  Ты должен сам знать, что такое безопасность информации! Ни один нанятый специалист не решит это за тебя!  Если ты нанимаешь студента-компьютерщика за двести баксов в месяц и совершенно серьезно считаешь его специалистом по информационной безопасности, - не понятно, как ты вообще смог стать менеджером подобного уровня.

Алекс Экслер , Карл Шкафиц

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT