Как определить тренд. Три главных способа объёмы, линии, индикаторы

Рейтинг лучших и честных брокеров бинарных опционов за 2020 год:
  • Бинариум
    Бинариум

    1 место! Самый лучший брокер бинарных опционов за последние 2 года. Бесплатное обучение! Бонус за открытие счета!

  • ФинМакс
    ФинМакс

    Брокер с самыми разными торговыми инструментами. Подходит для опытных трейдеров.

Как определить тренд и его разворот?

Каждый опытный трейдер знает, что для получения прибыли на финансовом рынке торговля должна вестись по направлению тренда. Это один из фундаментальных принципов в трейдинге, который разработал основоположник технического анализа Чарльз Доу. Однако далеко не все новички знают, как определить тренд, в результате теряют свои накопления, а винят в этом брокера. Ниже можно будет узнать о способах, которые помогут сделать это. Благодаря им удастся получать доход даже в кризис.

Основные понятия

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

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

При этом цена не всегда двигается равномерно, она может совершать:

  • откаты;
  • замедления;
  • дивергенции;
  • ложные развороты;
  • находиться во флэте.

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

Как определить тренд?

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

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

Определение разворота

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

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

  1. Модель свечного поглощения. Потребуется открыть график, в качестве отображения выбрать свечи. Разворот наблюдается, когда следующая свеча закрывает сформированную ранее, окрашенную в другой цвет, и поглощает ее.
  2. Пробой скользящей средней. Нужно добавить на график скользящие средние и покупать опцион после того, как произойдет пробой одной из них.
  3. Импульсный разворот. Этот способ используется, когда выходят важные новости, тогда цена резко меняет свое направление, и можно закрыть ордер с прибылью.

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

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

Как определить тренд: три главных способа

Существует 3 способа, которые помогут определить тенденцию. Они следующие:

  1. Графический анализ. Потребуется открыть график в свечном режиме, наложить на него трендовые линии. После чего будет видно движение цены.
  2. Индикаторы. Существуют инструменты, которые помогут выявить тенденцию. Потребуется запустить 2-3 индикатора и дождаться момента, когда их сигналы совпадут, а потом входить на рынок.
  3. Осцилляторы. Они работают аналогично индикаторам, но выдают сигналы с минимальными задержками. Чтобы повысить их точность и не пропустить идеальный момент, рекомендуется одновременно задействовать несколько инструментов с разным алгоритмом.

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

Рейтинг брокеров бинарных опционов с русским языком:
  • Бинариум
    Бинариум

    1 место! Самый лучший брокер бинарных опционов за последние 2 года. Бесплатное обучение! Бонус за открытие счета!

  • ФинМакс
    ФинМакс

    Брокер с самыми разными торговыми инструментами. Подходит для опытных трейдеров.

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

Заключение

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

Как определить тренд на Форекс: особенности и правила

В этой статье поговорим об одной из основ торговли – тренде.

Расскажу, что это такое и как он определяется, а также поговорим о том, как торговать по тренду на Форекс.

Что такое тренд

Говоря простым языком, тренд форекс — это четко направленное перемещение цены.

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

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

Какие есть виды трендов

В торговле применяются аналогии с животными.

Так, медвежий тренд – это движение вниз, а бычий – соответственно, вверх.

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

Восходящий тренд

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

Цена всегда движется волнами, имея минимумы и максимумы.

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

Нисходящий тренд

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

При этом разница в высоте может быть как значительной, так и небольшой.

Это уже вопрос силы, о которой мы также поговорим ниже.

Третий вид тренда называют флетом, боковым коридором или консолидацией.

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

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

Из каких фаз состоит тренд

Так как цена на графике (за редкими исключениями) никогда не двигается строго в одном направлении, движение разделяют на несколько фаз:

  1. Зарождение. Точка разворота или выхода из флета,
  2. Основная фаза. Участок с ярко выраженным направлением,
  3. Коррекция,
  4. Разворот.

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

Почему нужно знать направление текущего тренда

Определение тренда на Форекс — это один из основных аспектов при принятии торговых решений.

Тренд – это отображение настроений игроков.

В частности крупных трейдеров и маркетмейкеров.

Задача рядового трейдера отслеживать это настроение и следовать за ним.

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

Большинство стратегий, так или иначе, используют направление тренда.

Где-то он является основой для определения направления торговли. А где-то просто служит фильтром сигналов.

Когда лучше всего определять тренд

Цена на Форекс формируется благодаря спросу и предложению по выбранному активу.

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

Как известно, наибольшая активность трейдеров на рынке наблюдается в момент торгов в Европе и Америке.

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

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

На каком временном интервале лучше определять тренд

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

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

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

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

Как автоматически определить направление тренда на Форекс

Для профессионала или просто опытного трейдера, вопрос как определить направление тренда на Форекс не стоит.

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

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

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

Наиболее простой способ автоматического определения – индикаторы.

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

Как определить тренд: основные методы

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

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

Визуальное определение

Пример яркого тренда показан на скриншоте выше.

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

В этом случае не нужны дополнительные методы анализа. Достаточно того, что волновые пики последовательно снижаются.

С помощью линии тренда

Чертим две наклонные линии которые соединяет экстремумы, то есть волновые впадины и вершины.

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

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

Наклон коридора определяет направление, а его угол силу.

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

При помощи уровней поддержки и сопротивления

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

Посмотрим на скриншот.

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

Зато имели возможность определить линию сопротивления.

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

Далее цена тестирует эту линию, но уже сверху-вниз, то есть из сопротивления она превращается в поддержку.

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

При помощи объемов

Объемы отражают количественное число заключаемых сделок.

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

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

Для определения объемов используются индикаторы. Они могут быть двух видов:

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

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

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

Например, на скриншоте выше видно, что на уровне 0,9924 произошел всплеск.

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

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

С помощью индикаторов

Наиболее простой способ, как быстро определить тренд форекс – использовать технические индикаторы.

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

Определяем тренд при помощи скользящих средних

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

Например, если в настройках индикатора установить значение 21, то он будет анализировать показатели 21 бара.

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

Если свечи строятся выше, как на скриншоте, тренд восходящий, и наоборот.

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

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

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

Определяем тренд при помощи Parabolic Sar

Еще один индикатор, но строящийся на графике в виде точек.

Точки ниже свечей указывают на восходящий тренд и наоборот.

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

Индикатор ZigZag

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

На графике отображается как ломаная линия, сторона наклона которой и говорит о направлении текущего тренда.

Метод определения тренда по пикам и впадинам (Price Action)

Так как цена двигается волнообразно, на графике постоянно формируются пики и впадины.

Согласно торговой стратегии Price Action, тренд является устойчивым, если соблюдается закон построения волн: при восходящем движении следующий ценовой минимум выше предыдущего, а при нисходящем, следующий ценовой максимум ниже.

Нарушение этого закона говорит об изменении тренда: его развороте или уходе во флет.

Что такое локальный минимум и максимум. Как их определить

Выше мы уже говорили о том, что тренд состоит из 4 фаз.

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

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

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

Для определения экстремумов часто используются так называемые фракталы.

Это математическая формула, сравнивающая пять рядом стоящих свечей.

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

Консолидации как место зарождения тренда

Консолидация в терминологии Форекс – это состояние рынка, в котором он находится большую часть времени.

На яркие и сильные тренды приходится около 20-30% торгового времени.

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

Но, рано или поздно, любая консолидация заканчивается и начинается тренд.

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

Пробой одной из этих линий свидетельствует о начале нового всплеска активности.

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

Как определить окончание тренда

Существует несколько способов:

  • Пробой скользящей средней,
  • Перестроение линии индикатора зиг-заг,
  • Пробой трендовой линии,
  • Пробой сопротивления или поддержки.

Важно учитывать, что затухание тренда, или как его еще называют «старения», не говорит о развороте.

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

Как определить разворот тренда без индикаторов

Рабочий метод, как определить разворот тренда на forex без помощи индикаторов мы описали чуть выше, в разделе посвященном Прайс Экшн.

Для наглядности можно использовать линии тренда.

Например, наблюдается бычий тренд, и наша линия строится ниже свечей.

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

Как определить силу тренда

Трейдер должен не только уметь видеть направление ценового движения, но и знать, как определить силу тренда на Форекс, так как от этого во многом зависит успех в торговле.

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

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

Наиболее простой метод определения силы тренда – угол наклона линии тренда.

Чем угол наклона больше, тем сильнее тренд.

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

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

Здесь нас интересует удаление ценовых свечей от самого индикатора. Чем цена дальше, тем тренд сильнее.

Сближение цены с линиями индикатора говорит о затухании тренда соответственно.

Индикаторы силы тренда на Форекс

На современном рынке масса авторских индикаторов и рассмотреть их все не представляется возможным.

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

Например, осциллятор ADX, где ключевым элементом является уровень 25.

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

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

Также для определения силы можно использовать Envelopes и Bollinger Bands.

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

Когда лучше всего входить в рынок?

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

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

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

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

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

Нередко после таких скачков цена возвращается в свой коридор и тренд не меняется.

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

Пример работы стратегии по тренду

Интересный пример работы по тренду сформулировал Александр Элдер.

Его стратегия получила название три экрана Элдера, так как в ней поиск точек входа осуществляется одновременно по трем таймфреймам с разными индикаторами и назначением.

Итак, для работы нам понадобятся три экрана:

  1. Четырехчасовой график Н4 с установленными на него индикаторами MACD и Moving Average. Осциллятор имеет стандартные настройки, а скользящая строится по 21 периоду.
  2. Часовой интервал Н1 и установленный осциллятор Stochastic, со стандартными настройками.
  3. И третий экран – 15 минутный М15, без индикаторов.

В первую очередь необходимо определить направление глобального тренда. Смотрим на 4 часовой график.

Если на нем определяется восходящий тренд, то рассматриваем только сигналы на повышение, а на понижение отбрасываем как ложные.

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

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

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

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

Теперь необходимо просто дождаться срабатывания ордера или перенести его на следующую свечу, если остальные условия стратегии остались в силе.

Преимущества и недостатки трендовой торговли

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

  • Высокая результативность,
  • Небольшие риски (относительно),
  • Возможность контролировать ситуацию и своевременно на нее реагировать,
  • Большое количество готовых стратегий,
  • Работоспособность индикаторов. Большинство из них не работают во флете или снижается их точность,

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

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

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

Не меньше трудностей доставляет определение тренда.

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

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

И не забываем про то, что в тренде рынок проводит куда меньше времени, чем в боковом коридоре.

Именно это делает такими популярными флетовые и контртрендовые стратегии.

Несколько способов определения тренда на MQL5

Введение

Любой трейдер знает правило «Тренд — твой друг, следуй за трендом», но практически каждый имеет свое представление о том, что из себя тренд представляет. Практически каждый трейдер слышал или читал ужасные истории, в которых рассказывается о том, как разорился трейдер, торговавший против тренда.

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

1. Что такое тренд и зачем его знать

Для начала, сформулируем самое общее понятие тренда.

Итак, тренд — это длительная тенденция (направление) изменения цен на рынке. Из этого общего определения тренда сразу вытекают следствия:

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

Проиллюстрируем сказанное картинками:

Рисунок 1. Анализ тренда

Глядя на рисунок можно увидеть, что общая тенденция с конца 2005 г. по май 2006 г. восходящая (зеленая стрелка на графике). Однако если рассмотреть более мелкие участки графика цены, то можно обнаружить, что в феврале 2006г. тренд был явно нисходящий (красная стрелка на графике), а почти весь январь цена стояла в боковом коридоре (желтая стрелка).

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

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

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

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

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

2. Как выявить тренд

Не претендуя на полноту всех вариантов, приведем некоторые способы определения тренда:

  1. По скользящим средним;
  2. По вершинам зигзага;
  3. По показаниям ADX;
  4. По NRTR;
  5. По цвету свечей Heiken Ashi.

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

2.1. Определение направления тренда скользящей средней

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

Сформулируем простое правило для одной скользящей средней:

  • тренд направлен вверх, если на заданном таймфрейме цена закрытия бара находится выше скользящей средней;
  • тренд направлен вниз, если на заданном таймфрейме цена закрытия бара находится ниже скользящей средней;

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

Проиллюстрируем этот способ картинкой:

Рисунок 2. Определение тренда по скользящей средней

Здесь используется график EURUSD D1 и простая скользящая средняя с периодом 200, построенная по ценам закрытия (линия красного цвета на графике). В нижней части картинки отображается специально разработанный нами индикатор тренда — MATrendDetector. Направления тренда указывается положением гистограммы индикатора относительно нулевой оси. Плюс единице соответствует направление тренда вверх. Минус единице — вниз. О нем и других, использованных в этой статье, будет рассказано ниже.

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

2.2. Определение направления тренда по трем скользящим средним

Что же можно сделать, чтобы улучшить качество определения тренда по скользящим средним? Например, использовать две и более скользящих средних с разными периодами. Тогда правило определения тренда для любого числа (больше, чем одна) скользящих средних с разными периодами будет выглядеть так:

  • тренд направлен вверх, если на заданном таймфрейме все скользящие средние выстроены в правильном порядке повышения при закрытии бара;
  • тренд направлен вниз, если на заданном таймфрейме все скользящие средние выстроены в правильном порядке понижения при закрытии бара.

Здесь используются термины:

  • «в правильном порядке повышения» — каждая скользящая средняя должна быть выше всех остальных средних с большим периодом;
  • «в правильном порядке понижения» — каждая скользящая средняя должна быть ниже всех остальных средних с большим периодом.

Такой «правильный порядок средних» также называют раскрытием веера средних вверх/вниз из-за внешнего сходства.

Проиллюстрируем этот способ картинкой:

Рисунок 3. Определение тренда по нескольким скользящим средним

Здесь используется график EURUSD D1 и простые скользящие средние с периодами 200 (толстая линия красного цвета), 50 (линия желтого цвета средней толщины), 21 (тонкая линия фиолетового цвета), построенные по ценам закрытия.

В нижней части картинки отображается специально разработанный нами индикатор тренда — FanTrendDetector. Направления тренда указывается положением гистограммы индикатора относительно нулевой оси. Плюс единице соответствует направление тренда вверх. Минус единице — вниз. Если значение гистограммы равно нулю, то это означает, что направление тренда определить невозможно. Для сравнения также присутствует индикатор MATrendDetector.

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

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

2.3. Определение направления тренда по максимумам и минимумам индикатора Зигзаг

Попробуем теперь подойти к определению тренда с позиции классиков технического анализа. А именно, используем следующее правило Чарльза Доу:

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

Локальные максимумы/минимумы будем находить по вершинам индикатора Зигзаг.

Проиллюстрируем этот способ картинкой:

Рисунок 4. Определение тренда при помощи индикатора Зигзаг

Здесь используется график EURUSD D1 и Зигзаг с параметрами: ExtDepth = 5, ExtDeviation = 5, ExtBackstep = 3.

В нижней части картинки отображается разработанный нами индикатор тренда — ZigZagTrendDetector.

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

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

2.4. Определение направления тренда по показаниям индикатора ADX

Следующий из рассматриваемых нами способов — определение тренда по показаниям индикатора ADX (Average Directional Movement Index) или индекса среднего направленного движения. Данный индикатор используется не только для определения направления тренда, но также для оценки его силы. Это очень ценное свойство индикатора ADX. Сила тренда определяется по основной линии ADX — если значение больше 20 (общепринятый уровень, но не обязательно оптимальный в данный момент), то тренд достаточно сильный.

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

Сформулируем правило определения тренда:

  • тренд направлен вверх, если линия +DI находится выше, чем линия -DI;
  • тренд направлен вниз, если линия +DI находится ниже, чем линия -DI.

В данном случае, для определения направления тренда линия ADX не используется. Она нужна для того, чтобы уменьшить количество ложных срабатываний при использовании индикатора. Если тренд слабый (ADX меньше 20), то лучше сначала дождаться, пока он усилится, и только тогда начинать торговлю по тренду.

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

Рисунок 5. Определение тренда по индикатору ADX

Здесь используется график EURUSD D1 и индикатор ADX с параметрами: PeriodADX = 21 (толстая синяя линия — значение силы тренда ADX, тонкая зеленая линия — значение +DI, тонкая красная линия — значение -DI).

В нижней части картинки отображается разработанный нами индикатор тренда — ADXTrendDetector. Для сравнения, верхний график индикатора ADXTrendDetector (малинового цвета) установлен с выключенным фильтром по силе тренда (значение ADXTrendLevel = 0), а график под ним (голубого цвета) — с включенным (параметром ADXTrendLevel = 20).

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

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

2.5. Определение направления тренда по показаниям индикатора NRTR

Следующий способ определения тренда — по показаниям индикатора NRTR (Nick Rypock Trailing Reverse) — трендследящий индикатор Ника Рипока. Этот индикатор всегда находится на постоянном удалении от достигнутых экстремумов цен – ниже цены на восходящих трендах и выше цены на нисходящих трендах. Основная идея индикатора — небольшие коррекционные движения против основного тренда должны игнорироваться, а движение против основной тенденции, превышающее некоторый уровень, сигнализирует о смене направления тенденции.

Отсюда следует правило для определения направления тренда:

  • тренд направлен вверх — если при закрытии бара линия индикатора соответствует восходящему тренду;
  • тренд направлен вниз — если при закрытии бара линия индикатора соответствует нисходящему тренду.

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

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

Рисунок 6. Определение тренда по индикатору NRTR

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

2.6. Определение направления тренда по свечам Heiken Ashi

Достаточно популярным является способ определения тренда по свечам Heiken Ashi. Графики Heiken Ashi являются видоизменёнными графиками японских свечей, но их значения частично усредняются с предыдущей свечой.

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

Рисунок 7. Определение тренда по цвету свечей Heiken Ashi

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

3. Индикаторы тренда

Напишем теперь индикаторы тренда.

3.1. Индикатор тренда, основанный на скользящей средней

Самый простой индикатор, как и самый простой способ определения тренда, основан на скользящей средней. Рассмотрим последовательно, из каких частей он состоит. Полный текст индикатора находится в файле MATrendDetector.MQ5, который приложен к статье.

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

Мы используем из нее одну функцию, вычисляющую простую скользящую среднюю:

Здесь задаются входные параметры, имеющие такое назначение:

  • position — начальный индекс в массиве price[], с которого начинаются расчеты средней;
  • period — период скользящей средней, должен быть больше нуля;
  • price[] — массив, содержащий ценовой ряд, заданный при установке индикатора на график, по умолчанию используются цены закрытия бара Close[].

Функция возвращает рассчитанное значение скользящей средней.

Следующая часть текста содержит начальные настройки для отображения индикатора на экране в нужном нам виде:

Задаются следующие настройки:

  • #property indicator_separate_window сообщает терминалу MetaTrader 5, что надо выводить график индикатора в отдельном окне;
  • #propertyindicator_applied_price PRICE_CLOSE — тип цен, который используется по умолчанию;
  • #property indicator_minimum -1.4 — минимальное значение на вертикальной оси, отображаемое в окне индикатора;
  • #property indicator_maximum +1.4 — максимальное значение на вертикальной оси, отображаемое в окне индикатора.

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

  • #property indicator_buffers 1 — количество буферов для расчета индикатора, у нас используется только один расчетный буфер;
  • #property indicator_plots 1 — количество графических серий в индикаторе, у нас выводится один график на экран;
  • #property indicator_type1 DRAW_HISTOGRAM — задает отображение графика индикатора в виде гистограммы;
  • #property indicator_color1 Black — задает цвет графика индикатора по умолчанию;
  • #property indicator_width1 2 — задает толщину линии графика индикатора, в данном случае толщину столбиков гистограммы;

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

Здесь только один параметр — значение периода скользящей средней.

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

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

Функция SetIndexBuffer() связывает объявленный ранее массив, в котором мы будем хранить значения направления тренда TrendBuffer[], с одним из индикаторных буферов. Индикаторный буфер у нас всего один и его индекс равен нулю.

Функция PlotIndexSetInteger() задает количество начальных баров без отрисовки в окне индикатора.

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

Далее идет функция-обработчик события о необходимости пересчета индикатора OnCalculate():

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

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

Здесь мы используем механизм, предоставляемый терминалом. Каждый раз при вызове обработчика проверяем значение аргумента функции _prev_calculated — это число баров, обработанное на предыдущем вызове функции OnCalculate(). Если он равен нулю, то пересчитываем все значения индикатора. Иначе пересчитываем только последний бар с индексом _prev_calculated — 1.

Цикл расчета значений индикаторного буфера выполняется оператором for — в его теле вызывается собственно функция определения тренда TrendDetector для каждого пересчитываемого значения индикаторного буфера. Таким образом, переопределяя только эту функцию, мы можем реализовать различные алгоритмы расчета направления тренда. При этом, остальные части индикатора остаются практически неизменными (возможно, будут еще меняться внешние задаваемые параметры).

Рассмотрим теперь саму функцию определения тренда TrendDetector.

Функция выполняет следующие задачи:

  • вычисляет значение простой скользящей средней, начиная с заданного аргументом _shift бара — с помощью вызова библиотечной функции SimpleMA;
  • сравнивает значение цены на этом баре с значением средней;
  • если значение цены больше значения средней, то возвращается +1, если значение цены меньше значения средней, то возвращается -1, иначе возвращается ноль.

Если функция возвратила ноль, то это значит, что направление тренда определить не удалось.

Результат работы получившегося индикатора можно увидеть на рис.2 и рис.3.

3.2. Индикатор тренда, основанный на «веере» скользящих средних

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

Полный текст индикатора находится в файле FanTrendDetector.MQ5, который приложен к статье.

Отличия этого индикатора от предыдущего в следующем:

  • периоды трех скользящих средних задаются во внешних задаваемых параметрах:
  • другая функция TrendDetector:

Функция проверяет «правильность» расположения средних, сравнивая их между собой при помощи операторов if. else, и порядок расположения. Если средние расположены в порядке повышения, то возвращается +1 — тренд вверх. Если средние расположены в порядке понижения, то возвращается -1 — тренд вниз. Если оба проверяемые условия в if ложны, то возвращается ноль (тренд определить не удалось). На входе функции два аргумента — смещение в буфере для анализируемого бара и сам буфер с ценовым рядом.

Остальные части индикатора точно такие же, как и у предыдущего.

3.3. Индикатор тренда, основанный на индикаторе Зигзаг

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

Во внешних переменных задаются значения параметров вызываемого внешнего индикатора ZigZag:

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

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

Также необходимо внести изменения в обработчик события инициализации индикатора — задать использование этих двух дополнительных буферов в качестве расчетных:

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

Функция TrendDetector выглядит так:

Здесь ищутся последние четыре экстремума зигзага. Особенность поиска в том, что поиск идет вглубь истории. Поэтому индекс в цикле for уменьшается на каждой итерации поиска вплоть до нулевого значения. Если экстремумы находятся, то проводится их сравнение между собой на предмет соответствия определению тренда по Доу. Возможно два варианта расположения экстремумов — для повышательного тренда и для понижательного. Эти варианты проверяются операторами if. else.

3.4. Индикатор тренда, основанный на индикаторе ADX

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

Функция TrendDetector выглядит так:

С помощью функции CopyBuffer() мы получаем значения из нужных нам индикаторных буферов внешнего индикатора ADX для заданного аргументом _shift номера бара. Далее, анализируем положение линий +DI и -DI относительно друг друга. При необходимости, учитываем значение силы тренда — если сила тренда меньше заданной, то тренд не определен.

3.5. Индикатор тренда, основанный на индикаторе NRTR

Структура индикатора тренда NRTRTrendDetector, построенного на NRTR — аналогична предыдущему. Полный текст индикатора находится в файле NRTRTrendDetector.MQ5, который приложен к статье.

Первое отличие — в блоке задания внешних параметров:

Второе отличие — в функции определения направления тренда TrendDetector:

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

3.6. Индикатор тренда, основанный на свечах Heiken Ashi

Рассмотрим теперь структуру индикатора тренда, использующего свечи Heiken Ashi.

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

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

Функция OnCalculate() теперь выглядит так:

Поскольку для определения цвета свечи Heiken Ashi нужны только две цены — открытия и закрытия, то рассчитываем только их.

После определения направления тренда через вызов функции TrendDetector, запоминаем текущие значения цен свечей Heiken Ashi в промежуточных переменных open и close. Сама функция TrendDetector выглядит очень просто. Вполне можно было вставить ее тело в обработчик OnCalculate, но, для большей универсальности в случае дальнейшего развития и усложнения алгоритма, мы оставляем эту функцию. Вот ее вид:

На входе у функции две цены для свечи Heiken Ashi — открытия и закрытия, по которым определяется ее направление.

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

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

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

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

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

Поскольку нам нужны торговые функции, то мы подключили библиотеку, поставляемую в составе MetaTrader 5. Данная библиотека содержит класс CTrade и несколько методов для работы с позициями и ордерами. Это упрощает рутинную работу с торговыми функциями. Библиотека подключается в следующей строке:

Из нее мы будем использовать два метода. Открытие позиции и закрытие позиции. Первый метод позволяет открыть позицию заданного направления и объема:

Входные аргументы такие:

  • symbol — название инструмента для торговли, например, «EURUSD»;
  • order_type — направление открытия позиции, шорт или лонг;
  • volume — объем открываемой позиции в лотах, например, 0.10;
  • price — цена открытия;
  • sl — цена стоп-лосса;
  • tp — цена тэйк-профита;
  • comment — комментарий, добавляемый при отображении позиции в торговом терминале;

Второй метод позволяет закрыть позицию:

  • symbol — название инструмента для торговли, например «EURUSD»;
  • deviation — максимально допустимое отклонение от текущей цены при закрытии позиции, в пунктах;

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

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

Второй важный блок эксперта — обработчик события инициализации эксперта.

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

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

Больше никаких действий по деинициализации производить не требуется.

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

Рассмотрим вспомогательные функции, которые использует эксперт.

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

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

В приведенной функции мы создаем массив current_rates[] структур типа MqlRates из одного элемента, копируем в него текущую информацию о ценах и объемах, затем проверяем значение тикового объема.

В нашем обработчике события о поступлении нового тика по текущему символу мы используем эту функцию таким образом:

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

Поскольку нам надо отслеживать изменения тренда, то необходимо запомнить значение тренда на предыдущем баре. В приведенном фрагменте для этого используется переменная prev_signal. Также, надо использовать флаг, сигнализирующий о том, что это первый сигнал (предыдущего еще нет). Это переменная is_first_signal. По значению флага true мы инициализируем prev_signal первоначальным значением.

Здесь используется функция GetSignal, которая возвращает направление текущего тренда, полученное из нашего индикатора. Выглядит она так:

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

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

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

Для закрытия противоположной позиции используется функция CheckPositionClose:

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

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

Если есть сигнал покупки, то открывается длинная позиция с заданным нами объемом по текущей цене SYMBOL_ASK. Поскольку все позиции закрываются по противоположному сигналу, то тейк-профит и стоп-лосс не используется. Эксперт «всегда в рынке».

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

Для сигналов продажи все аналогично:

Отличие только в цене продажи — SYMBOL_BID.

Наличие сигнала проверяется функциями CheckBuySignal — на покупку и CheckSellSignal — на продажу. Функции очень простые и понятные:

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

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

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

Рассмотрим результаты работы нашего первого эксперта на исторических данных. Будем использовать историю EURUSD, в интервале 01.04.2004 г. — 06.08.2020 г., на дневных барах. После прогона эксперта в тестере с параметрами по умолчанию, получаем следующую картинку:

Рисунок 8. Результат тестирования эксперта на индикаторе MATrendDetector

Советник: MATrendExpert Символ: EURUSD Период: Daily (2004.04.01 — 2020.08.06) Входные параметры: Lots=0.100000 MAPeriod=200 Брокер: MetaQuotes Software Corp. Валюта: USD Начальный депозит: 10 000.00 Бары: 1649 Тики: 8462551 Чистая прибыль: 3 624.59 Общая прибыль: 7 029.16 Общий убыток: -3 404.57 Прибыльность: 2.06 Матожидание выигрыша: 92.94 Фактор восстановления: 1.21 Коэффициент Шарпа: 0.14 Просадка баланса: Абсолютная просадка по балансу: 2 822.83 Максимальная просадка по балансу: 2 822.83 (28.23%) Относительная просадка по балансу: 28.23% (2 822.83) Просадка средств: Абсолютная просадка по средствам: 2 903.68 Максимальная просадка по средствам: 2 989.93 (29.64%) Относительная просадка по средствам: 29.64% (2 989.93) Всего сделок: 39 Короткие сделки (% выигравших): 20 (20.00%) Длинные сделки (% выигравших): 19 (15.79%) Total Deals: 78 Прибыльные сделки (% от всех): 7 (17.95%) Убыточные сделки (% от всех): 32 (82.05%) Самая большая прибыльная сделка: 3 184.14 Самая большая Убыточные сделки (% от всех): -226.65 Средняя прибыльная сделка: 1 004.17 Средняя Убыточные сделки (% от всех): -106.39 Максимальное количество непрерывных выигрышей (прибыль): 4 (5 892.18) Максимальное количество непрерывных проигрышей (убыток): 27 (-2 822.83) Максимальная непрерывная прибыль (число выигрышей): 5 892.18 (4) Максимальная непрерывный убыток (число проигрышей): -2 822.83 (27) Средняя непрерывный выигрыш: 2 Средняя непрерывный проигрыш: 8

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

Рисунок 9. Участок с боковым движением

Также на графике присутствует скользящая средняя SMA200.

Теперь посмотрим, что покажет более «продвинутый» эксперт на индикаторе с несколькими скользящими средними — на том же интервале и с параметрами по умолчанию:

Рисунок 10. Результат тестирования эксперта на индикаторе FanTrendDetector

Советник: FanTrendExpert Символ: EURUSD Период: Daily (2004.04.01 — 2020.08.06) Входные параметры: Lots=0.100000 MA1Period=200 MA2Period=50 MA3Period=21 Брокер: MetaQuotes Software Corp. Валюта: USD Начальный депозит: 10 000.00 Бары: 1649 Тики: 8462551 Чистая прибыль: 2 839.63 Общая прибыль: 5 242.93 Общий убыток: -2 403.30 Прибыльность: 2.18 Матожидание выигрыша: 149.45 Фактор восстановления: 1.06 Коэффициент Шарпа: 0.32 Просадка баланса: Абсолютная просадка по балансу: 105.20 Максимальная просадка по балансу: 1 473.65 (11.73%) Относительная просадка по балансу: 11.73% (1 473.65) Просадка средств: Абсолютная просадка по средствам: 207.05 Максимальная просадка по средствам: 2 671.98 (19.78%) Относительная просадка по средствам: 19.78% (2 671.98) Всего сделок: 19 Короткие сделки (% выигравших): 8 (50.00%) Длинные сделки (% выигравших): 11 (63.64%) Total Deals: 38 Прибыльные сделки (% от всех): 11 (57.89%) Убыточные сделки (% от всех): 8 (42.11%) Самая большая прибыльная сделка: 1 128.30 Самая большая Убыточные сделки (% от всех): -830.20 Средняя прибыльная сделка: 476.63 Средняя Убыточные сделки (% от всех): -300.41 Максимальное количество непрерывных выигрышей (прибыль): 2 (1 747.78) Максимальное количество непрерывных проигрышей (убыток): 2 (-105.20) Максимальная непрерывная прибыль (число выигрышей): 1 747.78 (2) Максимальная непрерывный убыток (число проигрышей): -830.20 (1) Средняя непрерывный выигрыш: 2 Средняя непрерывный проигрыш: 1

Уже намного лучше. Если посмотреть наш «проблемный» участок, перед которым спасовал предыдущий эксперт, то картинка будет следующая:

Рисунок 11. Результат работы FanTrendExpert на участке с боковым движением

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

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

Проведем тестирование наших экспертов. Результаты работы на всем доступном в терминале интервале истории с 1993 г. по 2020 г. на паре EURUSD и таймфрейме D1 представлены ниже.

Рисунок 12. Тестирование эксперта MATrendExpert

Рисунок 13. Тестирование эксперта FanTrendExpert

Рисунок 14. Тестирование эксперта ADXTrendExpert (ADXTrendLevel = 0)

Рисунок 15. Тестирование эксперта ADXTrendExpert (ADXTrendLevel = 20)

Рисунок 16. Тестирование эксперта NRTRTrendExpert

Рисунок 17. Тестирование эксперта Heiken Ashi

Рассмотрим получившиеся результаты тестирования.

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

Малое количество сделок у этих экспертов не является недостатком, так как время удержания позиции доходит до нескольких месяцев — следуем за 200-дневным трендом. Интересно отметить, как у эксперта MATrendExpert чередуются трендовые участки, где идет набор баланса, и флэтовые (в контексте данного эксперта), где идут потери средств.

Способ определения тренда на индикаторе ADX также дал неплохие результаты работы эксперта. Здесь был немного изменен PeriodADX на значение 17, дающий более равномерные результаты на всей истории. Влияние фильтра по силе тренда не очень значительно. Возможно, требуется подбор параметра ADXTrendLevel, или даже динамическое задание его в зависимости от текущей волатильности рынка. Присутствуют несколько периодов просадок, поэтому требуются дополнительные меры по выравниванию кривой баланса.

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

Эксперт на Heiken Ashi оказался откровенно убыточным. Хотя на истории все выглядит красиво, видимо, из-за перерисовки в реальном времени, результаты тестирования далеки от идеала. Возможно, лучшие результаты даст использование сглаженной версии индикатора, Smoothed Heiken Ashi, которая не так подвержена перерисовке.

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

Заключение

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

Самые честные площадки и платформы с бинарными опционами:
  • Бинариум
    Бинариум

    1 место! Самый лучший брокер бинарных опционов за последние 2 года. Бесплатное обучение! Бонус за открытие счета!

  • ФинМакс
    ФинМакс

    Брокер с самыми разными торговыми инструментами. Подходит для опытных трейдеров.

Добавить комментарий