Меню

Настройки советника take profit



Повышаем вероятность Тейк Профита с помощью утилиты EasyTakeProfit

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

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

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

Немного теории

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

Причина этого довольно проста – в любой момент времени цена двигается вверх и вниз внутри некоего типичного для инструмента диапазона, независимо от наличия тренда или чего-либо еще. Если стоп-лосс находится относительно близко к начальному уровню, то велика вероятность того, что цена пробьет его. В принципе, рынок любит пускать “шипы”, консолидироваться и двигаться вдоль уровня стоп-лосса, очень близко находясь возле него и представляя серьезную опасность для его пробития. Также рынок любит тестировать уровни и предыдущие экстремумы, за которыми, как правило, очень часто устанавливаются стоп лоссы. Размещая стоп-лоссы за пределами этого ожидаемого диапазона, трейдеры могут держать стоп-лосс на более безопасном расстоянии, уменьшая вероятность убытка. Тем не менее, стоит помнить, что любой сигнал вашей торговой стратегии может оказаться убыточным, но установка стопа вне диапазона защитит позицию от случайного шумового движения цены.

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

Так что же такое ожидаемый диапазон и как он вычисляется?

Для определения этого диапазона используется индикатор волатильности ATR (Средний Истинный Диапазон или Average True Range), изобретенный Дж. Уэллсом Уайлдером для товарных рынков.

Трейдеры-победители, участвовавшие в исследовании, использовали средний истинный диапазон (ATR), в результате чего было установлено, что:
1. Вероятность пробития уровня стоп-лосс резко снижается, если в индикаторе ATR мы используем множитель от 7 до 12;
2. Вероятность пробития уровня тейк-профит значительно увеличивается, если в индикаторе ATR мы используем множитель от 4 до 8.

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

Иными словами, стоп лоссы нужно ставить так, чтобы вероятность их пробития была мала, и наоборот – для уровней тейк профита. Советник EasyTakeProfit делает необходимые расчеты согласно этой теории и наносит на график зоны взятия прибыли и установки стопов.

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

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

Установка эксперта

Эксперт устанавливается по стандартной инструкции в папку \MQL4\Experts. Параметр в настройках всего один – масштаб кнопок управления.

Применение

Пользоваться экспертом предельно просто – достаточно нажать на кнопку, соответствующую открываемой позиции, и на графике появятся зоны для установки стоп лосса (оранжевого цвета) и тейк профита (зеленого цвета). Границы этих зон рассчитываются от текущей цены в соответствии с идеей, изложенной выше – для стоп лосса, например, зона будет начинаться на расстоянии 7 значений ATR от текущей цены и иметь толщину в 5 значений. Стоп лосс устанавливается в любом месте в пределах оранжевой зоны, тейк профит – в пределах зеленой.

Заключение

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

Источник

Советник который выставляет тейк профит и стоп для каждой позиции

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

На счетах с исполнением по рынку (NDD, STP) при открытии позиции установить ограничение убытка или прибыли нельзя — это можно делать только после открытия сделки.

В качестве помощника можно использовать этот советник из MQL 4 Code Base

Советник называется SetUpProfitAndLoss

Скачать советник для автоматической установки стопа и тейк профита для MT4 — SetUpProfitAndLoss

Описание SetUpProfitAndLoss с MQL 4 Code Base

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

Данный советник это и делает. Кроме того реализованы два вида трейлинга (обычный и до перевода в безубыток). Писал для себя, но может кому-то ещё будет полезен.

TakeProfit — ограничение прибыли в пп (можно 0, если не хотите ограничивать прибыль, или хотите закрывать по трейлингу);

StopLoss — ограничение убытка в пп (можно 0, если хотите не ограничивать убыток);

TrailingStop — если не хотите использовать трейлинг (подтягивание) поставьте здесь 0, если хотите перевести ордер в безубыток по достижении определённого количества пунктов — поставьте значение пунктов со знаком минус, если хотите использовать как обычный трейлинг поставьте положительное значение в пунктах. Если поставить слишком маленькие значения, то советник сообщит об этом, указав в комментарии минимально возможное значение параметра, и в случае установки недопустимого значения для трейлинга — не будет работать только трейлинг;

SetOnlyZeroValues — Признак изменения только нулевых значений, то есть если вы уже изменили каким-либо образом одно из значений («профит или лосс»), то советник исправит только нулевое значение. Если установить признак в значение ложь (false) то при наличии в любом из параметров открытого ордера «профит» или «лосс» 0, если при этом в параметрах не ноль, советник изменит оба параметра ордера по установленным в советнике значениям;

BuyOrderColor — Цвет линии ордеров на покупку;

SellOrderColor — Цвет линии ордеров на продажу.

Рекомендации по использованию:

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

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

Фразы: советник для MT4, автостоп и тейк, трал

Источник

Automatic стоп лосс и тейк профит

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

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

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

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

Читайте также:  Tinymce установка настройка и использование

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

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

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

Установка советника Automatic стоп лосс и тейк профит

Советник Automatic стоп лосс и тейк профит, в отличие от ряда других подобных бесплатных экспертов не размещен в библиотеке, а распространяется совершенно бесплатно через маркет от разработчиков МТ4.

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

Первый способ установки производится довольно быстро. Для этого потребуется открыть торговый терминал и переместится во вкладку «Маркет», которая находится в панели под названием «Терминал».

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

Найдите Automatic Stop Loss and Take Profit и произведите загрузку. Терминал должен создать папку «Markets» в списке ваших советников, собственно, где и будет находиться робот.

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

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

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

Применение и Настройки Automatic Stop Loss and Take Profit

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

Алгоритм работы робота очень прост – его следует нанести на любую валютную пару или тайм фрейм.

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

Следовательно, достаточно удерживать робота постоянно на одном графике, чтобы он выставлял стопы и профит по всем символам.

В настройках советника присутствует лишь необходимый минимум переменных, а именно в строке stop_loss вы можете задавать размер стоп приказа в пунктах и в строке take_profit размер профита в пунктах.

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

Источник

Пишем кроссплатформенный помощник для выставления StopLoss и TakeProfit в соответствии со своими рисками

Введение

Как вы, наверное, знаете, при любой торговле крайне рекомендуется соблюдать правила мани-менеджмента. А именно, не входить в сделку, в которой вы можете потерять более N% от своего депозита.

Какое будет N, вы выбираете сами. Но чтобы соблюсти это правило, следует правильно высчитать лот, которым нужно войти в сделку.

Те, кто в своих мастер-классах советуют так делать, обычно показывают Excel-файл, в котором у них уже забиты нужные формулы расчета лота для каждого символа. А им остается «просто» ввести размер своего стоп-лосса, чтобы получить нужный объем лота.

Но так ли это «просто»? Эта операция может занять минуту и более вашего времени. И когда вы наконец определитесь с размером лота, цена может далеко уйти от предполагаемого места входа. И это не говоря уже о той лишней работе, которую вы делаете. И что еще хуже, дополнительная ручная работа всегда увеличивает вероятность совершить ошибку.

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

Постановка целей

Итак, с первой задачей мы определились.

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

Герчик и другие успешные трейдеры советуют всегда ставить тейк-профит, который как минимум в 3 раза больше вашего стоп-лосса. То есть если вы ставите стоп-лосс в 40 пунктов, то тейк-профит должен быть минимум 120 пунктов. И если шансов, что до этого уровня цена дойдет, немного, то в сделку лучше не заходить.

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

Но остается вопрос, как же нам выставлять уровень тейка, не тратя на это драгоценные минуты своего времени? Опять пытаться использовать Excel? Или надеяться, что метод «на глаз» вполне подойдет?

Чтобы даже не задумываться над этим, давайте также заложим данную возможность в настройках советника. У нас будет специальный параметр, который позволит задать соотношение стоп-лосса к тейк-профиту. Например, значение 4 этого параметра будет означать, что соотношение должно быть 4 к 1. И тогда советник автоматически будет выставлять уровень тейк-профита в 4 раза больше, чем выбранный вами размер стоп -лосса.

Формат работы советника. И последняя задача, которую нам нужно решить перед тем, как начать разработку: определиться, как же будет работать наш советник. И, на самом деле, это, наверное, самая сложная задача.

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

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

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

Например, вот так выглядит окно графика с диалоговым окном при ширине в 640 пикселей:

Рис.1.Версия советника с диалоговым окном

Как можно заметить, окно даже полностью не помещается на экране.

С целью решения данной проблемы со временем появилось 2 версии данного советника.

В первой данная проблема была решена сокрытием окна настроек по умолчанию, и его выводом при нажатии кнопки Настройки. Этот советник до сих пор можно приобрести в Маркете для MetaTrader 5.

Ну а вторая версия советника вообще обходится без диалогового окна настроек. Все настройки советника задаются с помощью входящих параметров. Что избавляет нас от необходимости использования диалогового окна, но при этом обрекает нас на один из следующих вариантов мук:

  • при каждом запуске советника заново настраивать его под себя;
  • при каждом запуске советника загружать свои настройки из SET-файла;
  • изменить стандартные настройки в коде советника и перекомпилировать его.

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

Рис.2. Версия советника без диалогового окна

Входящие параметры

Чтобы лучше понять весь фронт работ, давайте в первую очередь посмотрим на входящие параметры нашего советника:

Рис.3. Входящие параметры советника

Вся наша торговля будет строиться от стоп-лосса, как и советуют гуру трейдинга. Поэтому в первую очередь обратите внимание на первые два параметра: » Тип стоп-лосса» и «Размер стоп-лосса в $ или %«.

Читайте также:  Настройка головки для триколор

По умолчанию стоп-лосс задается в долларах, о чем говорит параметр «Тип стоп-лосса«. Также стоп-лосс можно задавать в процентах от вашего баланса. При этом, если выбран стоп-лосс в процентах, то выставленное значение не может превышать 5% от депозита. Это сделано во избежание ошибок при установке параметров советника.

Параметр «Размер стоп-лосса в $ или %» как раз и определяет ту сумму, которую вы готовы потерять при наступлении стоп лосса.

Размер стоп-лосса в центах (клавиши 7 и 8). Также к заданию стоп-лосса можно отнести еще один параметр — «Размер стоп лосса в центах (клавиши 7 и 8)«.

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

Следует понимать, что этот параметр определяет не сумму, которую вы потеряете при стоп-лоссе, а именно расстояние от цены открытия до той цены, на которой сработает стоп-лосс.

Не входить в сделку, если при мин. лоте риск больше заданного. Поскольку размер лота, с которым нужно войти в сделку, высчитывается автоматически исходя из параметра » Размер стоп-лосса в $ или %«, может возникнуть такая ситуация, что даже при минимально возможном у вашего брокера лоте риск на сделку будет больше заданного вами.

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

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

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

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

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

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

Остальные параметры. Также вы можете:

  • изменить Magic-номер, который советник будет присваивать ордерам;
  • задать комментарий, который будет присваиваться ордерам;
  • выбрать язык интерфейса между русским (по умолчанию) и английским.

Функция открытия позиции

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

Что это такое, я уже не раз рассказывал в своих статьях. Например, в статье Создаем кроссплатформенный советник-сеточник (гридер).

Если вкратце, то код условной компиляции выглядит так:

На протяжении всей статьи возможностями условной компиляции мы воспользуемся всего 3 раза, два из которых относятся к функции открытия позиции. Весь остальной код будет одинаково работать и в MetaTrader 4, и в MetaTrader 5.

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

В MetaTrader 5 при открытии позиции необходимо выбрать тип ее исполнения. Поэтому для MetaTrader 5 мы добавляем еще один входящий параметр: » Режим исполнения ордера«.

Разные брокеры поддерживают разные типы исполнения ордеров. Наверное, наиболее популярным среди брокеров является тип исполнения ORDER_FILLING_FOK. Поэтому он выбран по умолчанию. Однако если ваш брокер не поддерживает данный режим, вы легко можете выбрать тот, который он поддерживает.

Локализация советника

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

Программируем интерфейс советника

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

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

И начнем мы с интерфейса нашего советника.

При запуске советника будут созданы следующие элементы интерфейса:

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

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

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

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

Если же вы хотите войти в рынок лимитным ордером, тогда дополнительно нужно нажать на кнопку «Показать линию цены открытия (0)«, и переместить появившуюся зеленую линию на цену, по которой вы хотите открыть лимитный ордер. Направление и тип лимитного ордера советник определит автоматически на основе расположения линии стоп лосса и линии тейк-профита (стоп лосс выше цены открытия или ниже).

В принципе, кнопку «Показать линию цены открытия (0)» можно и не нажимать. После того, как вы переместите красную линию стоп-лосса на нужную цену, данная кнопка будет нажата автоматически, и появится зеленая линия цены открытия. Если переместить её, то будет открыт лимитный ордер. Если же не трогать, то откроется позиция по рынку.

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

Работа с комментарием к графику. Для работы с комментарием к графику используется стандартная функция Comment. Поэтому нам осталось только подготовить ту строку, которую функция Comment выведет на график. Для этого мы создадим собственную функцию getmespread:

Вызывать функцию getmespread будем как при инициализации советника (OnInit), так и при каждом новом тике (OnTick).

В функции getmespread мы используем пять глобальных переменных нашего советника: lastme, isClosed, time_info, currencyS, curPoint.

В переменной lastme хранится информация об Ask и Bid последней полученной цены. Ее содержимое обновляется в функциях OnInit и OnTick командой:

Остальные переменные инициализируются в функции OnInit. isClosed и time_info инициализируются следующим образом:

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

Размер пункта по инструменту мы будем хранить в переменной curPoint:

Линия стоп-лосса. Непосредственно при запуске советника мы видим только одну линию — красную линию выставления стоп лосса.

Как и кнопки, данную линию мы будем выводить в функции OnInit. Но перед тем, как вывести линию, нужно проверить, нет ли уже такой линии на графике. Если линия есть, то новую линию и остальные элементы интерфейса мы не создаем. Вместо этого в глобальные переменные поместим цену, на которой находится данная линия, а также цену, на которой находится линия открытия сделки, если таковая линия есть на графике:

Может ли вообще возникнуть такая ситуация, когда на графике уже есть элементы интерфейса запускаемого советника?

Читайте также:  Настройка налогового учета в 1с8

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

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

Любое взаимодействие с элементами интерфейса графика осуществляется в стандартной функции OnChartEvent. Перемещение элементов интерфейса генерирует событие с ID CHARTEVENT_OBJECT_DRAG. Таким образом, чтобы выполнить что-либо после перемещения линии на графике, нужно в функции OnChartEvent перехватить данное событие, проверить, элемент с каким именем его вызвал, и если это наш элемент, то можно выполнять нужный нам код:

После перемещения красной линии будет запущена функция setstopbyline, которая «запоминает» уровень стоп лосса для будущего ордера:

Помимо функции setstopbyline перемещение красной линии приводит к отображению на графике линии цены открытия (функция showOpenLine) и изменению состояния кнопки » Показать линию цены открытия (0)«.

Кнопка и линия цены открытия. Кнопка «Показать линию цены открытия (0)» также создается при инициализации советника:

Как уже говорилось выше, любое взаимодействие с элементами интерфейса обрабатывается внутри стандартной функции OnChartEvent. В том числе и нажатие кнопок. За это отвечает событие с ID CHARTEVENT_OBJECT_CLICK. Нам остается только перехватить его, проверить источник события, и выполнить нужные действия. Для этого добавим дополнительный case в оператор switch функции OnChartEvent:

Функция updateOpenLine, которая вызывается при клике на кнопку «Показать линию цены открытия (0)«, является небольшой оберткой для вызова основной функции showOpenLine. Та, в свою очередь, просто выводит на график цену открытия:

Нам остается только переписать обработчик события CHARTEVENT_OBJECT_DRAG, чтобы он реагировал на перемещение как линии стоп-лосса, так и линии цены открытия:

Линия тейк-профита. Помимо красной и зеленой линии нам предстоит реализовать еще одну — пунктирную. Она будет появляться после того, как вы переместите на нужную цену красную линию стоп-лосса. И показывать она будет цену, при достижении которой наступин тейк-профит по сделке:

Рис.4. Линии стоп лосса, цены открытия и цены тейк-профита

Кнопка открытия позиции. Кнопка открытия позиции выводится точно таким же образом, как и кнопка «Показать линию цены открытия (0)«.

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

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

Чтобы выполнить какие-либо команды при завершении работы советника, достаточно написать их внутри стандартной функции OnDeinit:

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

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

Реализуем клавиши быстрого управления советником

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

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

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

Таким образом, если вы задаете фиксированный стоп, равный минимально возможному, 0.2% от цены или в центах от цены, тогда вам даже мышкой не нужно пользоваться. Запустили советник, нажали клавишу » 2«, чтобы установить стоп-лосс, равным 0.2% от цены в Long, нажали клавишу «S«, и позиция открылась.

А если вы пользуетесь MetaTrader 5, то вы даже запускать советник можете с клавиатуры, назначив ему горячие клавиши. Если кто-то не знает об этой возможности MetaTrader 5, тогда в окне Навигатор вызовите контекстное меню нужного советника, в нем выберите пункт Назначить горячую клавишу, и ваша жизнь может стать проще:

Рис.5. Назначение горячих клавиш советникам

Подсчет нужного объема сделки

Нам осталось рассмотреть только функцию открытия позиции (startPosition). Однако в ней практически ничего интересного нет. Мы просто проверяем наличие всех нужных нам данных: цены стоп-лосса, цены открытия позиции, настроек советника. После этого происходит подсчет объема лота, которым следует войти в сделку для соблюдения ваших рисков. И вызывается уже рассмотренная в начале статьи функция pdxSendOrder.

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

Сначала нам нужно подсчитать, сколько мы потеряем в случае стоп-лосса на минимально возможных объемах. Реализация данного функционала в MQL5 отличается от MQL4.

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

В MQL4 для подсчета убытков используется более сложная формула.

В итоге для подсчета убытков получилась такая функция:

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

Ограничения на вход

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

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

Также выполняется проверка на режим доступа к торгам по инструменту. И если торговля по инструменту запрещена или разрешено только закрытие ранее открытых сделок, советник также не запустится:

Непосредственно при открытии позиции выполняется проверка корректности заданной цены открытия и стоп-лосса. Например, если минимальный шаг цены 0.25, а у вас стоп-лосс установлен на цену 23.29, то брокер просто не примет ваш ордер. Вообще, в подобных случаях советник автоматически приводит цену к правильному значению (и цена стоп лосса будет не 23.29, а 23.25 или 23.5). И вы просто не сможете задать «неправильную» цену. Но на всякий случай выполняется и дополнительная проверка:

Заключение

Конечно, мы сделали только базовые возможности по выставлению ордеров. Но даже эти возможности существенно упрощают жизнь тем, кто торгует по уровням Герчика или каким-либо другим уровням.

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

Любые доработки советника разрешены и приветствуются.

Если же программирование — это не ваше. Но вам очень нужно реализовать какой-то функционал, которого нет в рамках данного советника, пишите в личку. Однако скорее всего это будет не бесплатно =)

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

Возможно, среди данного функционала будет то, что вам нужно.

Источник

Adblock
detector