Home / Трейлинг по скользящим средним

Трейлинг по скользящим средним

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

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

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

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

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

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

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

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

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

Если хранить эти данные в трейлинг по скользящим средним классах вроде CPosition и CStrategy, то это перемешает внутренние переменные этих классов с множеством переменных трейлинга, существенно затрудняя функционирование этих классов. Стандартизация функций трейлинга. Класс CTrailing Очень часто самым эффективным решением оказывается самое простое и проверенное.

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

В самом деле, если трейлинг-стоп мы создадим в виде независимого класса, то его данные и методы не будут переплетены торгового робота на нейронных сетях данными и методами базового класса CStrategy и другими важными инфраструктурными объектами вроде CPosition.

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

При разработке данного класса необходимо решить два вопроса. Внутреннее устройство класса трейлинг-стопа.

Торговая стратегия основанная на скользящих средних (Moving Average)

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

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

форекс стратегия на золоте надежный заработок в сети интернет

Также у каждого типа трейлинг-стопа должен быть метод, при вызове которого производится изменение стоп-лосса позиции. Этот трейлинг по скользящим средним будет своеобразной "кнопкой", запускающий алгоритм трейлинга, поэтому название этого метода имеет смысл сделать общим для всех типов трейлинга. Мы выделили две общие сущности для всех типов трейлингов, которые удобно оформить в виде специального базового класса, назовем его CTrailing. Он будет содержать методы по установке текущей позиции, а также виртуальный метод Modify, с помощью которого будет происходит модификация стоп-лосса и специальный виртуальный метод Copy, о значении которого мы расскажем позже: Сам базовый класс трейлинга не трейлинг по скользящим средним никаких параметров конкретных алгоритмов перестановки стоп-лоссов.

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

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

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

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

Разместим базовый класс трейлинга в классе самой позиции CPosition: Ведь в этом случае позицией можно управлять, как будто с помощью самой позиции: Однако трейлинг по скользящим средним модуля трейлинг-стопа на этом не заканчивается. В приведенном выше примере по-прежнему требуется сопровождение позиции на уровне стратегии пользователя. Необходимо переопределять методы BuySupport и SellSupport и сопровождать каждую позицию в логике эксперта.

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

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

Скользящая средняя: полный обзор

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

всё о сигналах на форекс торговые роботы коды

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

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

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

Забегая вперед, приведем пример реализации метода копирования для классического трейлинг-стопа CTrailingClassic: Пользователю необходимо запомнить простое правило при написании своего класса трейлинг по скользящим средним Для установки трейлинг-стопа по умолчанию необходимо переопределить метод копирования Copy базового класса CTrailing.

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

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

Если в конструкторе пользовательской стратегии связать указатель CStrategy:: Следовательно, для стратегий, которые будут сопровождать позиции только по трейлинг по скользящим средним, вообще не будет необходимости в переопределении методов BuySupport и SellSupport.

Сопровождение позиций будет осуществляться в полностью автоматическом режиме на уровне CStrategy. Обратите внимание, что в коде CallSupport после вызова метода CTrailing:: Modify осуществляется проверка на то, активна позиция. Это значит, что если в процессе модификации трейлинг-стопа, позиция закрылась, ничего страшного не произойдет, цикл перебора прервет вызов переопределенных методов и продолжит перебор со следующей позиции. Благодаря этой особенности возникает интересное следствие: В качестве функции трейлинг-стопа фактически может выступать любой алгоритм по управлению позицией.

Изменение ее стоп-лосса необязательно. Алгоритм управления позицией может трейлинг по скользящим средним ее по определенным условиям. Такое действие ожидаемо, и CStrategy отработает его в штатном режиме. Практическое использование трейлинг-стопа. Пример реализации классического трейлинг-стопа Теперь, когда базовый класс определен и мы научили базовый движок стратегии взаимодействовать с ним, можно создать конкретные реализации трейлинг-стопов.

стратегия покупки опциона aud валютная пара usd

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

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

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

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

Трейдинг. Торговля на фондовом рынке.

Поэтому алгоритмы должны учитывать эту особенность. Итак, приведем код нашего первого трейлинг-стопа. Он базируется на классе CTrailing и переопределяет метод Modify: CTrailingClassic void: Экстремум или минимум цены в зависимости от типа позиции ищется на истории с помощью метода FindExtremum.

Благодаря этому, даже после перезапуска стратегии или ее простоя, уровень стоп-лосса будет трейлинг по скользящим средним верно. Об этих конструкциях мы поговорим чуть позже, в специальном разделе "Подключение трейлинг-стопа к настройкам эксперта". Подключаем трейлинг-стоп к стратегии Трейлинг по скользящим средним В предыдущей части статьи " Универсальный трейлинг по скользящим средним эксперт: Эта простая торговая тактика основана на входе в моменты резкого движения цены.

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

Советник Moving Average – простой, но эффективный робот

Короткая позиция закрывалась, когда цена становилась выше скользящей средней. Еще раз приведем код, описанный в предыдущей статье, который реализует эту логику: StopLossValue 0. Просто удалим эти методы из кода стратегии, а в ее конструкторе добавим классический трейлинг-стоп трейлинг по скользящим средним качестве трейлинга по умолчанию. Саму стратегию мы переименуем в CImpulseTrailingAuto: SetDiffExtremum 0. Подключение параметров трейлинга к настройкам эксперта Получившийся способ работы с трейлинг-стопом достаточно удобен.

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

Чтобы этого не происходило, можно воспользоваться условной компиляцией. CTrailingClassic void ; Рис 1. Динамически подключаемые параметры PointsModify и StepModify.

Это тоже вам понравится

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

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

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

  • Заработок интернет пенсионерам
  • Торговая стратегия основанная на скользящих средних (Moving Average)
  • Торговля по двум скользящим - обман номер 2. - Трейдинг. Торговля на фондовом рынке.
  • Простая стратегия для торговли – скользящие средние
  • Взвешенные скользящие средние WMA.
  • Как заработать 50 тысяч онлайн

Это сделано трейлинг по скользящим средним, чтобы пользователь смог подключить к этому трейлинг-стопу любой объект типа CIndMovingAverage. Теперь, когда класс написан, проверим его работу в тестере стратегий. Вот небольшое видео, демонстрирующее его работу: Индивидуальный трейлинг-стоп для трейлинг по скользящим средним Мы разобрали механизм работы с трейлинг-стопом.

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

Стратегия - Канал средних скользящих

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

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

Переопределим методы BuySupport и SellSupport на следующие: С помощью одной строчки кода мы указали трейлингу, какой объект использовать в качестве расчета уровня стоп-лосса. Трейлинг по скользящим средним методе SupportSell на новые позиции устанавливается уже другой тип трейлинга, для которого задается свой набор параметров.

торговые сигналы с бинарными опционами

В данном случае устанавливается коридор следования от достигнутого экстремума цены в размере 0. Полный код стратегии CImpulse с индивидуальными трейлингами для каждого типа позиции представлен в файле ImpulseTrailingManual. Краткий перечень исправлений в трейлинг по скользящим средним версии Торговый движок CStrategy претерпел значительные изменения со времени публикации первой части статьи.

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

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

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

Как использовать скользящие средние – курс по скользящим средним из серии Трейдинг 101

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

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

трейлинг по скользящим средним торговые роботы 2019

Еще по теме
  • самому торгового робота
  • как пополнить демо счет на олимп трейд
  • как заработать много денег законно