тел.: 8 800 200 86 47|+7 (812) 336 61 11Заказать звонок
Admiral Markets UK Admiral Markets UK Choose your country

MQLabs: Динамика линейной регрессии. Часть 2.

Советник LinearRegressionEnter

Развернутые результаты тестирования

 

Наряду с индикатором Moving Average, одним из наиболее распространенных инструментов технического анализа является канал линейной регрессии. Вариантов применения показаний этого канала может быть множество. Один из таких вариантов был представлен в статье в статье "Динамика линейной регрессии", где канал использовался опосредовано, через индикатор LinearRegressionTrace.

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

 

Суть метода. Сторона 1

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

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

Рис. 1. Изменение цены открытия сделки на лучшую цену.

В момент открытия начальной позиции по цене 1.2600 трейдер рассчитывал, что цена будет продолжать нисходящее движение, на чем предполагалось получить, к примеру, 10 пунктов прибыли (уровень Take Profit = 1.2590). Вместо продолжения падения цена выросла на 30 пунктов и появились признаки то ли разворота, то ли коррекции. Хотя, как мы далее видим, это была только коррекция. Восходящее движение впоследствии продолжилось. При появлении признаков коррекции трейдер открывает еще одну позицию, но уже по цене 1.2620 с объемом, равным объему первоначальной позиции. Это приводит к тому, что цена открытия совокупной сделки становится равной 1.2610.

Благодаря увеличившемуся объему сделки, в новой ситуации для получения 10 пунктов прибыли, которые соответствовали объему первой позиции, достаточно получить 5 пунктов прибыли, т.к. объем сделки увеличился в два раза. То есть уровень Take Profit можно разместить на цене 1.2605.

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

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

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

 

Суть метода. Сторона 2

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

Критерия всего два: направление канала (нисходящий, восходящий) и расположение цены в верхней или нижней части канала. Сигнал покупки - восходящий канал и нахождение цены открытия свечи в нижней половине канала (хотя бы на пункт ниже линии регрессии). Сигнал продажи - нисходящий канал и нахождение цены открытия свечи в верхней половине канала (см. рис. 2).

Рис. 2. Сигналы канала линейной регрессии.

Отличием рассматриваемой системы от большинства предыдущих торговых систем будет отсутствие принудительного закрытия позиции. Позиция может быть закрыта только при достижении ценой уровней Stop Loss или Take Profit. Новые сигналы открытия могут быть сформированы только при условии отсутствия позиций в рынке.

 

Расчет уровней Stop Loss, Take Profit и цен открытия ордеров-доливок

Расчеты всех уровней системы будут привязаны к ширине канала линейной регрессии. Расстояние между ценой открытия и уровнем Stop Loss первичной позиции рассчитывается как расстояние от нижней до верхней границы канала (далее - ширина канала), умноженное на коэффициент, задаваемый пользователем - widthKoef. Полученное значение делится на три равные части - зоны влияния ордеров-доливок. Граница каждой зоны - это цена открытия одного из двух ордеров-доливок, уровни Stop Loss которых расположены на той же цене, что и цена Stop Loss первичной позиции.

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

Рис. 3. Расчет уровней цен открытия ордеров, Stop Loss и Take Profit.

На рис. 3 показан пример расчета всех необходимых уровней на основании канала шириной 4 пункта. Принято, что коэффициент widthKoef равен 3, а коэффициент tpKoef = 4. В итоге получаем, что расстояние от цены открытия первичной позиции (1.2608) до цены Stop Loss будет равно 12 пунктов. Это расстояние отсчитывается от базовой цены позиции, т.е. от той рыночной цены, которая принимается в момент закрытия позиции. Для короткой позиции таковой является цена Ask, для длинной - Bid. Поэтому фактическое расстояние от цены Stop Loss до цены открытия позиции увеличивается на величину спреда (примем равным 1-ому пункту).

Расстояние 12 пунктов делится на три равные части. Первый ордер-доливка располагается на расстоянии 4 пункта от базовой цены (1.2613), второй - на расстоянии 8 пунктов от базовой цены (1.2617).

В отличие от уровня Stop Loss, уровень Take Profit позиции отсчитывается от цены открытия позиции. При tpKoef = 4 и ширине канала 4 пункта получим расстояние: 4*(4/2) = 8 пунктов, т.е. цену 1.2600.

 

Тактика программного управления ордерами

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

Первым шагом является открытие позиции. Позиция открывается в два этапа: отправка запроса открытия позиции с нулевыми уровнями Stop Loss и Take Profit; модификация позиции с установкой рассчитанных уровней Stop Loss и Take Profit. Делается это по причине требования точного соответствия расстояний между ценой открытия и ценами закрытия позиции, в то время как установка параметров позиции в момент ее открытия требуемой точности не дает. Ведь в этом случае нам пришлось бы мириться либо с изменением цены открытия (если разрешить брокеру использовать коридор допустимых цен открытия), либо с возможной продолжительностью процесса открытия позиции по причине реквот (если коридор допустимых цен равен нулю). Этих бед можно избежать, если дождаться открытия позиции, т.к. цена открытия становится фиксированной. Так и производится точная установка уровней Stop Loss и Take Profit.

Второй шаг - установка отложенных ордеров, равномерно распределенных на участке от цены открытия первичной позиции до ее уровня Stop Loss. Если первичная позиция имеет тип Buy, то тип отложенных ордеров - Buy Limit, если тип первичной позиции - Sell, то тип отложенных ордеров - Sell Limit. Ордера получают такие уровни Take Profit, которые будут соответствовать уровню закрытия прибыли для совокупной позиции, образующейся на момент открытия каждого ордера. В момент срабатывания отложенного ордера программе останется лишь переместить уровни Take Profit одной или двух позиций, расположенных по худшей цене, на уровень, определенный позицией, открытой по наилучшей цене.

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

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

 

Тестирование эксперта

К сожалению, специфика алгоритма стратегии не дает возможности получения точного и неизменного результата тестирования эксперта по причине зависимости результатов от выбора начальной точки отсчета. Поэтому акцентируем внимание на том, что начальной точкой отсчета для всех проведенных тестов является дата 01.01.2011. Конечная дата теста - 01.09.2012. Использовался таймфрейм М1. По этой причине качество моделирования не смогло превысить отметку 25%.

Для каждой валютной пары были подобраны уникальные значения параметров period (период расчета канала линейной регрессии), widthKoef и tpKoef. Подбор параметров производился на периоде 01.01.2012 - 01.09.2012. Таким образом, участок, соответствующий 2011-ому году, можно назвать участком форвард-тестирования. Результаты тестирования показаны на рис. 4-7.

 

EURUSD. Значения настроечных параметров: period = 220, widthKoef = 9, tpKoef = 1. Чистая прибыль 6 988 долларов, максимальная просадка 1 956 долларов. Фактор восстановления 3.57.

                    Рис. 4. Результаты тестирования эксперта LinearRegressionEnter на валютной паре EURUSD.

 

USDCHF. Значения настроечных параметров: period = 240, widthKoef = 5, tpKoef = 5. Чистая прибыль 2 049 долларов, максимальная просадка 2 832 долларов. Фактор восстановления ниже единицы.

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

 

GBPUSD. Значения настроечных параметров: period = 20, widthKoef = 10, tpKoef = 3. Чистая прибыль 6 449 долларов, максимальная просадка 1 312 долларов. Фактор восстановления 4.92.

        Рис. 6. Результаты тестирования эксперта LinearRegressionEnter на валютной паре GBPUSD.

 

USDJPY. Значения настроечных параметров: period = 160, widthKoef = 5, tpKoef = 2. Чистая прибыль 293 доллара, максимальная просадка 2 242 доллара. Фактор восстановления ниже единицы.

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

 

Недостатки эксперта

  • Зависимость результатов от выбора начальной точки отсчета.

  • Зависимость результатов от цены открытия первичной позиции (чувствительность к изменениям цен в худшую сторону).

  • Получение больших значений Stop Loss и Take Profit при генерации сигнала на данных, которым соответствовала аномально высокая волатильность. В этом случае требуется вмешательство трейдера (переопределение уровней или полное прекращение торговли).

Достоинства эксперта

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

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

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

 

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

Игорь Герасько

Сентябрь 2012

Специально для компании Admiral Markets

2.285715
 
 
X
Loading