Универсальный торговый эксперт: Индикатор CUnIndicator и работа с отложенными ордерами (часть 9)
Продолжается развитие базы исходных кодов Универсального торгового эксперта . Большая часть подходов, заложенных в торговый движок CStrategy, на практике доказали свою эффективность, удобство и простоту. Однако в процессе реального использования некоторые моменты в работе эксперта пришлось пересмотреть.
Один из таких моментов — работа с индикаторами. В третьей статье этой серии был предложен классический объектно-ориентированный подход к работе с индикаторами. Суть его заключалась в том, что каждый индикатор — объектно-ориентированный класс, со своими методами установки и получения тех или иных свойств. Однако на практике реализация собственного класса-обертки для каждого индикатора трудноосуществима. Здесь рассмотрен новый способ работы с индикаторами в ООП-стиле, который при этом не требует написания каких-либо отдельных модулей-классов.
Второе изменение, описанное в настоящей статье, связано с введением процедуры полноценного управления отложенными ордерами. Если раньше отложенными ордерами приходилось управлять непосредственно в коде итоговой стратегии, то теперь часть таких функций делегировано движку CStrategy. Теперь итоговый класс-стратегия может переопределить методы SupportBuyPending и SupportSellPending и начать управлять отложенными ордерами, аналогично управлению активными позициями.
Доступ к индикаторам в предыдущих версиях CStrategy
Чтобы понять проблематику вопроса, обратимся к решению по работе с индикаторами из вышеупомянутой третьей статьи серии. В ней предлагалось работать с любым индикатором через класс-обертку. Так, например, для работы с индикатором iMA в примере использовался класс-обертка CIndMovingAverage. Сам класс CIndMovingAverage состоял из методов, устанавливающих либо возвращающих то или иное свойство индикатора, а также из метода Init, который вызывал системную функцию iMA. Класс индикатора хотя и имел простую структуру, но занимал достаточно большой объем кода, который необходимо было реализовать самому пользователю. Приведем исходный код этого класса, чтобы оценить объем работ, возлагаемый на него:
Согласитесь, объем кода впечатляет. А ведь это — только пример одного, не самого сложного индикатора. Данный подход усложняется и тем, для MetaTrader созданы сотни различных индикаторов — как стандартных, так и пользовательских. Каждый из них имеет свой, относительно уникальный набор свойств и параметров. Если следовать предложенному подходу, нужно для каждого такого индикатора писать свою собственную обертку.
В CStrategy можно обращаться к индикаторам напрямую, без использования каких-либо классов. Поэтому на практике я сам зачастую напрямую вызывал конкретную системную функции в коде торговой стратегии. Ведь гораздо проще вызывать индикатор стандартными методами, чем тратить время на написание соответствующего класса.
Функция IndicatorCreate — основа универсального интерфейса
Решение, как это часто бывает, нашлось после практического опыта использования CStrategy. Стало очевидно, что механизм доступа к индикатору должен обладать следующими свойствами:
- Универсальность. Доступ к любому индикатору должен базироваться на обобщенной процедуре доступа, вместо использования множества классов оберток.
- Удобство и простота. Доступ к значениям индикатора должен быть удобным и простым. Он не должен зависеть от типа индикатора.
Практика использования показала, что наиболее простой, а главное — универсальный доступ к индикатору обычно происходит через функции iCustom и IndicatorCreate.
Обе функции позволяют создавать как стандартные, так и пользовательские индикаторы. Функция iCustom требует указания фактических параметров индикатора в момент компиляции программы. Функция IndicatorCreate устроена иначе. В качестве параметров она принимает массив структур MqlParams. Именно благодаря формату второй функции становится возможным создать обобщенную процедуру доступа к произвольному индикатору. При этом знать параметры индикатора заранее не требуется, за счет чего процедура доступа становится действительно универсальной.
Разберем конкретный пример работы с IndicatorCreate. Создадим с ее помощью хэндл индикатора MovingAverage. Это будет тот же индикатор, что возвращается функцией iMa:
Представленный скрипт получает доступ к одному и тому же индикатору через два разных интерфейса: функции iMA и IndicatorCreate. Обе функции возвращают один и тот же хэндл, в чем легко убедиться: запуск индикатора выведет сообщение «Хэндлы индикаторов равны». Однако доступ к индикатору через IndicatorCreate сопряжен с утомительным конфигурированием массива MqlParams. Каждому элементу MqlParam требуется задать два свойства: тип переменной и значение этой переменной. Во многом из-за этой громоздкости функция IndicatorCreate используется нечасто. Однако именно этот интерфейс вызова позволяет получить доступ к абсолютно любому индикатору MQL. Поэтому его мы и будем использовать.
CUnIndicator — универсальный индикатор CStrategy
Благодаря объектно-ориентированному программированию мы можем скрыть большую часть конфигурирования элементов массива MqlParams от пользователя, предоставив ему удобный интерфейс для установки произвольного параметра. Создадим CUnIndicator — класс-обертку над функцией IndicatorCreate. С его помощью можно будет последовательно задавать произвольное количество параметров для индикатора. При этом тип того или иного параметра указывать будет не нужно. Благодаря шаблонам, переданный тип будет определяться автоматически. Также наш класс будет иметь удобные индексаторы в виде квадратных скобок ‘[]’, внутри которых можно будет указать как индекс значения индикатора, так и время, на момент которого необходимо получить это значение.
Работа с CUnIndicator будет сводится к следующим этапам.
- Установка требуемых параметров с помощью метода SetParameter
- Непосредственное создание индикатора с помощью метода Create
- Установка требуемого буфера через SetBuffer (опционально)
- Доступ к значению индикатора по произвольному индексу i через индексатор []
- Удаление индикатора с помощью метода IndicatorRelease (опционально).
Напишем небольшой скрипт, создающий индикатор Moving Average с помощью CUnIndicator:
Теперь переменная ‘handle’ содержит хэндл созданного индикатора, а сам объект UnMA позволяет работать со значениями индикатора. Например, чтобы получить значение индикатора на предыдущем баре, достаточно написать следующий код:
Разберем более сложный пример. Создадим индикатор, содержащий несколько буферов — например, стандартный MACD. Каждую строку снабдим подробными комментариями:
Самый интересный момент в этом примере — переключение внутренних буферов индикатора с помощью метода SetBuffer. Так, значение, возвращаемое UnMACD[1], будет различаться в зависимости от того, какой буфер установлен в текущий момент. В первый раз UnMACD[1] возвращает значения MACD на предыдущем баре. Однако если в качестве буфера по умолчанию установить SIGNAL_LINE, UnMACD[1] возвращает уже значение сигнальной линии.
Доступ к значениям индикатора возможен и по индексу, и по времени. В примере рассчитывается время time_span, равное открытию предыдущего бара. Если вместо индекса UnMACD указать это время, то будет возвращено то же значение, что и при UnMACD[1].
Внутреннее устройство CUnIndicator
Настало время разобрать внутреннее устройство CUnIndicator. Приведем исходный код этого класса полностью:
Из листинга кода видно, что метод SetParameter — шаблонный. Он принимает на вход универсальный аргумент T, в зависимости от типа которого выбирается нужный тип параметра ENUM_DATATYPE. Этот параметр устанавливается для структуры MqlParam. Множественные строковые проверки неоптимальны с точки зрения скорости, однако на производительности это не сказывается, так как функция SetParameter должна вызываться только один раз — в момент инициализации самого эксперта.
Класс снабжен многочисленными вариантами метода Create. Благодаря этому можно создавать как пользовательские индикаторы (указывая при этом строковое имя индикатора), так и стандартные индикаторы, тип которых можно задать через INDICATOR_TYPE. Например, создать скользящую среднюю как пользовательский индикатор можно так:
Здесь UnMA — экземпляр CUnIndicator. Создание того же индикатора в виде стандартного происходит чуть иначе:
Также класс CUnIndicator содержит метод InitByHandle. Остановимся на нем подробнее. Как известно, многие индикаторы могут быть рассчитаны не только на ценах инструмента, но и на данных другого индикатора. Благодаря этому, можно создать цепочку индикаторов, рассчитывающих свои значения на выходных значениях предыдущего. Предположим, что надо рассчитать значения Stochastic на скользящей средней. Для этого необходимо инициализировать два индикатора: один для расчета скользящей средней, другой — для расчета стохастика. Сделать это можно следующим образом:
Из приведенного кода видно, что хэндл индикатора, созданный методом Create, запоминается и используется для создания индикатора Stochastic. В случае, когда используется пользовательский индикатор, источник данных указывать необязательно. Однако для системных индикаторов такой источник необходимо указать. Сделать это можно двумя способами: через метод SetParameter:
А также через перегруженную версию метода Create:
Позже мы создадим демонстрационную торговую систему, использующую доступ к значениям индикатора через класс CUnIndicator.
Улучшенная работа с отложенными ордерами
В одной из предыдущих статей, посвященной CStrategy, был представлен объектно-ориентированный класс CPendingOrders, представляющий отложенный ордер в рамках CStrategy. CPendingOrders представляет собой класс-интерфейс. В нем нет никаких внутренних членов, кроме поля, хранящего тикет ордера. Все его методы получают соответствующие свойства через вызов трех основных системных функций — OrderGetInterer, OrderGetDouble и OrderGetString. Такая организация позволяет гарантировать целостность представления данных. Каждому отложенному ордеру в MetaTrader 5 соответствует экземпляр CPendingOrders, тикет которого равен этому реальному ордеру. Если отложенный ордер по каким-то причинам отменяется (экспертом или со стороны пользователя), то торговый движок CStrategy удаляет соответствующий экземпляр класса CPendingOrders из списка отложенных ордеров. Сам список CPendingOrders хранится в виде специального класса COrdersEnvironment. В каждой стратегии есть свой единственный экземпляр COrdersEnvironment, называемый PendingOrders. Стратегия могла напрямую обратиться к этому объекту и выбрать из него необходимый ей отложенный ордер по индексу.
Если стратегии необходимо было вместо рыночного ордера открыть отложенный, то она просто посылала соответствующий торговый приказ через модуль CTrade. В этом отношении установка отложенного ордера ничем не отличалась от установки рыночного аналога. Но дальше начинались различия, которые в CStrategy не учитывались. CStrategy устроен таким образом, что каждая рыночная позиция передается коду-обработчику по очереди. Так, у позиций типа POSITION_TYPE_BUY таким обработчиком является метод SupportBuy, а у позиции типа POSITION_TYPE_SELL — метод SupportSell. С отложенными ордерами все было иначе. Каждый такой ордер попадал в доступную для эксперта коллекцию PendingOrders, однако своего собственного обработчика такие ордера не имели. Подразумевалось, что отложенные ордера должны быть обработаны где-то еще, например в OnEvent, BuySupport/SellSupport или даже в BuyInit/SellInit. При этом, если открытых позиций не было, то не было и вызовов BuySupport/SellSupport, а следовательно надежно обрабатывать отложенные ордера можно было только в OnEvent. Но обработка в этом методе нарушала общую последовательность действий. Получалось, что часть позиций обрабатываются последовательно по очереди, организованной CStrategy, а часть позиций (отложенных ордеров) обрабатывались по старинке, в едином блоке OnEvent.
В связи с этим, в новой версии CStrategy введены два дополнительных метода SupportPendingBuy и SupportPendingSell:
Их сигнатура вызова похожа на методы SupportBuy и SupportSell: первым параметром передается событие MarketEvent, вторым — указатель на текущий ордер, выбранный CStrategy. Сам выбор ордера осуществляет движок CStrategy последовательно, методом перебора. Перебор осуществляется от конца списка ордеров к его началу, в методе CallSupport:
Таким образом, вызов обработчиков отложенных ордеров происходит так же, как и в случае с рыночными позициями: для каждого отложенного ордера на покупку вызывается метод SupportPendingBuy, а для каждого ордера на продажу — метод SupportPendingSell.
Полный цикл стратегии, работающей с отложенными ордерами, получается длинней полного цикла стратегии, основанной только на рыночных ордерах. Во втором случае используется последовательность из двух обработчиков на каждое направление:
- открытие длиной позиции в InitBuy / Открытие короткой позиции в InitSell;
- сопровождение длинной позиции в SupportBuy / Сопровождение короткой позиции в SupportSell.
В случае использования стратегии отложенных ордеров приходится задействовать три обработчика на каждое направление:
- установка отложенной длинной позиции в InitBuy / установка отложенной короткой позиции в InitSell;
- сопровождение отложенной длинной позиции в SupportPendingBuy до момента срабатывания ордера, либо его отмены / сопровождение отложенной короткой позиции в SupportPendingSell до момента срабатывания ордера, либо его отмены;
- сопровождение длинной позиции в SupportBuy / сопровождение короткой позиции в SupportSell.
В действительности управление отложенными ордерами всегда является независимой частью логики торговой стратегии. Поэтому раздельное управление между отложенными ордерами и рыночными позициями позволило снизить сложность разработки подобных стратегий.
Стратегия CImpulse 2.0
Лучший способ разобраться с новыми изменениями — переписать уже знакомый нам пример торговой стратегии CImpulse, который, напомню, был представлен в пятой части статьи. Суть ее в том, чтобы на каждом баре выставлять отложенный Stop-ордер, на некотором расстоянии от скользящей средней. Расстояние это выражается в процентах. Для покупки выставляется BuyStop ордер, чей уровень открытия выше скользящей средней на N процентов. Для продажи — наоборот: выставляется SellStop ордер, чей уровень ниже скользящей средней на N процентов. Закрывать позицию мы будем, когда цена закрытия станет ниже (для покупки) или выше (для продажи) средней.
В общем это та же стратегия, что и представленная ранее, но в новом, полностью переписанном варианте. На ее примере можно будет оценить проделанные изменения в CStrategy и понять, как использовать новые возможности на практике. Но вначале обратимся к коду эксперта из предыдущей версии. Приведем его здесь полностью, чтобы потом можно было сравнить оба варианта синтаксиса:
Наиболее проблемные моменты в реализации данной стратегии показаны желтым цветом.
Во-первых, работа с индикатором идет через ранее написанный класс CIndMovingAverage. Мы уже говорили о том, что подход этот нерационален. Индикаторов слишком много, чтобы писать класс для каждого из них.
Во-вторых, работа с отложенными ордерами происходит через полный перебор отложенных ордеров в блоках BuyInit/SellInit. В такой простой стратегии, как CImpulse, это не вызывает сложностей, однако в случае с более сложным сопровождением ордеров трудности могут возникнуть. Лучше разделять установку отложенных ордеров и процесс их сопровождения на отдельные методы, как это сделано в новой версии CStrategy.
Если посмотреть внимательно на код CImpulse, то становится ясно: часть функционала, который должен предоставлять CStrategy, CImpulse берет на себя. CStrategy должен задавать систему состояний для управления отложенными ордерами, однако он этого не делает: систему реализует сам CImpulse.
Перепишем код с учетом новых возможностей CStrategy:
На скриншоте ниже представлен фрагмент тестирования стратегии CIpmulse 2.0 в тестере стратегий. На нем видны выставленные отложенные ордера и работа с ними:
Рис. 1. Работа с отложенными ордерами в процессе тестирования стратегии Impulse 2.0
Несмотря на то, что логика осталась прежней, старый и новый код получились разными. Перечислим, чем отличается новая версия от старой:
- Доступ к текущему инструменту осуществляется через экземпляр CSymbol WS (work symbol). Этому классу теперь делегируются все свойства инструмента.
- Данные эксперта инициализируются в методе OnInit. На момент написания пятой части статьи его еще не было.
- Вместо индикатора CIndMovingAverage теперь используется универсальный индикатор CUnIndicator.
- Установка отложенных ордеров осуществляется в InitBuy/InitSell, а их модификация и удаление — в SupportPendingBuy/SupportPendingSell.
- Перебор отложенных ордеров больше не используется. Эта функция делегируется CStrategy.
- Вместо структуры position для расчета количества текущих позиций и отложенных ордеров используются методы PositionsTotal и OrdersTotal.
В приведенном листинге содержится как сам код стратегии, так и базовые функции эксперта. Т.е. данный пример представлен в виде единого mq5-файла. Это связано с тем, что структура проекта была существенно переорганизована. Об этом мы и поговорим ниже.
Новая структура проекта CStrategy
В предыдущих версиях торговый движок CStrategy находился сразу в нескольких подпапках MQL5. Так, например, сам движок и его вспомогательные файлы располагались в MQL5IncludeStrategy. Исходные коды, ответственные за реализацию торговой панели движка, были в MQL5IncludePanel. Код эксперта мог располагаться в MQL5IncludeStrategySamples, а файл запуска эксперта mq5 — уже в MQL5ExpertsArticle08. И всё это — не считая того, что различные вспомогательные компоненты вроде Dictionary.mqh или XmlBase.mqh тоже были разбросаны по многим каталогам папки Include.
Очевидно, что сформировавшиеся связи в проекте стали очень сложными, а расположение файлов и каталогов часто дублируется. Это затрудняет потенциальное знакомство с торговым движком CStrategy. Пользователь, особенно начинающий, легко может запутаться и не понять, откуда что берется и как в итоге проходит процесс компиляции. Поэтому, начиная с текущей версии торгового движка, его файлы располагаются иначе.
Теперь весь проект содержится в каталоге MQL5ExpertsUnExpert. В нем расположена папка Strategy и файлы стратегий с расширением .mq5. Теперь конечная торговая стратегия — это один-единственный файл mq5, в котором содержатся как стандартные функции-обработчики событий (вроде OnInit и OnTick), так и сам класс стратегии, основанный на CStrategy.
Все вспомогательные файлы также размещены в MQL5ExpertsUnExpertStrategy. Это относится и к файлам по работе с XML, и к инфраструктурным файлам, наподобие Dictionary.mqh. Чтобы скомпилировать пример, достаточно открыть файл, например «MQL5ExpertsUnExpertImpulse 2.0.mqh», и нажать кнопку «Компилировать».
В сборке, представленной в данной части статьи в качестве примера, используются только две стратегии — Impulse 1.0 и Impulse 2.0. Это одна и та же стратегия, но написанная в старом и новом стиле CStrategy. Сделано это специально, чтобы можно было сравнить оба подхода в действии и понять различия, описанные в этой статье. Другие примеры стратегий, которые были включены в предыдущие версии CStrategy, в текущей сборке недоступны. Связано это с тем, что они опираются на старый синтаксис, а потому не могут быть представлены в качестве примера. Возможно, в следующих версиях они появятся вновь, но уже с переработанным синтаксисом.
Заключение
Мы рассмотрели новые компоненты CStrategy. Это класс CUnIndicator, реализующий универсальный интерфейс в ООП стиле для работы с любым как системным, так и произвольным индикатором MQL5, а также систему сопровождения отложенных ордеров на основе методов SupportPendingBuy и SupportPendingSell. Все эти элементы в совокупности дают мощный синергетический эффект при написании торгового эксперта. Пользователю не надо думать о низкоуровневых операциях. Практически все торговое окружение доступно для него через интуитивно понятные и лаконичные классы, а сама торговая логика задается простым переопределением соответствующих предустановленных методов.
Сам проект теперь стал располагаться в одном месте, а его связи ограничены каталогом MQL5ExpertsUnExpert. Теперь нет необходимости размещать файлы по разным папкам директории MQL5. Это новшество также должно побудить пользователей к переходу на CStrategy или, по крайней мере, к увлекательному изучению его возможностей.
Предупреждение: все права на данные материалы принадлежат MetaQuotes Ltd. Полная или частичная перепечатка запрещена.
Простые стратегии торговли с отложенными ордерами
Мастера статистики изучили – порядка 75-85 процентов всех заявок открытия сделки на валютном рынке реализуются в виде отложенных ордеров. На самом деле, они очень удобны. Они позволяют рыночным игрокам торговать со сниженной психологической нагрузкой, и реализовывать трейдинг практически на автомате. Кроме того, «отложки» дают возможность трейдеру входа в рынок по цене ниже или выше рынка, по максимально более выгодной для трейдера, что существенно увеличивает прибыль на дистанции.
Есть и еще один существенный плюс. Он состоит в том, что у многих трейдеров нет возможности постоянно следить за рынком, и точки входа пропускаются, прибыль теряется. А вот отложенные ордера помогают не пропустить точку входа. Словом, «отложки» дают великолепные возможности для трейдера. Особенно для начинающего, у которого не так сильно налажена психология трейдинга, и в сделках по рынку он пока что совершает ошибки. Есть огромное количество торговых систем, основанных на входах в рынок по отложенным ордерам. Мы расскажем о самых простых и популярных стратегиях.
Чем стратегия торговли с отложенными ордерами отличается от других ТС
Отложенная заявка – это ордер трейдера на исполнение сделки в тот момент, когда цена коснется того или иного уровня. При этом виде трейдинга ордер активируется автоматически тогда, когда цена придет в нужную точку, и прикоснется ей по уровню Ask. При этом значения цен Ask и Bid трейдер выбирает в настройках отложенного ордера самостоятельно.
Торговля отложенными ордерами: плюсы и минусы
Рассматриваемый вид торговли (так называемыми «отложками») имеет и преимущества, и недостатки. Все торговые системы трейдинга по отложенным заявкам формируются на верном техническом и фундаментальном анализе рынка. То есть, трейдер должен дать свой прогноз по движению рыночной цены, а также по тому, куда она будет идти, в какую именно сторону, а потом отправить заявку на открытие отложенной сделки.
Плюсы торговли отложками состоят в том, что у трейдера есть возможности входа в сделку при любом уровне волатильности. Такие системы сработают всегда, как в момент выхода новости, так и в момент отбоя цены от мощного уровня. Выполняя отложенную заявку, брокер не испортит вам настроение задержками открытия ордера (их еще называют реквотами). Сделка открывается сразу, по причине того, что рыночные заявки реализуются в порядке очереди, а вот отложенные ордера уже включены в очередь заранее.
Также, отличным плюсом является маленький уровень психологической нагрузки. Ведь реализуя торговлю на отложенных ордерах, трейдер имеет возможность в спокойной обстановке дать свою оценку рынка и с холодной головой заключить сделку заранее. В рыночной торговле, где на сделку часто есть всего пара минут, а то и меньше, такой роскоши у трейдера нет. Также, отменным плюсом является то, что трейдер не должен следить за рынком постоянно, нет необходимости просиживать за монитором весь день. Это отлично подойдет для тех трейдеров, у кого нет времени на активный трейдинг, кто занят на основной работе, и имеет возможность лишь заглянуть раз-два в день в терминал на десять минуток.
Тем, кто может выделять очень мало времени на торговлю, рекомендуем обратить внимание на недельный таймфрейм, индикаторы и стратегии для которого мы описывали ранее. Этот ТФ подойдет для долгосрочных инвестирований финансов.
Как устанавливать отложенные заявки
Прежде чем вы установите отложенную заявку, нужно определиться с тем, по какой цене вы ее отправите брокеру, а также в каком именно направлении заключите сделку. Так, при трейдинге по уровням поддержки и сопротивления вы должны провести анализ и принять для себя решение: ставить ли свои ставки на отбой от уровня или же на его пробой, а также – куда именно пойдет цена после того, как пробьет важный уровень или же оттолкнётся от него. Затем вам останется лишь отправить заявку брокеру на возможную сделку.
Аналогично и при трейдинге по графическим фигурам: вы ждете предполагаемой точки завершения графической формации, где закончится образование графической фигуры и начнется движение в нужном для вас направлении, и как раз в этой точке графика выставляете отложенную заявку в ту или иную сторону. Мы бы рекомендовали также посмотреть материалы по японскому свечному анализу Прайс Экшен, и трейдингу по графическим фигурам. Это даст вам возможность анализировать график на предмет появления графических формаций, и давать свою оценку движениям цены.
Есть несколько типов отложенных заявок. Они зависят от вида самой сделки:
- При торговле в пробой уровня вам нужно ставить ордера вдоль движения рынка, их называют стоповыми (бай и селл стоп).
- Напротив, при торговле отбоя от уровня, вам надо будет выставлять отложенные лимитные ордера (селл и бай лимит). Их отличает то, что они реализуются как бы против хода движения цен. Кстати, большая часть заявок на рынке Форекс – это именно отложенные лимитные заявки.
Стратегия форекс с отложенными ордерами «Сетка ордеров»
Эта стратегия дает возможность торговли почти без проведения анализа рынка. Все, что вам потребуется – это установка сетки отложенных заявок, по уровням Фибоначчи, либо же без них. Если вы используете сетку ордеров без индикатора Фибо, то вам нужно будет выставить отложенные ордера на равном расстоянии друг от друга. Главное преимущество рассматриваемой торговой стратегии состоит в том, что вы получите прибыль вне зависимости от движения рынка, сетка все равно даст плюс к депозиту.
Смысл тактики в том, чтобы выставить определенное количество отложенных ордеров на куплю и продажу валютной пары, равное количество на покупку и равное – на продажу. Дистанция между ордерами должна быть также одинаковой. Так у вас выйдет своего рода сеть из отложенных заявок, именно отсюда и идет наименование торговой системы. В каждом ордере сетки вы можете выставить стоп и тейк.
Советы по применению «сетки»
Шаг сетки (дистанция от одного ордера до другого) устанавливается в зависимости от применяемого вами таймфрейма. Чем выше таймфрейм – тем выше должен быть шаг сетки. При этом, в случае с большой сеткой у вас уйдет больше времени на то, чтобы взять прибыль с рынка, а вот на маленькой сетке прибыль вы получите очень быстро.
Казалось бы, мелкая сетка выгоднее, но проблема в том, что если на рынке случится большая дневная волатильность, а у вас будет стоять маленькая сетка, то вы получите огромный убыток, если цена прорвется через все ордера сетки. Мелкий шаг сетки даст вам шанс на большую прибыль, но и риски увеличатся пропорционально. Также, расстояние между текущей ценой и первым ордером сетки должно быть хорошим. Это защитит вас от случайной активации ордеров сетки.
Количество заявок на сделки
Вы сможете выставить любое количество заявок на сделки, но главным условием будет то, что их число в обе стороны должно быть одинаковым. Так, если вы ставите выше графика шесть ордеров типа селл лимит, то это автоматически означает, что вам нужно поставить шесть ордеров ниже графика, но уже типа бай лимит. Это в случае, если вы работаете против тренда.
Если же вы работаете по тренду, то лучше будет выставить стоповые заявки, они к тому же, более безопасны. Тогда, при мощном тренде и крутом движении цены, вы получите грандиозную прибыль, но рисковать будете намного меньше.
Минусы сеточной системы
Первым видимым недостатком системы сетки ордеров является то, что часть брокеров не дают возможности открыть сразу сделки в обе стороны.
Второй минус – это то, что данная торговая система будет сливать депозит в периоды боковых движений рынков.
Как работать по системе
Сначала вам нужно открыть рабочий график любой валюты, на которой сейчас идет мощная волатильность. При этом, вы должны увидеть на графике явное трендовое движение. Вторым вариантом является предстоящий выход важных экономических новостей.
Отложите на график десять отложенных ордеров типа селл стоп и бай стоп. Дистанцию между ордерами поставьте на шаг в 10 пунктов по четырехзначным котировкам. Тейк для каждого ордера определите в 20 пунктов. Стоп-лосс ставить не стоит. И все. Дальше вам нужно будет лишь дождаться, пока цена пойдет, и начнет активировать ваши ордера, принося вам прибыль.
Закрывать сделки вы можете различными способами, зависит от движения рынка:
- Если на графике образовался мощный бычий или медвежий тренд, и цена идет однонаправленно практически без откатов, то вам нужно подождать, пока два-три ордера закроются по тейку, а остальные ордера удалить.
- Возможно и другое: цена сначала пойдет вверх, к примеру, активировав несколько заявок. А затем резко развернется и пойдет вниз, активируя уже заявки на продажу. В таком случае вам нужно будет выждать, как будут развиваться события. Можно дождаться момента, пока профит с одной сетки перекроет убыток с другой сетки (имеются ввиду сетки вверх и вниз).
- Также бывают истории, когда цена начинает идти вразнобой, и активирует обе сетки, которые оказываются убыточными. Тут тоже стоит подождать, пока на рынке образуется явный тренд. Но помните, что в условиях боковика рассматриваемая стратегия принесет только убытки, поэтому если начался флэт, то лучше как можно быстрее деактивировать все заявки.
Существует масса советников, построенных на стратегии сетки ордеров. Как правило, все они раньше либо позже сливают депозит до нуля. Наш вердикт – данную систему стоит использовать только на коротких дистанциях, к примеру, для разгона депозита. Всю прибыль с системы нужно выводить каждый день. Но на длительную перспективу следует поискать другие торговые стратегии.
Торговля от уровней отложенными ордерами – Сетка Фибоначчи
Для трейдинга по этой торговой системе вам нужно будет растянуть на график индикатор сетки Фибоначчи. Данный инструмент рассчитывает уровни коррекции к тренду, на основе знаменитого, и во многом магического золотого сечения – уникальной пропорции, которая наблюдается во всем в природе: от строения человека до формы нашей галактики.
Суть торговли по методике:
Сначала определяемся с рабочим графиком (таймфреймом). Система подойдет для всех временных интервалов, но самая высокая прибыль в ней получается при трейдинге в среднесрок. Мы бы советовали торговать на часовых графиках. Это оптимальный таймфрейм для данной торговой стратегии.
Далее вам нужно выбрать торгуемый актив. Советуем использовать мажорные пары с высокой волатильностью. Можно торговать как на одной, так и на нескольких валютных парах сразу.
Затем растяните на движение текущего тренда сетку Фибоначчи. Так, в случае если на графике наблюдается явный медвежий тренд, то сетка растягивается от последнего максимума к последнему минимуму цены. Когда устанавливаете ордера, вам нужно будет брать во внимание уровень 23. Он – главный триггер движения цены:
- Если тренд бычий, и цена двигается выше уровня 23, то вам нужно установить отложенный ордер типа бай стоп на уровне 23.
- А вот если цена опустилась ниже уровня 23, то вам нужно открыть отложенный ордер селл стоп.
Тейк нужно ставить на уровне 38. Да, может быть такое, что цена совершит импульс, и она активирует ордер впустую, принеся убыток. Но на долгой дистанции система прибыльна. Бывает так, что цена, не дойдя до уровня 38, разворачивается и, сбив тейк, рисует новый экстремум тренда. В этом случае, сетка дотягивается до нового экстремума текущего тренда.
Стоп-лосс выставляется на несколько пунктов выше либо ниже уровня 23. Это защищает депозит трейдера от мощных просадок. Также, можно добавить разнообразные фильтры к торговой методике, но она хороша и сама по себе, без дополнений. Виды и количество этих добавочных инструментов трейдер определяет самостоятельно. Исходит он при этом из особенностей собственного характера, интуиции, опыта торговли на финансовых рынках и выбранной стратегии.
Рекомендуем также ознакомиться с индикатором Веер Фибоначчи и особенностями его построений. Этот инструмент также можно использовать для поиска точек установки отложенных заявок.
Торговая стратегия отложенными ордерами по уровням поддержки и сопротивления
Рассмотрим еще одну методику торговли «отложками», устанавливаемых на уровнях поддержки и сопротивления.
Sell stop
На примере ниже на скрине посмотрим на ситуацию, когда на валютной паре евродоллар идет узкий боковик. Движение цены идет в рамках узкого канала, и в будущем мы ждем ее резкий прорыв вниз, с мощным пробоем линии поддержки, и развитием нисходящего тренда.
Предположим, у нас нет времени на то, чтобы сидеть за терминалом, выжидая сделку. В таком случае можно выставить отложенный ордер. Выставляем сделку на продажу. Типом ордера будет выступать ордер sell stop, ниже рыночной текущей цены. В результате у нас получается отложенная заявка на продажу вдоль предполагаемого движения цены. Он автоматически откроется тогда, когда цена пробьет линию поддержки и устремится вниз. Это избавляет нас от необходимости постоянно отслеживать терминал, ожидая точку входа.
Buy Stop
В примере ниже смотрим на состояние рынка, которое похоже на предыдущий пример. На паре евродоллар идет боковое движение. Цена двигается в ценовом канале. Мы ждем пробой уровня сопротивления, и резкого, взрывного роста цены. Открываем сделку на покупку, отложенную.
Сделка будет осуществляться выше рыночной цены. В результате получится отложенный ордер, который активируется при пробое уровня сопротивления. Стоп и тейк можно выставить сразу же, а можно обозначить их уже после активации отложенной сделки.
Buy Limit
Расскажем о ситуации, когда в валютной паре евро и доллара есть постепенный растущий тренд. Предполагаем то, что цена сделает небольшой откат к нижней границе ценового канала, косого уровня поддержки, а затем совершит отбой от него, на продолжение текущего тренда.
Далее мы выставляем отложенный ордер типа buy limit на покупку. Настраиваем цену сделки, и выбираем тип ордера – buy limit. Затем наша заявка появится на рабочем графике. Также, можно будет сразу же установить уровни стопа и тейка. Стоп защитит наш депозит от внезапной мощной просадки, ограничив убытки. А тейк поможет не упустить прибыль после разворота цены.
Sell Limit
Посмотрим на состояние рынка в таком ключе: на валютной паре евродоллара идет достаточно сильный тренд вниз. Мы делаем прогноз на то, что ожидается откат цены к верхнему уровню сопротивления, от которого цена оттолкнется вниз, и пойдет дальше в прежнем направлении.
Мы выставляем отложенную заявку по следующему алгоритму: настраиваем цену сделки. Так как цена продажи выше, чем текущая цена, то опираясь на это, выставляем тип ордера – Sell limit. Как итог, у нас есть сделка, которая расположена на заданном нами уровне цены, и наш ордер активируется в случае, если наш прогноз насчет того, что пойдет ценовой откат, оправдается.При этом, нам не придется высиживать часами за торговым терминалом, ожидая точку входа в сделку.
Защитный ордер типа стоп-лосс, а также ордер фиксации прибыли – тейк-профит, можно выставить сразу, либо поставить его при активации ордера, когда наша позиция уже будет в рынке.
Для торговли отложками также можно использовать индикатор FXI Pivots, который выполняет построение уровней пивот на графике движения цены. Напомним, что пивотами называют ключевые разворотные уровни, от которых цена должна оттолкнуться в обратную сторону.
В материале мы рассмотрели основные способы торговли с использованием отложенных ордеров. Но помните о том, что торговая стратегия – это лишь вторичный фактор успеха на рынках. А первичным фактором является строгое соблюдение рисков, и верное управление капиталом. Помните о правилах управления рисками: не рискуйте на один стоп суммой от депозита выше чем 3%. Также, помните о управлении капиталом: лот на каждые 100 долларов вашего депозита не должен превышать значение в 0,01 лота. Это обеспечит вам долгосрочный успех на рынке.
Стратегия на отложенных ордерах
Здравствуйте, дорогие гости блога womanforex.ru, сегодня я решила рассказать вам про одну весьма эффективную торговую стратегию, которая предполагает открытие отложенных ордеров, она так и называется «Стратегия на отложенных ордерах».
Данная торговая методика подходит для использования на тайм-фрейме H4, что касается валютной пары, то желательно, чтобы она обладала высокой волатильностью, мы с вами рассмотрим эту стратегию на паре евро/доллар.
Индикаторы для стратегии на отложенных ордерах
Стратегия на отложенных ордерах предполагает использование следующих инструментов:
- EMA 300, которая нужна нам для определения глобального тренда. Все сделки по данной стратегии будут создаваться только в направлении господствующей тенденции. Сигналы, которые будут поступать в другое направление нужно игнорировать.
- Индикатор Nonlagdot. Данный алгоритм предназначен для выявления подходящих точек для входа в рынок и отсеивания ложных сигналов. Nonlagdot представляет собой трендовый индикатор, который внешне очень сильно напоминает Parabolic SAR. Единственное отличие между ними заключается в том, что первый при смене тренда меняет окраску.
- Индикатор Super Trend. Данный инструмент нужен нам для подтверждения сигналов, поступающих от предыдущего индикатора. Данный инструмент выглядит на графике в виде кривой, которая также меняет свою окраску в зависимости от направления тренда. Можно также использовать в дополнение простую скользящую среднюю, если все три инструмента будут выдавать сигнал о скорой смене тренда, резко увеличивается надежность сигнала.
Правила торговли
Устанавливаем на пару евро/доллар на тайм-фрейма H4 все перечисленные выше инструменты. Скачать индикаторы и уже готовый шаблон для данной стратегии вы можете по ссылке, расположенной ниже.
Как уже было сказано ранее, описываемая торговая методика предполагает открытие только отложенных сделок. Итак, сделку Buy Stop рекомендуется создать при выполнении следующих условий:
- EMA 300 должна располагаться ниже графика цены.
- Nonlagdot и Super Trend должны показывать восходящий тренд.
- Цена должна совершить откат вниз и на вершине этого отката(допускается погрешность в 5-10 пунктов) и нужно выставить ордер.
Внимание: Под откатом цены на графике подразумеваем медвежью свечу, минимум которой ниже предыдущего минимума. В момент появления нисходящей свечи индикаторы должны продолжать показывать восходящий тренд. Откат может также выглядеть в виде нескольких медвежьих свеч.
Стоп лосс рекомендуется разместить возле предыдущего локального минимума, расположенного ниже индикаторы Super Trend. Устанавливать Take Profit в этом не нужно.
Закрытие ордера рекомендуется осуществлять тогда, когда цена пересечет кривую индикатора Super Trend или когда индикатор сменит свою окраску. А сопровождение сделок рекомендуется осуществлять при помощи ручного трала, то есть по мере движения цены рекомендуется передвигать постепенно стоп, учитывая волатильность используемой вами валютной пары.
Cделки Sell Stop рекомендуется создать при выполнении следующих условий:
- EMA 300 должна располагаться выше графика цены.
- Nonlagdot и Super Trend должны показывать нисходящий тренд.
- Цена должна совершить откат вверх и на вершине этого отката(допускается погрешность в 5-10 пунктов) и нужно выставить ордер.
Стоп лосс рекомендуется разместить возле предыдущего локального максимума, расположенного выше индикатора Super Trend. Устанавливать Take Profit не нужно.
Закрытие ордера рекомендуется осуществлять тогда, когда цена пересечет кривую индикатора Super Trend или когда индикатор сменит свою окраску. А сопровождение сделок рекомендуется осуществлять при помощи ручного трала, то есть по мере движения цены рекомендуется передвигать постепенно стоп, учитывая волатильность используемой вами валютной пары.
Стратегия на отложенных ордерах отличается простотой в применении, так что советую присмотреться к ней всем новичкам. Выше вместе с шаблоном и индикаторами вы сможете также скачать советник, созданный на основе данной стратегии.
Чтобы скачать советник по стратегии на отложенных ордера, воспользуйтесь ссылкой, которая расположена ниже.
В скаченном архиве вы найдете файл торгового робота, который носит название lot-lib. Этот файл необходимо перенести в раздел «Experts» вашей торговой платформы. После этого необходимо обязательно перезапустить МТ4. Авторы этого советника изначально оптимизировали его параметры, поэтому вносить какие-либо изменения в его настройки вам не придется.
Если вы обладаете необходимым опытом в оптимизации торговых роботов, то можете опробовать этот эксперт на демо-счете и в соответствии с полученными результатами внести изменения в его параметрами.
Тестирование торгового робота
Силами опытных трейдеров было проведено тестирование описываемого нами торгового робота. Длительность тестирования составила два года. Робот применялся для открытия ордеров на валютной паре евро/доллар на часом временном интервале. С результатами проведенных тестов вы можете ознакомиться на картинке, расположенной ниже.
Как вы могли заметить, общая прибыль робота за торговый период превысила 56%. За все время работы максимальный размер просадки составил всего 27%, что является довольно неплохим результатом.
Уровень прибыльности этой стратегии можно увеличить, если применять ручной трейлинг стоп. В этом случае доходность данной торговой методики можно увеличить на 15-20% по отношению к уровню прибыльности, достигнутым за период тестирования.
Данная методика ведения торгов является относительно безопасной, при этом, она в состоянии обеспечить довольно приличный уровень доходности.
Перед тем как начинать торги на реальные деньги, опробуйте эту торговую методику на демо-счете. Лишь после накопления необходимых навыков можно приступать к ведению торгов на реальные деньги.
Источник https://www.mql5.com/ru/articles/2653
Источник https://forexinlife.com/torgovye-istemy/prostye-strategii-torgovli-s-otlozhennymi-orderami.html
Источник https://womanforex.ru/sovetniki-foreks/strategiya-na-otlozhennyx-orderax.html