Mt5 андроид трейлинг стоп

Советник Exp_TrailingStop для МТ5

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

Оставить отзыв

Трейдеру

Программы для тестирования стратегий

Рекомендуемые брокеры:

Литература по бизнесу, саморазвитию, трейдингу и мотивации

Жанры

Последние материалы

Еще на эту тему:

Exp_ColorPEMA_Digit_Tm_Plus — Торговая система, построенная на сигналах индикатора ColorPEMA_Digit с возможностью удержания позиций точно.

High Low Strategy On Time — Модификация «High Low Strategy»
Подробная инструкция по.

escape — Советник работает по сигналам от двух iMA: iMA(5) и iMA(4) на таймфрейме M5.
.

Fast Trading Panel — Fast Trading Panel — панель для быстрой торговли
Подробная.

LeManTrend EA — Торговая стратегия на пользовательском индикаторе «LeManTrend»
Подробная.

Larry Conners RSI 2 — Простой советник, основанный на стратегии Ларри Коннерса RSI 2.
.

iFractals iMACD — Торговая стратегия на индикаторах iFractals (Fractals) и iMACD (Moving Average Convergence/Divergence, MACD)
.

Stop loss Take profit — Советник на текущем символе выставляет всем позициям Стоп лосс и Тейк профит
.

iMA Trend Line — Торговая система на базе iMA (Moving Average) с обязательным отрицательным смещением по горизонтале
.

  • Cкидка 25% на Forex Tester
  • Скидка до 62,5% на сервис данных
  • Экономия до $228 при покупке Forex Tester + сервис данных

Источник

Советник TrailingStopAndTake для МТ5

TrailingStopAndTake — Простой трейлинг приказов стоп лосс и тейк профит открытых позиций.
Подробная инструкция по использованию советника

Оставить отзыв

Трейдеру

Программы для тестирования стратегий

Рекомендуемые брокеры:

Литература по бизнесу, саморазвитию, трейдингу и мотивации

Жанры

Последние материалы

Еще на эту тему:

EA_MARSI — Эксперт, основанный на индикаторе EMA_RSI_VA. При пересечении быстрой линии EMA_RSI_VA снизу вверх, производится покупка, и наоборот.

Exp_Fast2 — Эксперт Exp_Fast2 построен на основе сигналов индикатора Fast2.
Подробная.

Exp_SilverTrend_Duplex — Две одинаковые торговые системы (для лонгов и шортов), построенные на сигналах индикатора SilverTrend, которые можно.

Exp_CenterOfGravity — Эксперт Exp_CenterOfGravity построен на основе индикатора CenterOfGravity. Сигнал на совершение сделки формируется в момент.

Exp_Trigger_Line — Эксперт Exp_Trigger_Line построен на основе сигналов индикатора Trigger_Line.
.

MostasHaR15 Pivot — Советник использует индикаторы: iADX (Average Directional Movement Index, ADX), два iMA (Moving Average,MA) — один индикатор.

Exp_ColorJVariation — Торговая система с использованием осциллятора Exp_ColorJVariation.
.

MACD minimum level — Торговая стратегия по индикатору iMACD (Moving Average Convergence/Divergence, MACD) с фильтром минимального значения.

RSI martingale technology — Торговая стратегия по индикатору iRSI (Relative Strength Index, RSI). Возможно включить/выключить мартингейл
.

Pound trade — Торговая стратегия на отскок уровня дня
Подробная инструкция по.

  • Cкидка 25% на Forex Tester
  • Скидка до 62,5% на сервис данных
  • Экономия до $228 при покупке Forex Tester + сервис данных

Источник

Virtual Trailing Stop — эксперт для MetaTrader 5

  • Бесплатные приложения для трейдинга
  • Форексный VPS бесплатно на 24 часа
  • 8 000+ сигналов для копирования
  • Экономические новости для анализа финансовых рынков

Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.

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

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

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

По стоп-лоссу и тейк-профиту, как я понимаю, все и так понятно. Опишу лишь трал.

Трал управляется тремя переменными:

  1. длина трала;
  2. минимальная прибыль для старта;
  3. шаг трала.

Виртуальный стоп-лосс тянется за ценой на расстоянии длины трала. Минимальная прибыль — это то, когда начинаем выставлять виртуальный стоп-лосс. Шаг трала — это через сколько мы будем перемещать виртуальный стоп-лосс.

Допустим, у нас стоят значения 5, 2 и 3 соответственно.

Когда прибыль позиции достигнет 7 пунктов, виртуальный стоп-лосс переместится на цену открытия позиции плюс 2 пункта минимальной прибыли. Далее, если цена пройдет 3 пункта в сторону прибыли, стоп-лосс будет перемещен на 5 пунктов прибыли и так далее за ценой на расстоянии 5 пунктов. При откате цены до уровня стопа позиция будет закрыат.

Стопы трала обозначаются пунктирными линиями.

Для более простого и быстрого понимания советника можно установить его в тестер и там в режиме визуализации посмотреть его работу:

Источник

MetaTrader 4 для Android — пара вопросов

Недавно начал его использовать, поэтому не судите строго. Инструкции в сети почитал, ответа не нашел.

Вопрос №1 Трейлинг-стоп — есть ли он в MetaTrader 4 для Android ? Такое ощущение что нет.

Вопрос №2 Если у меня 3 счета, то для входа каждый раз придется вводить логин и пароль, нет ни запоминания ни быстрого переключения, вообще ничего? Может кто придумал как решать этот вопрос.

Недавно начал его использовать, поэтому не судите строго. Инструкции в сети почитал, ответа не нашел.

Вопрос №1 Трейлинг-стоп — есть ли он в MetaTrader 4 для Android? Такое ощущение что нет.

Вопрос №2 Если у меня 3 счета, то для входа каждый раз придется вводить логин и пароль, нет ни запоминания ни быстрого переключения, вообще ничего? Может кто придумал как решать этот вопрос.

Трейлинг стопа нет.

Ввести надо только один раз, он запоминает.

В прошлом году активно торговал с андроида и результаты были лучше чем после приобретения компа, собственно комп и приобрёл на деньги наторгованные на андроиде.

Трейлинг стопа нет.

Ввести надо только один раз, он запоминает.

В прошлом году активно торговал с андроида и результаты были лучше чем после приобретения компа, собственно комп и приобрёл на деньги наторгованные на андроиде.

Странно, у меня всё запоминает, на данный момент порядка 8 счетов и спокойно перехожу с одного на другой. там же есть возможность поставить галочку — запомнить пароль

я постоянно переключаюсь между четырьмя счетами

там одна тонкость есть

она у всех телефонов разная

когда её нажимаешь выскакивает меню где среди прочего «счета» и там список счетов + добавить счет, удалить счет

Переключение происходит через список счетов

Странно, у меня всё запоминает, на данный момент порядка 8 счетов и спокойно перехожу с одного на другой. там же есть возможность поставить галочку — запомнить пароль

я постоянно переключаюсь между четырьмя счетами

Читайте также:  Android создавать или нет

там одна тонкость есть

она у всех телефонов разная

когда её нажимаешь выскакивает меню где среди прочего «счета» и там список счетов + добавить счет, удалить счет

Переключение происходит через список счетов

Ну и лучше качнуть версию от метаквотов, можно подключиться к любому брокеру, раньше мт4 на андроиде были сплош пиратские 🙂 поскольку от метаквотов не было, сам был ошарашен, и тут на форуме тему завел где качнуть официальную версию для андроида, мне ответили официально что андроид версии от метаквотов нет :-))))))))))))))))))) Я был в ступоре поскольку сеть кишела «мт4 на андроиде» было правда это года три назад или около того

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

Источник

Как создать свой Trailing Stop

Введение

Перед тем как приступить к разговору на тему статьи, предлагаю расставить точки над i. Лишний раз не помешает определиться с понятиями «позиция» и «ордер»:

  • Позиция — это рыночное обязательство, количество купленных или проданных контрактов по финансовому инструменту. Позиция по одному инструменту может быть только одна.
  • Ордер — это распоряжение брокерской компании купить или продать финансовый инструмент. Различают несколько типов ордеров: рыночные и отложенные, а также стоп ордера (Стоп Лосс и Тейк Профит).

Рис. 1. Позиции и ордера.

В данной статье речь пойдет о трейлинге уровня Стоп Лосс для позиций. Для отложенных ордеров данная операция не имеет смысла, так как двигать можно непосредственно цену ордера. А уж когда он превратится в позицию (или ее часть), тогда вам и пригодится нижеизложенный материал.

Торговую позицию можно закрыть не только при помощи кнопки «Закрыть» окна управления позицией (рис. 2).


Рис. 2. Закрытие позиции кнопкой «Закрыть» окна управления позицией. 1 — открыть контекстное меню позиции, 2 — выбрать команду «Закрыть позицию»,
3 — нажать кнопку «Закрыть».

Кроме этого, позиция может быть закрыта автоматически при достижении ценой заранее установленного уровня прибыли (Тейк Профит) или уровня убытка (Стоп Лосс). В отличие от закрытия позиции кнопкой «Закрыть», закрытие по Стоп Лосс и Тейк Профит выполняется не из терминала (трейдером или экспертом), а брокером. Таким образом, обеспечивается абсолютно гарантированное закрытие позиции, независимо от наличия связи и электропитания. Это делает применение Стоп Лосс практически обязательным элементом в работе трейдера.

Единственное действие, которое должен сделать трейдер, — отдать брокеру приказ на установку уровня защитной остановки. Другими словами, необходимо установить Стоп Лосс на позицию (или сразу открыть позиции с установленным уровнем). Установка Стоп Лосс выполняется при помощи команды «Изменить» контекстного меню терминала. В списке позиций терминала необходимо навести указатель мыши на позицию, нажать правую кнопку и выбрать команду «Изменить или удалить». После этого в открывшемся окне управления позицией нужно ввести необходимый уровень Стоп Лосс и нажать кнопку «Изменить» (рис. 3).


Рис. 3. Установка уровня Стоп Лосс позиции. 1 — открыть контекстное меню позиции, 2 — выбрать команду «Изменить или удалить», 3 — установить значение, 4 — нажать кнопку «Изменить».

Уровень Стоп Лосс позиции отображается на ценовом графике вместе с уровнем ее открытия (рис.4).


Рис. 4. Позиция со Стоп Лосс. Уровень обозначен красной пунктирной линией с надписью sl с левого края линии.

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

Существует огромное количество вариантов трейлинг стопа: Стоп Лосс можно просто подтягивать за ценой на заданной дистанции. Можно начинать перемещать Стоп Лосс не сразу, а после того, как позиция достигла определенной прибыли; при этом сначала перенести его сразу на уровень безубыточности. Такой вариант считается стандартным и даже встроен в терминал MetaTrader 5. Для использования стандартного трейлинг стопа необходимо открыть контекстное меню позиции и выбрать команду «Трейлинг стоп» (рис. 5).


Рис. 5. Включение стандартного трейлинг стопа в терминале. 1 — открыть контекстное меню позиции, 2 — выбрать команду «Трейлинг стоп», 3 — выбрать значение (или установить значение).
Команда «Установить значение» находится в самом низу контекстного меню, на изображении не показана.

Кроме непосредственного отслеживания цены, трейлинг стоп может работать на основе какого-нибудь технического индикатора. Например, на основе скользящих средних, что позволяет не реагировать на кратковременные изменения цены; на индикаторе Ichimoku или на более подходящем; и даже на предназначенном для этих целей индикаторе Parabolic SAR (Stop And Reverse — стоп и разворот), рис. 6.


Рис. 6. Индикатор Parabolic SAR.

При процедурном программировании на MQL4 трейлинг стоп обычно выполнялся в виде отдельной функции или был интегрирован в другие функции. Например, в эксперте MACD Sample, входящем в комплект терминала MetaTrader 4, функция трейлинга интегрирована с функцией рыночного закрытия ордеров:

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

1. Создание базового класса трейлинга

Как уже говорилось выше, разновидностей трейлинг стопа существует огромное количество, но у всех у них есть общие функциональные моменты:

  • определение типа (направления) позиции;
  • определение текущего уровня Стоп Лосс позиции;
  • расчет нового уровня Стоп Лосс;
  • проверка на необходимость изменения текущего уровня Стоп Лосс;
  • модификация уровня Стоп Лосс для позиции.

От типа трейлинг стопа будет зависеть только значение расчетного уровня Стоп Лосс. Таким образом, основной функционал трейлинга будет входить в базовый класс. Для функционала, зависящего от типа трейлинга, будут созданы подклассы. Обращение к методам этих подклассов будет выполняться через виртуальные методы базового класса.

Поскольку планируется использовать технические индикаторы, для обеспечения их устойчивой работы требуется обеспечить к ним периодическое обращение. Для этой цели будет использоваться таймер. Запланирована возможность программного включения/выключения трейлинга (при использовании класса в составе механической торговой системы), и включение/выключение при помощи графического объекта кнопки (при использовании класса в составе вспомогательных экспертов). В соответствии с этими функциональными требованиями базовый класс будет иметь следующий набор методов:

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

  • Метод StartTimer() — будет использоваться для запуска таймера, необходимого для периодического обращения к индикаторам и принудительного удержания их в кэше терминала.
  • Метод Stoptimer() — будет использоваться для остановки таймера при завершении работы эксперта.
  • Метод On() — программное включение трейлинг стопа и установка кнопки в нажатое положение (если кнопка используется).
  • Метод Off() — программное выключение трейлинг стопа и установка кнопки в отжатое положение (если кнопа используется).
  • Метод DoStoploss() — основной метод для управления уровнем Стоп Лосс позиции.
  • Метод EventHandle() — используется для обработки событий графика, в частности, для реагирования на нажатие кнопки и включение/выключение трейлинг стопа в зависимости от положения кнопки.
  • Метод Deinit() — выполняется при завершении работы эксперта, обеспечивает освобождение хэндла используемого индикатора.
  • Метод Refresh() — обеспечивает обновление значений индикатора. Метод необходим для определения текущих значений индикатора перед вычислением значений стоплосс. Кроме того, метод используется самостоятельно — периодически вызывается по таймеру для поддержания индикаторов в работоспособном состоянии.
  • Метод SetParameters() — при вызове метода ему передаются параметры индикатора, загружается индикатор с указанными параметрами.
  • Метод Trend() — метод определения тренда показываемого индикатором. Если индикатор показывает направление вверх, метод возвращает значение 1, если вниз — значение -1.
  • Методы BuyStoploss() и SellStoploss() — будут возвращать рассчитанные по индикатору новые значения Стоп Лосс для позиций buy и sell соответственно.
Читайте также:  Patapon для ppsspp android

Метод Init() является первым методом, вызываемым после создания экземпляра класса. В него передаются общие, не зависящие от типа трейлинг стопа, параметры: символ, таймфрейм; устанавливается режим работы трейлинг стопа: по тикам или по барам; присоединять или не присоединять индикатор на график, создавать или нет кнопку. Затем свойства кнопки: координата X кнопки, координата Y кнопки, цвет кнопки, цвет надписи на кнопке.

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

В разделе «protected» объявим все необходимые переменные:

Теперь напишем сам метод Init():

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

1.2. Метод StartTimer()

Метод StartTimer() выполняет запуск общего таймера эксперта.

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

1.3. Метод StopTimer()

Метод StartTimer() выполняет остановку таймера эксперта.

По завершении работы эксперта, если использовался таймер, его необходимо остановить, что и делает этот метод. Метод будет вызываться при выполнении метода Deninit() класса.

Метод On() позволяет производить программное включение трейлинг стопа. Включение выполняется установкой для переменной m_onoff значения true. Если при инициализации класса установлено использование кнопки, то она переводится в нажатое положение.

Метод On() позволяет производить программное выключение трейлинг стопа. Выключение выполняется установкой для переменной m_onoff значения false. Если при инициализации класса установлено использование кнопки, то она переводится в отжатое положение.

1.6. Метод EventHandle()

Метод EventHandle() будет вызываться из функции OnChartEvent() эксперта и соответственно ему будут передаваться все параметры, передаваемые в функцию OnChartEvent().

Если происходит событие CHARTEVENT_OBJECT_CLICK, и это событие происходит с кнопкой, имеющей имя m_objname (имя объекта, с которым произошло событие, передается в переменной sparam), то в зависимости от состояния кнопки выполняется метод On() или Off().

Метод Deinit() должен вызываться по завершении работы эксперта. При выполнении метода происходит остановка таймера, освобождение хэндла индикатора и удаление кнопки, если она использовалась.

Виртуальные методы Refresh(), SetParameters(), Trend(), BuyStoploss(), SellStoploss() будут рассмотрены позже — при создании подклассов трейлинг стопа, а пока подробно рассмотрим основной метод базового класса — метод DoStoploss().

1.8. Метод DoStoploss()

Метод DoStoploss() является основным рабочим методом, который должен вызываться из функции OnTick() эксперта на каждом тике. Если значение переменной m_onoff равно false (трейлинг стоп выключен), то сразу выполняется завершение работы метода.

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

Если трейлинг стоп включен и проверка времени пройдена, то выполняется основная часть метода — обновляются показания индикатора — вызывается метод Refresh().

Затем, в зависимости от значения возвращаемого методом Trend(), выполняется трейлинг стоп для позиции buy или sell.

Рассмотрим его работу на примере позиции buy.

Если позицию удается выделить, проверяется ее тип. Если тип позиции соответствует тренду, то, используя метод BuyStoploss(), получаем требуемое значение Стоп Лосс (в переменную sl). Далее определяем допустимый уровень, на который может быть установлен Стоп Лосс. Если расчетный уровень ближе допустимого, корректируем значение переменой sl. Затем получаем текущее значение Стоп Лосс позиции (в переменную possl), сравниваем значения sl и possl. Если новое значение Стоп Лосс лучше текущего значения, выполняем модификацию позиции.

Перед выполнением модификации заполняем поля sl и tp структуры MqlTradeRequest. Переменной m_request.sl присваивается требуемое значение Стоп Лосс, переменной m_request.tp — существующее значение Тейк Профит (его оставляем без изменений); остальные поля уже заполнены при выполнении метода Init(). После заполнения структуры вызывается функция OrderSend().

По завершении ее работы проверяется значение переменной m_result.retcode. Если значение не равно TRADE_RETCODE_DONE, значит по какой-то причине не удалось выполнить запрошенное функцией OrderSend() действие. При этом в журнал выводится сообщение с номером ошибки и выполняется завершение метода. Если функция OrderSend() выполнена успешно, то запоминается время бара, на котором производилась последняя работа метода DoStoploss(). В случае же ошибки, даже при побарном режиме, на следующем тике произойдет повторная попытка работы метода. Попытки будут продолжаться до тех пор, пока он не завершит свою работу успешно.

Ниже приведен весь код метода DoStopLoss().

Обратите внимание на различия в коде для позиции buy и позиции sell. Для позиции sell значение, возвращаемое методом SellStoploss(), увеличивается на величину спреда, поскольку позиция sell закрывается по цене Ask. Соответственно, и отсчет минимального уровня Стоп Лосс для buy выполняется от цены Bid, для sell — от Ask.

На этом создание базового класса трейлинга выполнено, переходим к созданию подклассов.

2. Подкласс трейлинга по индикатору Parabolic SAR

По виртуальным методам класса CTrailingStop уже должен быть понятен состав подкласса — методы SetParameters(), Refresh(), Trend(), BuyStoploss(), SellStoploss() и конструктор класса для установки имени трейлинг стопа. Класс будет иметь имя CParabolicStop. Поскольку класс является подклассом класса CTrailingStop, это будет указано при его объявлении.

За счет такого объявления при вызове виртуальных методов класса CParabolicStop будут выполняться методы подкласса выбранного при загрузке базового класса.

Рассмотрим подробно все методы подкласса.

2.1. Метод CParabolicStop()

Метод имеет такое же имя, как и сам класс, такой метод называется конструктором. Он выполняется автоматически в момент загрузки класса, еще до того, как в программе будут вызваны другие методы класса. При выполнении метода CParabolicStop() выполняется присваивание названия трейлинг стопа переменной m_typename, которая используется для формирования имени и надписи кнопки (при выполнении метода Init() базового класса).

2.2. Метод SetParameters()

При вызове метода SetParameters() ему передаются параметры индикатора, выполняется загрузка индикатора с этими параметрами. Если при выполнении метода Init() базового класса установлен параметр m_indicator, то выполняется присоединение индикатора на график (функция ChartIndicatorAdd()).

2.3. Метод Refresh()

Метод Refresh() обеспечивает получение новой цены и обновление показаний индикатора. Для значения цены в разделе protected класса объявлен массив pricebuf, для значения индикатора — массив indbuf. Оба массива имеют размер в один элемент — необходимо только одно значение цены и одно значение индикатора с формирующегося или сформированного бара (в зависимости от параметра m_shift, установленного при инициализации базового класса).

Читайте также:  Textview set weight android

В методе Trend() проверятся положение цены относительно линии индикатора. Если цена выше линии, значит тренд восходящий, и метод возвращает значение 1. Если цена ниже линии индикатора, значит тренд нисходящий, и возвращается значение -1. Не исключен случай (редко, но возможно), когда цена равна линии индикатора. В этом случае будет возвращаться значение 0.

2.5. Методы BuyStoploss() и SellStoploss()

Поскольку у индикатора Parabolic SAR только одна линия, оба метода полностью идентичны. Они возвращают значение, полученное при выполнении метода Refresh().

На этом трейлинг стоп, можно сказать, готов. Пока он содержит только один подкласс, но им уже можно пользоваться. Оформим его в виде отдельного включаемого файла и сохраним в каталоге .\MQL5\Include с именем Sample_TrailingStop.mqh (файл прилагается к статье).

3. Добавление трейлинга по Parabolic в эксперта

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

3.1. Откроем файл эксперта My_First_EA в редакторе MetaEditor и сохраним его с именем My_First_EA_SARTrailing.

3.2. Подключим файл трейлинг стопа. В верхнюю часть кода эксперта (желательно до объявления внешних переменных) добавим строку:

3.3. Ниже внешних переменных создаем экземпляр класса CParabolicStop с именем Trailing.

3.4. В функции OnInit() эксперта проводим инициализацию класса и установку его параметров. Предварительно объявим внешние переменные с параметрами индикатора:

Затем добавим код в функцию OnInit().

3.5. Ищем в коде эксперта функцию OnTimer(). В эксперте My_First_EA не используется функция OnTimer(), значит добавляем ее, а в нее добавляем вызов метода Refresh().

3.6. В самый верх функции OnTick() эксперта добавляем вызов метода DoStoploss().

3.7. Компилируем эксперта и пробуем его протестировать. Результаты тестирования эксперта приведены на рис. 7 (без трейлинг стопа) и рис. 8 (с трейлинг стопом).


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


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

Повышение эффективности при использовании трейлинг стопа очевидно.

Файл My_First_EA_SARTrailing.mq5 прилагается к статье.

4. Подкласс трейлинга по индикатору NRTR

Индикатор NRTR (Nick Rypock Trailing Reverse) по своему названию (Trailing Reverse — подтягивание и переворот) и внешнему виду (рис. 9) располагает к тому, чтобы попробовать создать на нем трейлинг стоп.


Рис. 9. Индикатор NRTR

Индикатор рисует базовую линию (линию поддержки или сопротивления) и линию цели. При превышении ценой значения цели, базовая линия переносится по ходу движения цены, незначительные колебания цены игнорируются. Пересечение ценой базовой линии считается сменой тренда, при этом меняется расположение базовой линии и линии цели относительно цены. Линии поддержки и цели при тренде вверх окрашены синим цветом, при тренде вниз — красным.

Создадим еще один трейлинг стоп, теперь на индикаторе NRTR.

Объявим еще один класс CNRTRStop входящий в базовый класс CNRTRStop.

Подкласс трейлинга по NRTR будет иметь точно такой же набор методов как трейлинг по Parabolic, за исключением конструктора класса, теперь он будет иметь имя CNRTRStop().

4.1. Метод CNRTRStop()

Теперь в конструкторе класса переменной m_typename будет присваиваться значение NRTR в соответствии с используемым индикатором.

4.2. Метод SetParameters()

При вызове метода SetParameters() ему будут передаваться параметры индикатора NRTR и выполняться его загрузка. Затем, в зависимости от основных параметров трейлинга, будет выполняться присоединение индикатора на график.

4.3. Метод Refresh()

В методе Refresh() выполняется копирование двух буферов индикатора NRTR — буфера линии поддержки и буфера линии сопротивления.

Для значений индикатора в разделе protected класса объявлено два массива: double sup[] и double res[].

В методе Trend() проверятся, какая из линий существует в данный момент времени. Если линия поддержки, значит,индикатор показывает тренд вверх, при этом метод возвращает значение 1. Если существует линия сопротивления, то метод возвращает значение -1.

4.5. Метод BuyStoploss()

Метод BuyStoploss() возвращает значение линии поддержки.

4.6. Метод SellStoploss()

Метод SellStoploss() возвращает значение линии сопротивления.

Теперь класс трейлинг стопа полностью готов.

5. Добавление трейлинг стопа по NRTR в эксперта

Так же, как уже делали с трейлинг стопом по Parabolic, добавим в эксперта My_First_EA трейлинг стоп по NRTR.

5.1. Откроем в редакторе MetaEditor доработанного ранее эксперта My_First_EA_SARTrailing и сохраним его с именем My_First_EA_NRTRTrailing.

5.2. Внешние параметры трейлинг стопа по Parabolic заменим на параметры трейлинг стопа по NRTR.

5.3. Вместо создания экземпляра класса CParabolicStop создадим экземпляр класса CNRTRStop; код располагается под внешними переменными.

5.4. В функции OnInit() эксперта заменим параметры вызова метода SetParameters() на параметры NRTR.

5.5. Компилируем эксперта и пробуем его протестировать.


Рис. 10. Результаты тестирования эксперта с трейлинг стопом по NRTR.

Результат работы эксперта (рис. 10) с трейлинг стопом по сравнению с работой эксперта без него (рис. 7) почти не изменился. Использование трейлинг стопа по Parabolic оказалось более эффективным для этого эксперта. Можно сделать вывод, что арсенал из некоторого количества трейлинг стопов может быть очень полезен при разработке экспертов – для проведения экспериментов и выбора наиболее подходящего типа трейлинг стопа.

Файл My_First_EA_NRTRTrailing.mq5 прилагается к статье.

6. Эксперт-помощник

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

6.1. Создаем в редакторе MetaEditor нового эксперта с именем Sample_TrailingStop.

6.2. Подключаем файл с классом Sample_TrailingStop.mqh.

6.3. Объявляем внешние параметры для индикаторов.

6.4. Объявляем массив с символами, на которых эксперт сможет работать.

6.5. Объявляем массивы для загрузки классов.

6.6. В функции OnInit() эксперта изменяем размеры массивов для загрузки классов в соответствии с размером массива Symbols.

6.7. В цикле для каждого элемента массива выполняем загрузку экземпляра класса.

Обратите внимание: при вызове методов Init() выполняется вычисление координат кнопок. Слева будут располагаться кнопки включения трейлинг стопа по Paraboloic, справа — по NRTR.

6.8. В функцию OnTick() добавляем вызов метода DoStoploss() для каждого экземпляра трейлинга.

6.9. Добавляем обработку событий графика.

6.10. В функции Deinit() выполняем деинициализацию всех экземпляров класса и их удаление.

Компилируем, присоединяем эксперт на график, на графике появляются индикаторы и кнопки (рис. 11) — эксперт готов к работе.


Рис. 11. Кнопки и индикаторы на графике после запуска эксперта Sample_TrailingStop.

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

Файл эксперта Sample_TrailingStop.mq5 прилагается к статье.

Заключение

Освежим в памяти порядок использования класса CTrailingStop при создании механической торговой системы:

1. Подключить файл Sample_TrailingStop.mqh.

2. Объявить внешние переменные с параметрами индикатора используемого трейлинг стопа.

3. Создать экземпляр класса.

4. Добавить вызов методов Init(), SetParameters(), StartTimer(), On() из функции OnInit() эксперта.

5. Добавить вызов метода Refresh() из функции OnTimer() эксперта.

6. Добавить вызов метода DoStopLoss() из функции OnTick() эксперта.

7. Добавить вызов метода Deinit() из функции OnDeinit() эксперта.

Семь шагов, не более 5-ти минут, и в вашем эксперте уже есть функция трейлинг стопа!

Источник

Оцените статью