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

Поэтому в код необходимо включить файл ExpertSignal.mqh класса CExpertSignal, используя директиву include.



Далее должна присутствовать информация о модуле сигналов, предназначенная для мастера MQL5, которая используется для распознавания модуля сигналов мастером MQL5 при создании эксперта в окне добавления сигналов, а также при генерации самого кода эксперта.

Без этой информации мастер MQL5 просто не добавит сигнал в свой интерфейс, хотя файл сигнала и будет расположен в папке MQL5\Include\Expert\Signal.

После создания модуля сигналов редактор MetaEditor необходимо перезагрузить, чтобы сигнал добавился в мастер MQL5.

Здесь строка Title отображается в списке сигналов окна мастера MQL5, строка Page указывает на раздел справки и должна быть пустой, строки Parameter описывают методы установки параметров сигнала и используются при генерации кода советника.



Далее идет объявление параметров и методов класса модуля сигналов.

Здесь объекты m_ma* представляют скользящие средние, используемые системой Сидуса, параметр m_numberOpenPosition представляет количество баров, на которых будет проверяться пересечение скользящих средних.

Для генерации сигналов определим три модели прогноза цены — пересечение скользящими средними 5WMA и 8 WMA скользящих средних 18 ЕМА и 28 ЕМА, пересечение скользящей средней 5WMA скользящую среднюю 8 WMA, и пересечение скользящей средней 18 ЕМА скользящую среднюю 28 ЕМА.

И здесь метод ValidationSettings проверяет на корректность параметры сигнала, метод InitIndicators инициализирует объекты m_ma*.

Генерируемый эксперт будет получать сигналы модуля с помощью методов CheckOpenLong. CheckOpenShort, CheckCloseLong, CheckCloseShort, CheckReverseLong, CheckReverseShort класса CExpertSignal.

Однако эти методы, в свою очередь, формируют свои возвращаемые значения на основе значений, которые возвращаются методами LongCondition и ShortCondition нашего модуля.

Методы LongCondition и ShortCondition как раз и оперируют моделями прогноза цены.

Потому в модуле сигналов достаточно определить эти два метода.



Далее определим конструктор класса и его методы.



Здесь в методе LongCondition мы реализуем три модели прогноза цены на покупку.



И в методе ShortCondition мы реализуем три модели прогноза цены на продажу.

С помощью мастера MQL5 сгенерируем код эксперта на основе созданного модуля сигналов.



При оптимизации параметров данного эксперта на часовом графике EUR/USD получим, что эксперт лучше всего работает со следующими значениями параметров:



Signal_ThresholdOpen =20;Signal_ThresholdClose =20;Signal_MA_NumberOpenPosition =3;Signal_MA_Pattern_0 =60;Signal_MA_Pattern_1 =10;Signal_MA_Pattern_2 =100;Trailing_FixedPips_StopLevel =100;

Создание индикатора на основе модулей торговых сигналов эксперта

В качестве примера создадим индикатор на основе двух модулей сигналов SignalMA и SignalMACD, файлы которых находятся в каталоге MQL5\Include\Expert\Signal.



В мастере MQL5 создадим основу индикатора, выбрав вариант Пользовательский индикатор.



Теперь нам нужно указать свойства индикатора, а также определить функции OnInit и OnCalculate.

При создании индикатора на основе модулей торговых сигналов эксперта будем опираться на код сгенерированного с помощью MQL5 эксперта.



При работе такого эксперта, в функции OnTick, вызывается функция OnTick класса CExpert.



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

Так как функция Refresh является защищенной, а нам нужно обновлять данные модулей торговых сигналов в нашей функции OnCalculate, создадим свой класс CExpertInd, расширяющий класс CExpert.



Здесь мы просто перенесли код функции Refresh из класса CExpert, сделав функцию Refresh публичной.

Посмотрев на классы CSignalMA и CSignalMACD, мы увидим, что функции LongCondition и ShortCondition, дающие рыночные модели, вызываются на текущем баре.

Нам же нужно вызывать эти функции на всей истории символа.

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

Поэтому создадим классы CSignalMAInd и CSignalMACDInd, расширяющие классы CSignalMA и CSignalMACD.



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

И изменили функции LongCondition и ShortCondition, передавая в них в качестве параметра индекс бара, на котором нужно вычислить сигнал.



Тоже самое сделаем и в классе CSignalMACDInd, расширяющем класс CSignalMACD.

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

И изменим функции LongCondition и ShortCondition, передавая в них в качестве параметра индекс бара, на котором нужно вычислить сигнал.

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

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

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

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

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

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

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

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

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

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

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

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