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

В функции OnTick, мы вводим новые функции OnTradeSignalBuy и OnTradeSignalSell для вычисления сигналов на покупку и продажу.

И функции OnTradeSignalBuyStop и OnTradeSignalSellStop для вычисления сигналов на закрытие позиций на покупку и продажу.



Таким образом, мы должны дополнить код функции OnTick закрытием позиции на покупку и продажу.

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

То есть платформа MetaTrader 5 изначально создавалась для биржевой торговли с неттинговым учетом позиций.

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

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

Теперь по инструменту можно иметь множество позиций, в том числе — разнонаправленных.

Это позволяет реализовывать торговые стратегии с так называемым локированием — если цена пошла против трейдера, он имеет возможность открыть позицию в противоположном направлении.

Поэтому для надежного закрытия позиции мы используем библиотечные классы CPositionInfo и CTrade.

Поэтому включим в код файлы этих классов и создадим их экземпляры.

И в функции OnTick, мы в цикле проверяем все открытые позиции, и с помощью метода PositionClose класса CTrade закрываем позиции определенного типа.



И конечно же мы должны определить функции сигналов торговой системы, так как в методе OnTick для получения сигналов на продажу или покупку вызываются функции OnTradeSignalBuy, OnTradeSignalSell, OnTradeSignalBuyStop, OnTradeSignalSellStop.

Но сначала, перед функциями обратного вызова, мы объявляем входные параметры numberBarOpenPosition — количество баров, на которых будет проверяться пересечение 5WMA и 8 WMA туннеля из 18 ЕМА и 28 ЕМА, и numberBarStopPosition — количество баров, на которых будет проверяться пересечение 5WMA и 8 WMA и достижения ценой вершины или дна.

В функции OnTradeSignalBuy и функции OnTradeSignalSell с помощью хэндлов индикаторов заполняются динамические массивы значений индикаторов.



И на количестве баров numberBarOpenPosition проверяется пресечение 5WMA и 8 WMA туннеля из 18 ЕМА и 28 ЕМА.



В функции OnTradeSignalBuyStop и функции OnTradeSignalSellStop с помощью хэндлов индикаторов заполняются динамические массивы значений индикаторов и на количестве баров numberBarStopPosition проверяется пресечение 5WMA и 8 WMA и достижения ценой вершины или дна.

После компиляции советника в клиентском терминале нажмем правой кнопкой мышки на советнике и выберем Тестировать.



Попробуем оптимизировать параметры numberBarOpenPosition и numberBarStopPosition.



В результате оптимизации получим максимальный профит при значении numberBarOpenPosition = 11, и при значении numberBarStopPosition=4.

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



Условие достижения рынком дна или вершины можно заменить на горизонтальность линии EMA.

MathAbs (WMA5Buffer [1] — WMA5Buffer [numberBarStopPosition-1]) <0.001

И можно убрать действие сигналов TradeSignalBuyStop и TradeSignalSellStop и работать только на достижение Take Profit или Stop Loss.

Пример создания эксперта с использованием ООП

В предыдущем примере советника выделим функции OnCheckTradeInit, OnCheckTradeTick, OnTradeSignalBuy, OnTradeSignalBuyStop, OnTradeSignalSell, OnTradeSignalSellStop, а также код открытия и закрытия позиции в отдельные классы.



Проверочные функции OnCheckTradeInit и OnCheckTradeTick выделим в класс CheckTrade.

В этом классе мы объявляем два метода OnCheckTradeInit и OnCheckTradeTick.



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

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

И наконец, мы проверяем корректность объема, с которым мы собираемся выйти на рынок.



В методе OnCheckTradeTick мы проверяем соединение к серверу, включена ли кнопка авто-торговли в клиентском терминале, есть ли разрешение на торговлю с помощью эксперта в общих свойствах самого эксперта, и наступление события Margin Call.



Далее мы проверяем наступление события Stop Out и проверяем размер свободных средств на счете, доступных для открытия позиции.



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



Код открытия и закрытия позиции выделим в класс Trade.

Здесь мы объявляем переменные экземпляра класса — стоплосс, тейкпрофит и объем торговли в лотах.

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

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

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

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

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

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

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

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

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

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

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

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

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