Заработок с помощью стратегий (советников).

Материал находится на доработке.

История изменений

17.08.2016  Материал переработан.
19.01.2016  Первая публикация.

Введение.

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

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

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

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

Фундаментальные закономерности рынка как основа сигналов стратегий.

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

Число долгосрочных работающих закономерностей на рынке не бесконечно. В силу этого и число принципиально отличающихся хороших сигналов так же не бесконечно. Чтобы найти наилучшие сигналы, рассмотрим основные группы участников рынка и выделим закономерности, порождаемые их деятельностью:
  1. Клиенты рынка, которые совершают валютообменные операции по мере возникновения необходимости. Действия клиентов форексного обменника невозможно предсказать, но они дают предсказуемый результат: создают волатильность, которая выражается в колебаниях цен. Например, когда на рынке профессионалы ждут выхода важных новостей и до их публикации воздерживаются от торговли, больший вклад в волатильность делают клиенты форексного обменника. В такие времена волатильность рынка снижается и курс может долго колебаться в относительно малых диапазонах 150-300 пунктов Fоrexite неделями.

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

    В статье "Как заработать на Форекс" рассмотрен заработок на лохах. Наиболее популярный инструмент лоховодов – это сеточные стратегии с Мартингейлом. Сеточники эксплуатируют первую закономерность – становятся против тренда, наращивают позицию до тех пор, пока не произойдет откат и не будет получена прибыль. Это эквивалентно игре в казино с наращиванием ставок. Но отличие заключается в том, что когда лоховод становится против сильного безоткатного тренда, он сжигает весь свой депозит, но не теряет полученную с лохов прибыль. Полученный с лохов доход позволяет продолжать окучивать следующую партию лохов. Тем не менее, в основе сеточной стратегии лежит повторяющаяся закономерность, которая позволяет сначала разогнать счет, затем его уничтожить.

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

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

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

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

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

    Четвертая закономерность: граница валютных коридоров могут быть установлены и озвучены ЦБ.
Итак, у нас есть четыре стабильно повторяющихся закономерности:
  1. Клиенты форексного обменника создают волатильность.
  2. Во времена действия сильных фундаментальных факторов клиенты форексного обменника поддерживают среднесрочный или долгосрочный тренд.
  3. Профессионалы оказывают автоматически синхронизирующееся воздействие на изменение цен.
  4. ЦБ могут устанавливать границы валютных коридоров. Эта же информация используется профессионалами для синхронизации с действиями ЦБ.
За рамками этих четырех закономерностей колебания цен являются для постороннего наблюдателя случайным процессом. Таким образом, история котировок это результат случайных и неслучайных событий. Задача трейдера использовать неслучайные события с пользой для себя.

Любая торговая стратегия должна иметь ответ на следующие вопросы:
  1. При наступлении каких событий должна быть открыта позиция?
  2. Какой должен быть объем позиции?
  3. При наступлении каких событий позиция должна быть закрыта?
За выбор объема позиции отвечает методика управления капиталом. Подробно тема управления капиталом рассмотрена в статье  "Методы управления капиталом".

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

Рассмотрим, какие закономерности могут помочь открыть позицию:
  1. Волатильность клиентов форексного обменника.

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

  2. Фундаментальный среднесрочный или долгосрочный тренд.

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

  3. Действия профессиональных трейдеров.

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

  4. Действия ЦБ по ограничению колебаний валютных курсов.

    Здесь можно действовать в направлении вербальных и реальных интервенция ЦБ на импульсах, в расчете на сохранение среднесрочной или долгосрочной тенденции. Но даже краткосрочные импульсы интервенция сами по себе могут быть прибыльны.
Для стопа мы можем использовать:
  1. Среднестатистические размерности фиксированных стопов.
  2. Стопы с учетом коэффициента волатильности ("volatility-based stop"). Как правило, такие стопы эффективны для стратегий, адаптивных к текущему уровню волатильности.
  3. Уровни поддержки/сопротивления, располагая стоп ниже/выше уровней в расчете на входы профессионалов при подходе цены к уровню.
Для закрытия позиции должен быть сигнал, который обеспечит возможность получения прибыли. В отличие от открытия позиции, нет нужды беспокоиться о том, куда цена не должна пойти, чтобы не выбило стоп. Нужно позаботиться только о том, чтобы выход был максимально эффективным.

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

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

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

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

  2. Фундаментальный среднесрочный или долгосрочный тренд.

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

  3. Действия профессиональных трейдеров.

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

  4. Действия ЦБ по ограничению колебаний валютных курсов.

    Против реальных интервенций ЦБ нет смысла торговать. Это эквивалентно плевкам против ветра. В случае заговаривания рынка представителями ЦБ и прочей болтовней этого плана, стоит подождать и посмотреть на реакцию рынка. Она либо будет сильной и тогда лучше закрыть позицию, либо будет вялой и останется в рамках непредсказуемой волатильности форексного обменника. В этом случае не стоит торопиться.
Выше мы рассмотрели хорошие сигналы для открытия и закрытия позиций. Теперь мы можем отличить хорошую стратегию от плохой. Для примера, рассмотрим несколько примеров плохих стратегий:
  1. Открытие позиции в понедельник в 11:00 против тенденции последней недели с целью 10 пунктов и стопом 200 пунктов.

    Чем плоха эта стратегия?

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

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

    Чем плоха эта стратегия?

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


Внимательно рассмотрите график и неспешно подумайте над следующим вопросом: какое торговое решение и на основании каких соображений вы могли бы спрогнозировать на основании этого графика?

Подумали?

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

Возвращаем на график опорные экстремумы:


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

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

Теперь разберем пошагово показанную на картинке выше модель:


На приведенной выше картинке мы видим уровень сопротивления 1.3484 и уровень поддержки 1.2972. При подходе цены к уровню поддержки 1.2972, в зоне BUY ZONE  покупатели будут искать точки входа вверх, размещая стопы ниже поддержки 1.2972, в расчете на возврат курса в район уровня сопротивления или выше. Продавцы будут искать точки входа ниже уровня поддержки 1.2972 в SELL ZONE, так как срабатывание стопов покупателей может обеспечить нисходящий импульс вниз. Наличие импульса позволяет входить с меньшим стопом, что увеличивает итоговую доходность сделки.

Схожая ситуация будет происходить и в районе уровня сопротивления 1.3484. При подходе к уровню сопротивления 1.3484 продавцы будут входить в зоне SELL ZONE, размещая стопы выше уровня сопротивления, в расчете на снижения курса в район уровня поддержки или ниже. Покупатели будут искать возможность покупки выше уровня сопротивления в зоне BUY ZONE, так как срабатывание стопов продавцов может обеспечить восходящий импульс вверх. Наличие импульса позволяет входить с меньшим стопом, что увеличивает итоговую доходность сделки.

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

Дальнейшее развитие событий:


В зоне BUY ZONE произошли покупки и курс поднялся в район зоны SELL ZONE, при подходе к которой в свою очередь произошли продажи. В итоге образовываются новые среднесрочные уровни поддержки/сопротивления:


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

Дальнейшее развитие событий:


Уровень поддержки 1.2999 ночью пробивается вниз. Нисходящее ночное движение и отскок вверх происходят достаточно быстро. Модель «Консолидация» формально пробита вниз, но нисходящее движение сразу развитие не получает. Предыдущий уровень поддержки 1.2972 не выбит. Покупатели со стопами ниже 1.2972 успешно защитили свои стопы. Защита уровня поддержки 1.2972 со стопом в районе 30 пунктов Fоrexite и отскоком вверх на 240 пунктов Fоrexite дает ProfitFactor > 6 или скромные 600% на сделку. Здесь уместно обратить внимание трейдеров на то, что сверхприбыли на Форекс получаются не только за счет умения спрогнозировать рынок, но и за счет умения организовать хороший ProfitFactor на сделку.

Дальнейший рост вверх с продажами в районе SELL ZONE уровня сопротивления 1.3383 приведет к формированию модели «Третья волна» вниз.

Дальнейшее развитие событий:


В районе уровня сопротивления 1.3383 происходят продажи с дальнейшим пробоем уровня поддержки 1.299 и развитием нисходящего тренда согласно модели «Третья волна» вниз.

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

Для самостоятельного поиска закономерностей на графиках, рекомендую придерживаться следующей схемы действий:
  1. Распечатка и исследование долгосрочных графиков. Долгосрочные графики дадут вам представление о том, что вообще происходило с тем или иным активом. Появится представление о том, что возможно и нормально для того или иного актива.
    Распечатка графиков обязательна! Только на бумаге вы сможете соотносить различные участки истории между собой. Глядя на монитор, вы просто физически не сможете проделать всю необходимую работу.
  2. Распечатка и исследование среднесрочных графиков. Такое исследование даст вам представление о среднесрочных моделях. Возможно, для построения торговой стратегии вам этого будет достаточно.

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

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

Наиболее популярные и надёжные сигналы стратегий честных трейдеров:
  • Входы в направлении внутридневных импульсов.
  • Входы в направлении пробоев среднесрочных уровней поддержки/сопротивления.
  • Входы в направлении развития основных моделей теханализа.
Большинство этих сигналов подробно рассматриваются в соответствующих материалах этого сайта. Популярные у лоховодов сеточные стратегии с Мартингейлом я принципиально не рассматриваю по этическим соображениям.

Настройка стратегии с целью минимизации опасности переподгонки под кривую.

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

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

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

Отчет стратегии.
Вложил 10000$, через два года получил 200000$. И это простейшая стратегия без управления капиталом. Смотрим, что получилось бы после начала торговли по сигналам этой стратегии:

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

Мошенники осознанно используют переподгонку под кривую для создания сверх прибыльных стратегий/советников, которые прекрасно работают на небольших участках истории. Доверчивые трейдеры, покупают или получают "в подарок за открытие счета" такие стратегии (советники), пробуют торговать с их помощью и теряют в итоге свои деньги.

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

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

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

Например, торговля по моделям для GBP/USD предполагает торговлю во время высокой и низкой волатильности на среднесрочных периодах. Для такой стратегии интервалами проверки будут несколько лет с разными фазами высокой, низкой и "кризисной" волатильностью. Причем в период "кризисной" волатильности от стратегии требуется не заработок, а отсутствие сделок. А вот для импульсной стратегии, которая будет рассчитана именно на "кризисную" волатильность, интервалом настройки будут несколько лет "кризисной" волатильности. Интервалом проверки будет год "кризисной" волатильности и вся остальная доступная история. На истории с низкой волатильностью импульсная стратегия не должна генерировать сделки или в худшем случае доходность стратегии должна быть в район нуля.

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

Во время выбора адекватных интервалов настройки и проверки, необходимо учитывать следующие факторы:
  1. Целевые рыночные фазы, под которые разрабатывается алгоритм стратегии.
  2. Рыночные фазы и периоды разной волатильности, которые могут встречаться на том или ином торгуемом активе.
  3. Достаточный объем качественной истории, позволяющий провести настройку параметров торговой стратегии.
Для примера оценки рыночных фаз, рассмотрим динамику GBP/USD. Потенциал трендов в разные периоды достаточно просто увидеть с помощью индикатора Gelium_Trend. Но кроме преобладающих трендов, надо обратить внимание на волатильность цен, так как от волатильности зависит потенциальная доходность, уровни стопов, возможность использования того или иного способа для открытия позиций. Например, во время кризиса [2009-2010] модели формировались крайне редко и лучшее, что можно было делать - это временно не торговать по моделям или входить в рынок редко по очень хорошим сигналам. Зато в эти периоды высокой волатильности прекрасно работали импульсные стратегии.

Для определения волатильности в качестве индикатора возьмем недельные диапазоны цен (красная диаграмма):

Фазы волатильности на рынке Forex.
Мы можем увидеть, что в 2008 году, в связи с кризисом, волатильность резко возросла и снизилась к началу 2010 года. Можно было бы предположить, что в 2010 году модели уже должны были бы хорошо работать, однако это не так. Волатильность в 2010 году все еще оставалась очень высокой и мы просто не видим этого на недельных диапазонах. Чтобы учесть колебания, происходившие внутри недельного бара, возьмем суммарное число движений за неделю (синяя диаграмма):

Фазы волатильности на рынке Forex.
Теперь видно, что в 2010 году волатильность оставалась "кризисной" и только в 2011 году рынки вернулись к своей "обычной" динамике цен, модели стали работать хорошо, а импульсные стратегии уменьшили свою доходность.

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

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

Итак, для GBP/USD можно выделить следующие основные фазы:
  • [2002-2004] и [2006-2007] - преобладали долгосрочные большие тренды.
  • [2000-2001] и [2004-2005] - преобладали среднесрочные тренды с периодами повышенной волатильности.
  • [2008-2010] - высокая "кризисная" волатильность.
  • [2011-201x] - волатильность снизилась и по мере взятия курсовых колебаний под контроль картеля ЦБ-6 через валютные свопы, продолжает постепенно снижаться.
Если рассматривать стратегию торговли по основным моделям, то в отношении GBP/USD при торговле среднесрочными моделями для нас будут актуальны следующие фазы:
  • Целевая история с нормальной волатильностью, во время которой модели хорошо работают.
  • Периоды воздержания от торговли с высокой "кризисной" волатильностью.
  • Периоды с низкой волатильностью последних лет, так как изменение динамики цен из-за действий картеля ЦБ-6 делает оптимальными другие значения параметров торговой стратегии.
Для торговли по моделям, для интервала проверки, можно использовать несколько интервалов с разными фазами рынка:
  • [2013-201x] - годы со снижающейся волатильностью.
  • [2009-2010] - годы с "кризисной" волатильностью.
  • [2000-2001] - относительно "устаревшая" история, которая полезна для проверки устойчивости стратегии.
Остальная история может использоваться для оптимизации параметров стратегии с последующей проверкой результатов на интервалах проверки.

Если рассматривать фазы GBP/USD в контексте других стратегий, то выбор интервалов настройки и проверки будет уже другим. Так для импульсной стратегии в качестве интервала настройки должны браться периоды с высокой и "кризисной" волатильностью. В такие периоды импульсные стратегии наиболее прибыльны. А вот для работы внутри диапазонов такие периоды губительны и для них в качестве интервалов настройки будут хороши годы с низкой волатильностью. Во время "кризисной" волатильности такие стратегии должны в худшем случае минимизировать убытки в районе нуля или воздерживаться от генерации торговых сигналов.

Для валют оправданно тестирование с использованием истории за период [2001-201x], так как принципиальных фундаментальных изменений на валютном рынке не было. А вот для рынка золота такой подход оптимальным уже не будет. Рассмотрим волатильность цен на золото:

Фазы волатильности на рынке Forex.
Можно выделить следующие фазы для рынка золота:
  • [2000-2007] - относительно низкая волатильность и малые объемы, связанные с отсутствием интереса к золоту со стороны инвесторов и рекламе золота банкирами как "пережитка прошлого".
  • [2008-2012] - использование золота как защитного актива из-за финансового кризиса и эмиссии валют.
  • [2013-201x] - вывод денег крупных фондов с рынка золота по договоренности с ФРС и первичными дилерами на фондовые рынки. На рынок пришли HFT-трейдеры.
Нет смысла использовать историю [2000-2007] годов в качестве целевой, так как HFT-трейдеры уже не уйдут с рынка и компьютерные технологии не вернутся на 10 лет в прошлое. Поэтому эта история хороша только для интервала проверки.

Исключать возможность повышения волатильности нельзя, так как QE-эмиссия продолжается. Возврат крупных инвесторов на рынок металлов, в случае обвала фондового рынка, так же возможен. Поэтому история [2008-201x] актуальна и для настройки, и для проверки.

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

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

Цель тренировки.

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

Например, мы настраиваем стратегию на интервале настройки в пять лет. Шестой год будет интервалом проверки. Какой критерий оптимизации стоит использовать в качестве целевого? Зададим максимальную прибыль, стратегия может быть в итоге настроена под один год, который даст огромную прибыль с убытками в остальные 4 года. Зададим в качестве цели максимальное число прибыльных сделок, получим 100% прибыльных сделок – всего три прибыльных сделки за все время. Зададим в качестве цели максимальную среднюю доходность, получим среднюю доходность в 30%, а при рассмотрении большого числа тестов выясним, что с меньшей стабильной доходностью в 20%, имея больший разброс доходностей, в итоге можно было взять несколько наборов параметров с общей отдачей больше 100% годовых.

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

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

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

Для получения избыточного числа тестов в качестве целевого критерия оптимизации можно использовать максимальную прибыль за все время интервала настройки. Однако TradeStation имеет ряд нестандартных целевых критериев оптимизации, которые так же могут использоваться в качестве целевых критериев:
  1. Robustness Index (индекс устойчивости) - индекс устойчивости является отношением градиента кривой прибыльности на интервале проверки (out-of-sample) к градиенту кривой прибыльности на интервале настройки (in-sample).

  2. Perfect Profit Correlation (совершенная корреляция прибыли) - вычисляет корреляцию фактической кривой прибыли по сравнению с "совершенной" кривой, как будто стратегия смогла купить по каждой минимальной цене и продать по каждой максимальной цене. Генетический оптимизатор будет стремиться найти параметры, которые позволят кривой прибыльности максимально соответствовать "совершенной" кривой.

  3. Pessimistic Return on Capital (пессимистический возврат на капитал) – целевая функция, которая представляет очень консервативное значение возврата на капитал (ROC).

  4. Expectancy – целевая функция, которая измеряет ожидаемую прибыль на доллар, которым рисковали во время сделки. Расчет базируется на методе Van K. Tharp.

  5. TradeStation Index - целевая функция, которая максимизирует чистую прибыль и число прибыльных сделок, минимизируя максимальную внутридневную просадку. Вычисляется по формуле Net Profit * NumWinTrades / AbsValue (Max. Intraday Drawdown).
Попробовав тот или иной целевой критерий можно по порядковому номеру оптимального теста в журнале итогов оптимизации определить, какой из целевых критериев позволяет наиболее быстро найти оптимальный набор параметров. Так же можно проводить несколько оптимизаций с разными целевыми критериями, чтобы в итоге из полученных наборов параметров выбрать лучшие. Для разных стратегий наибольшую скорость поиска могут обеспечивать разные целевые критерии. Поэтому выбор целевого критерия зависит от трейдера, который настраивает стратегию.

Алгоритмы настройки стратегии.

В конце 2016 года в этой статье очень подробно был рассмотрен алгоритм настройки стратегии, который можно назвать алгоритмом расширения интервала настройки. Сейчас я считаю, что этот алгоритм не оптимален, поэтому подробное его описание из статьи убрал. Кратко алгоритм заключается в следующем:
  1. Берем начальный интервал настройки. Например, три года или больше. Интервалом проверки будут следующие после трёх лет два года.

  2. На интервале настройки оптимизируем стратегию с выгрузкой её показателей в Excel.

  3. Анализируем в Excel различные показатели стратегии, без просмотра итогов работы стратегии на интервале проверки и отбираем лучшие тесты.

  4. Проверяем результат отбора лучших тестов:
    • Сохраняется ли стабильная прибыль на интервале проверки? Если нет, то были ли тесты со стабильной доходностью?

    • Какие параметры стратегии позволяют найти тесты с лучшими показателями доходности и стабильности?

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

    • В каких диапазонах изменения параметров не оказывают значительное влияние на результат стратегии?
  5. Анализ сделок лучших тестов на графике с целью поиска недочётов алгоритма или возможности улучшения базового алгоритма.

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

  7. Проверка результатов тюнинга по схеме из пунктов 2-6. Увеличение интервала настройки на один год и переход к пункту 2 до тех пор, пока есть новая история для расширения интервала настройки с сохранением интервала проверки в 1-2 года.
Предложенный выше алгоритм позволяет очень хорошо изучить работу стратегии и влияние параметров на её показатели, но обладает несколькими очень существенными минусами:
  1. Тюнинг стратегии с включением предпоследнего года или с использованием всей доступной истории может привести к выбору оптимальных параметров, которые будут оптимальны на истории, но во время реальной истории отдача от стратегии существенно снизится.

  2. Расчёты по приведённому алгоритму требуют очень много времени.
Как показывает мой личный опыт, времязатраты на столь сложный алгоритм настройки неоправданно высоки. На мой взгляд, гораздо эффективнее иметь больше стратегий с меньшей возможной отдачей для создания диверсифицированного портфеля, чем иметь пару стратегий, «прокаченных» по полной программе. Поэтому я в последнее время использую следующий алгоритм для настройки стратегии:
  1. На всей истории отбирается целевой рыночный контекст, на котором стратегия должна приносить прибыль. Например, посткризисная история [2011-2016] для интервала настройки. Интервалом проверки будет история [2017-2018]. Для некоторых стратегий интервалом проверки будет история и за период [2002-2010].

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

  3. Из результатов оптимизации отбирается 5-10 лучших тестов по доходности, уровню просадки, проценту прибыльных сделок для анализа:
    • Есть ли тесты со стабильной доходностью на интервале проверки? Если таких тестов нет, стратегия не пригодна для торговли.

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

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

Исполнение отложенных ордеров на истории котировок.

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

Чем более волатилен актив, чем чаще расширяются спреды, чем меньше расстояние между одновременно устанавливаемым стопом и лимитом, тем больше оснований для проверки результатов работы торговой стратегии на базе тиковой истории. Например, если для EUR цель ставится в районе 15 пунктов Fоrexite и стоп в районе 10 пунктов Fоrexite, тестирование на тиковой истории будет крайне полезно. Если же стоп ставится в размере 60 пунктов, а лимит отстоит от него на 360 пунктов, тестирование на тиковой истории будет менее актуально.

Для выбора минимального периода для расчета исполнения ордеров внутри бара необходимо учитывать не только расстояние между стопом и лимитом, но и волатильность актива, с которой связано исполнение с проскальзываниями. Например, с 2008 года волатильность золота резко возросла. Если ранее при расстояние в 100 пунктов Fоrexite между стопом и лимитом можно было проводить расчет на базе одноминутных баров, то после 2008 года проскальзывание в дилинговых центрах может составлять более 140 пунктов Fоrexite. В итоге при тестировании на одноминутных барах не будет учтено значительное реальное проскальзывание, которое легко может делать прибыльную стратегию убыточной.

Для примера можно взять работу на пробоях уровней поддержки/сопротивления для золота. Расчет на базе минутных баров, в течение каждого года на интервале [2009-2013], имел отличия от расчета на базе тиков. Причиной тому служили проскальзывания, которые не видны торговой платформе на минутных барах, так как они происходили внутри минутного бара.

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

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

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

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

Итоги расчетов 2016.

Расчеты не закончены, поэтому публикую актуальную на момент обновления статьи информацию. По мере проведения расчетов статья будет обновляться.
 
Пока наиболее критичны издержки из-за проскальзываний для стратегий, которые входят на пробоях значимых уровней поддержки/сопротивления. Текущие расчеты на базе тиковой истории Альпари дают следующие результаты:
  • Для EURUSD и GBPUSD проскальзывания на разных типах ECN-счетов незначительны. Для расчетов вполне достаточно минутной истории.
  • Для золота проскальзывания составляют достаточно значительный объем. Я увеличиваю издержки на каждую сделку на 0.500 пунктов (три знака после точки). Такой объем издержек позволяет получить адекватные итоги во время расчетов без использования тиковой базы.

Итоги расчетов 2013.

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






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

Пример, разрыв на новостях в ECN-платформе Dukascopy:


И аналогичный момент на фьючерсе:


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

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

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

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

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

Условия тестирования:
  • Оптимизации стратегии на 30 минутных барах без учета исполнения на базе минутных баров и тиковой истории.
  • Спред и свопы не учитываются, чтобы видеть, как влияют проскальзывания на результат работы стратегии.
  • Интервал настройки [2011-2012]. Интервал проверки 2013.
  • Объем сделки 1 контракт. Стоимость одного пункта 1$.
Результат оптимизации:


Те же настройки, но с учетом исполнения на базе минутных баров:


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

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

07.01.2011 16:30   OrderBuy 1371.4 EntryPrice 1372.7 Slippage: -1.3
13.01.2011 08:00  OrderSell 1385.5 EntryPrice 1385.3 Slippage: -0.2
17.01.2011 17:30  OrderSell 1359.7 EntryPrice 1359.5 Slippage: -0.2
24.01.2011 00:30   OrderBuy 1343.3 EntryPrice 1343.7 Slippage: -0.4
24.01.2011 08:30  OrderSell 1350.5 EntryPrice 1350.3 Slippage: -0.2
26.01.2011 00:30  OrderSell 1331.7 EntryPrice 1327.4 Slippage: -4.3
31.01.2011 05:30  OrderSell 1336.2 EntryPrice 1336.0 Slippage: -0.2
09.02.2011 00:30  OrderSell 1360.6 EntryPrice 1356.2 Slippage: -4.4
11.02.2011 01:30   OrderBuy 1364.9 EntryPrice 1365.1 Slippage: -0.2
11.02.2011 06:30  OrderSell 1360.8 EntryPrice 1360.5 Slippage: -0.3
18.03.2011 10:30  OrderSell 1411.4 EntryPrice 1410.7 Slippage: -0.7
20.03.2011 23:30   OrderBuy 1423.6 EntryPrice 1424.4 Slippage: -0.8
30.03.2011 06:00  OrderSell 1417.0 EntryPrice 1416.4 Slippage: -0.6
01.04.2011 17:00  OrderSell 1426.7 EntryPrice 1421.1 Slippage: -5.6
12.04.2011 18:30  OrderSell 1457.5 EntryPrice 1449.7 Slippage: -7.8
14.04.2011 10:00   OrderBuy 1462.0 EntryPrice 1463.1 Slippage: -1.1
14.04.2011 14:00  OrderSell 1457.7 EntryPrice 1455.8 Slippage: -1.9
18.04.2011 17:30   OrderBuy 1486.7 EntryPrice 1492.0 Slippage: -5.3
19.04.2011 07:30  OrderSell 1489.5 EntryPrice 1488.7 Slippage: -0.8
21.04.2011 05:30   OrderBuy 1505.3 EntryPrice 1506.7 Slippage: -1.4
27.04.2011 02:30   OrderBuy 1506.5 EntryPrice 1507.1 Slippage: -0.6
29.04.2011 14:00   OrderBuy 1535.8 EntryPrice 1536.4 Slippage: -0.6
02.05.2011 03:30  OrderSell 1554.1 EntryPrice 1545.8 Slippage: -8.3
05.05.2011 08:30   OrderBuy 1519.7 EntryPrice 1519.5 Slippage: 0.2
05.05.2011 12:00  OrderSell 1517.4 EntryPrice 1515.1 Slippage: -2.3
12.05.2011 02:30  OrderSell 1501.1 EntryPrice 1501.5 Slippage: 0.4
20.05.2011 19:30   OrderBuy 1504.2 EntryPrice 1511.2 Slippage: -7.0
03.06.2011 17:00   OrderBuy 1534.9 EntryPrice 1541.5 Slippage: -6.6
15.06.2011 18:00   OrderBuy 1526.3 EntryPrice 1529.8 Slippage: -3.5
28.06.2011 12:00   OrderBuy 1502.2 EntryPrice 1502.6 Slippage: -0.4
08.07.2011 17:00   OrderBuy 1533.0 EntryPrice 1542.3 Slippage: -9.3
12.07.2011 19:30   OrderBuy 1552.6 EntryPrice 1553.9 Slippage: -1.3
13.07.2011 06:00  OrderSell 1566.0 EntryPrice 1565.1 Slippage: -0.9
14.07.2011 13:30   OrderBuy 1589.9 EntryPrice 1592.3 Slippage: -2.4
19.07.2011 13:00  OrderSell 1605.2 EntryPrice 1604.2 Slippage: -1.0
20.07.2011 19:30   OrderBuy 1592.1 EntryPrice 1595.1 Slippage: -3.0
08.08.2011 02:30   OrderBuy 1669.5 EntryPrice 1687.7 Slippage: -18.2
09.08.2011 18:00  OrderSell 1737.9 EntryPrice 1731.0 Slippage: -6.9
16.08.2011 18:30   OrderBuy 1782.2 EntryPrice 1783.0 Slippage: -0.8
17.08.2011 16:00  OrderSell 1789.8 EntryPrice 1785.6 Slippage: -4.2
22.08.2011 03:00   OrderBuy 1872.4 EntryPrice 1875.0 Slippage: -2.6
24.08.2011 14:30  OrderSell 1845.9 EntryPrice 1845.7 Slippage: -0.2
25.08.2011 21:00   OrderBuy 1756.9 EntryPrice 1757.7 Slippage: -0.8
01.09.2011 05:00  OrderSell 1824.1 EntryPrice 1823.9 Slippage: -0.2
16.09.2011 15:00   OrderBuy 1779.9 EntryPrice 1787.0 Slippage: -7.1
21.09.2011 23:00  OrderSell 1784.9 EntryPrice 1783.1 Slippage: -1.8
26.09.2011 15:00   OrderBuy 1621.0 EntryPrice 1625.5 Slippage: -4.5
29.09.2011 10:00   OrderBuy 1623.4 EntryPrice 1623.9 Slippage: -0.5
25.10.2011 10:00   OrderBuy 1658.5 EntryPrice 1658.9 Slippage: -0.4
28.10.2011 07:00  OrderSell 1745.3 EntryPrice 1744.0 Slippage: -1.3
02.11.2011 12:30  OrderSell 1727.8 EntryPrice 1726.5 Slippage: -1.3
11.11.2011 01:30   OrderBuy 1762.1 EntryPrice 1794.3 Slippage: -32.2
28.11.2011 17:00  OrderSell 1712.1 EntryPrice 1711.6 Slippage: -0.5
30.11.2011 14:30   OrderBuy 1724.0 EntryPrice 1724.2 Slippage: -0.2
08.12.2011 15:30  OrderSell 1735.9 EntryPrice 1735.6 Slippage: -0.3
15.12.2011 15:00  OrderSell 1586.2 EntryPrice 1585.9 Slippage: -0.3
28.12.2011 15:00   OrderBuy 1591.9 EntryPrice 1592.4 Slippage: -0.5
18.01.2012 08:30   OrderBuy 1658.2 EntryPrice 1658.5 Slippage: -0.3
18.01.2012 19:00   OrderBuy 1659.0 EntryPrice 1659.4 Slippage: -0.4
25.01.2012 19:00   OrderBuy 1666.5 EntryPrice 1666.7 Slippage: -0.2
09.02.2012 15:30   OrderBuy 1740.4 EntryPrice 1741.1 Slippage: -0.7
12.03.2012 06:00  OrderSell 1706.6 EntryPrice 1706.2 Slippage: -0.4
16.03.2012 21:00   OrderBuy 1659.8 EntryPrice 1660.0 Slippage: -0.2
21.03.2012 02:00   OrderBuy 1654.5 EntryPrice 1654.7 Slippage: -0.2
22.03.2012 22:00   OrderBuy 1646.5 EntryPrice 1647.1 Slippage: -0.6
26.03.2012 16:30   OrderBuy 1668.5 EntryPrice 1679.2 Slippage: -10.7
28.03.2012 02:30  OrderSell 1679.8 EntryPrice 1679.6 Slippage: -0.2
27.04.2012 17:00   OrderBuy 1659.3 EntryPrice 1664.3 Slippage: -5.0
22.05.2012 05:30  OrderSell 1591.9 EntryPrice 1591.6 Slippage: -0.3
06.06.2012 05:30   OrderBuy 1625.4 EntryPrice 1625.6 Slippage: -0.2
19.06.2012 17:00  OrderSell 1629.0 EntryPrice 1627.5 Slippage: -1.5
22.06.2012 18:30  OrderSell 1564.3 EntryPrice 1563.7 Slippage: -0.6
25.06.2012 12:00  OrderSell 1570.5 EntryPrice 1569.3 Slippage: -1.2
29.06.2012 10:30   OrderBuy 1568.9 EntryPrice 1570.4 Slippage: -1.5
03.07.2012 08:30   OrderBuy 1603.3 EntryPrice 1604.3 Slippage: -1.0
10.07.2012 05:30  OrderSell 1585.9 EntryPrice 1585.4 Slippage: -0.5
10.07.2012 14:00   OrderBuy 1592.7 EntryPrice 1594.1 Slippage: -1.4
11.07.2012 18:30   OrderBuy 1579.4 EntryPrice 1579.9 Slippage: -0.5
23.07.2012 20:00   OrderBuy 1577.2 EntryPrice 1577.7 Slippage: -0.5
03.08.2012 17:00  OrderSell 1591.9 EntryPrice 1588.6 Slippage: -3.3
16.08.2012 05:00   OrderBuy 1605.0 EntryPrice 1605.4 Slippage: -0.4
16.08.2012 08:30  OrderSell 1604.2 EntryPrice 1603.7 Slippage: -0.5
20.08.2012 19:30   OrderBuy 1618.6 EntryPrice 1620.0 Slippage: -1.4
24.08.2012 19:30   OrderBuy 1671.2 EntryPrice 1671.5 Slippage: -0.3
30.08.2012 19:00  OrderSell 1656.7 EntryPrice 1653.1 Slippage: -3.6
31.08.2012 17:00   OrderBuy 1662.4 EntryPrice 1662.8 Slippage: -0.4
06.09.2012 16:30  OrderSell 1701.9 EntryPrice 1701.0 Slippage: -0.9
01.10.2012 17:00   OrderBuy 1774.2 EntryPrice 1784.1 Slippage: -9.9
25.10.2012 20:00  OrderSell 1713.6 EntryPrice 1712.3 Slippage: -1.3
26.10.2012 17:30   OrderBuy 1713.2 EntryPrice 1714.9 Slippage: -1.7
28.10.2012 23:30  OrderSell 1711.3 EntryPrice 1710.9 Slippage: -0.4
05.11.2012 08:30   OrderBuy 1680.0 EntryPrice 1680.3 Slippage: -0.3
07.11.2012 04:00   OrderBuy 1720.6 EntryPrice 1721.0 Slippage: -0.4
13.11.2012 17:00   OrderBuy 1731.1 EntryPrice 1731.8 Slippage: -0.7
03.12.2012 15:30  OrderSell 1714.6 EntryPrice 1714.4 Slippage: -0.2
18.12.2012 12:30  OrderSell 1697.9 EntryPrice 1697.5 Slippage: -0.4
20.12.2012 15:00  OrderSell 1665.0 EntryPrice 1664.8 Slippage: -0.2
22.01.2013 15:30  OrderSell 1688.1 EntryPrice 1687.8 Slippage: -0.3
30.01.2013 15:00   OrderBuy 1668.6 EntryPrice 1670.0 Slippage: -1.4
01.02.2013 16:30  OrderSell 1662.8 EntryPrice 1662.3 Slippage: -0.5
07.02.2013 08:00  OrderSell 1678.5 EntryPrice 1677.6 Slippage: -0.9
13.02.2013 15:00   OrderBuy 1652.8 EntryPrice 1653.1 Slippage: -0.3
14.02.2013 15:00  OrderSell 1641.5 EntryPrice 1641.2 Slippage: -0.3
21.02.2013 13:00   OrderBuy 1571.9 EntryPrice 1572.2 Slippage: -0.3
21.03.2013 14:00   OrderBuy 1610.4 EntryPrice 1611.5 Slippage: -1.1
22.03.2013 13:00  OrderSell 1608.5 EntryPrice 1608.2 Slippage: -0.3
27.03.2013 15:30   OrderBuy 1606.6 EntryPrice 1607.0 Slippage: -0.4
11.04.2013 18:30   OrderBuy 1565.3 EntryPrice 1565.5 Slippage: -0.2
24.04.2013 12:00  OrderSell 1425.5 EntryPrice 1424.8 Slippage: -0.7
26.04.2013 20:00  OrderSell 1467.9 EntryPrice 1453.9 Slippage: -14.0
16.05.2013 18:30   OrderBuy 1383.8 EntryPrice 1386.3 Slippage: -2.5
21.05.2013 13:30  OrderSell 1384.3 EntryPrice 1381.0 Slippage: -3.3
22.05.2013 19:00  OrderSell 1378.8 EntryPrice 1372.2 Slippage: -6.6
24.05.2013 14:00  OrderSell 1388.1 EntryPrice 1386.0 Slippage: -2.1
14.06.2013 17:00   OrderBuy 1385.8 EntryPrice 1388.9 Slippage: -3.1
25.06.2013 18:30  OrderSell 1279.2 EntryPrice 1277.5 Slippage: -1.7
17.07.2013 17:00   OrderBuy 1295.7 EntryPrice 1295.9 Slippage: -0.2
19.07.2013 07:30   OrderBuy 1289.5 EntryPrice 1290.8 Slippage: -1.3
31.07.2013 06:00   OrderBuy 1331.1 EntryPrice 1332.4 Slippage: -1.3
05.08.2013 10:30  OrderSell 1315.6 EntryPrice 1315.4 Slippage: -0.2
14.08.2013 18:30   OrderBuy 1327.3 EntryPrice 1333.7 Slippage: -6.4
27.08.2013 22:30  OrderSell 1416.6 EntryPrice 1415.8 Slippage: -0.8
30.08.2013 21:30  OrderSell 1396.5 EntryPrice 1395.8 Slippage: -0.7
05.09.2013 14:30   OrderBuy 1393.4 EntryPrice 1396.1 Slippage: -2.7
18.09.2013 22:30   OrderBuy 1320.2 EntryPrice 1322.4 Slippage: -2.2

Результат работы стратегии:


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

Сравним полученные ранее результаты с результатом оптимизации, сделанной изначально с учетом тиковой истории:


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

Далее рассмотрим результат настройки стратегии для золота на базе тиковой истории FxOpen.

Условия тестирования:
  • Оптимизации стратегии на 30 минутных барах без учета исполнения на базе минутных баров и тиковой истории.
  • Спред и свопы не учитываются, чтобы видеть, как влияют проскальзывания на результат работы стратегии.
  • Интервал настройки 2012 год. Интервал проверки 2013 год.
  • Объем сделки 1 контракт. Стоимость одного пункта 1$.
Результат оптимизации:


Те же настройки, но с учетом исполнения на базе минутных баров:


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


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

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

Результат работы по моделям на базе истории Dukascopy без учета тиков:


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


Результат на базе истории FxOpen без учета тиков:


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


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

Чтобы сравнить влияние уровня ликвидности, произведем настройку этой же стратегии для EUR, на базе данных Dukascopy, со следующими начальными условиями тестирования:
  • Оптимизации стратегии на 30 минутных барах без учета исполнения на базе минутных баров и тиковой истории.
  • Спред и свопы не учитываются, чтобы видеть, как влияют проскальзывания на результат работы стратегии.
  • Интервал настройки [2011-2012]. Интервал проверки 2013.
  • Объем сделки 1 контракт. Стоимость одного пункта 1$.
Результат оптимизации:


Проскальзывания в 165 пунктов учтены на базе 30-минутных баров.

Те же настройки, но с учетом исполнения на базе минутных баров:


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


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

Выводы.

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

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

Настройка платформ.

Для задания периода расчета исполнения ордеров внутри бара в TradeStation надо сделать следующее:
  1. Добавить стратегию на график.
  2. Открыть окно со списком установленных на график стратегий через контекстное меню «Формат стратегий» или главное меню Формат / Стратегии.
  3. Нажать кнопку «Свойства для всех».
  4. Включить галочку «Исполнение внутри бара». Выбрать режим Тики или Интрадэй. Указать период бара:

Для задания периода расчета исполнения ордеров внутри бара в MultiCharts надо сделать следующее:
  1. Добавить стратегию на график.
  2. Открыть окно со списком установленных на график стратегий через контекстное меню «Format Signals» или главное меню Format / Signals.
  3. Нажать кнопку «Properies».
  4. Включить галочку «Use Bar Magnifier». Выбрать режим Tick или Intra-day. Указать период бара:


    Обратите внимание на параметры "Use for Ask series data" и "Use for Bid series data". Использование этих параметров может позволить более точно производить учет спредов средствами самой платформы, а не за счет учета спреда при расчете уровня риска.
Для задания периода расчета исполнения ордеров внутри бара в ProSuite надо сделать следующее:
  1. Добавить стратегию на график.
  2. Открыть окно со списком установленных на график стратегий через контекстное меню «Format Analysis Techniques» или главное меню Format / «Analysis Techniques».
  3. Нажать кнопку «Format».
  4. Включить галочку «Strategy testing resolutions». Выбрать режим Tick или Minute. Указать период бара:

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

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

{BarEndTime:dd/MM/yyyy},{BarEndTime:HHmm},{Open},{High},{Low},{Close}

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

Произвести расчет на базе тиков позволяет ProSuite, TradeStation 9, MultiCharts 8. Однако не все так гладко, как хотелось бы...

Скачиваем историю. Генерируем текстовый файл вот в таком формате:

Date,Time,C
02.01.2013,00:00:00,1674.6
02.01.2013,00:00:00,1674.5
02.01.2013,00:00:00,1674.4

Файл размером более 1 Gb TradeStation 9.1 полностью открыть не может, заканчивается память. С MultiCharts 32 bit ситуация аналогичная. Протестировать работу стратегии получается на интервале чуть более года. Можно конечно провести тестирование отдельно по годам, но это слишком трудоемко. Работу с GlobalServer я не проверял, так как код стратегий с этой платформой не совместим. Не думаю, что с ProSuite ситуация будет кардинально лучшей.

Файл размером до 4 Gb можно открыть в MultiCharts 64 bit. Однако 4-х часовой график на базе тикового файла размером 1023 Gb открывается 25 минут. На базе минутных баров, с использованием 4 ядер процессора, 100 тестов считаются 2 минуты 30 секунд. На базе тиков те же 100 тестов выполняются 26 минут. То есть, более чем в 10 раз медленнее. Ни о каких расчетах с зоной поиска более миллиарда вариантов и выполнением сотен тысяч или миллионов тестов мечтать не приходится.

Из-за того, что MultiCharts 8.0 build 5620 не правильно исполняет ордера при тестировании на барах с большим интервалом, используя для исполнения ордеров одноминутную историю, от его использования для расчетов пришлось отказаться. Многократная перепроверка и проведение таких же тестов в TradeStation однозначно свидетельствовала об ошибке в MultiCharts. В более новых версиях MultiCharts проверку не делал. Возможно, в них эта проблема устранена.

Поскольку MultiCharts сошел с дистанции, для вычислений остается TradeStation. График на базе тиков за 9 месяцев 2013 года, с исполнением ордеров на базе тиков, открывается 1:10 (далее - минута:секунды). Расчет 71 теста, на одном ядре, длится 5:18. Если брать историю за период [2007-2013], расчет мог бы длиться примерно 48 минут. MultiCharts на одном ядре потратил бы на это более полутора часов.

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

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

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

Теперь проводим расчет параметров стопа с исполнением ордеров на базе 1, 5, 10, 30-минутных баров, на графике 240 минут за период [2007-2013] с и без использования информации из тиковой базы. Расчет 71 теста без использования тиковой базы длился 6:19. C использованием тиковой базы, расчет длился на 41 секунду дольше, 7 минут. Из этих 41 секунды 4 секунды выполнялись 42059 запросов тиковой цены из базы, 37 секунд ушли на передачу и обработку этих данных в коде МТС. В итоге расчет на базе минутных баров с использованием цены тиков на 99.99% совпадает с расчетом на базе тиков и тратится на это 7 минут одного ядра процессора. При использовании одного ядра MultiCharts на это потратил бы более полутора часов. А в TradeStation такой расчет длился бы более 45 минут. То, что разработчики платформ не хотели утомлять себя лишними размышлениями, видно очень хорошо.

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

Оценка показателей стратегии.

Материал в разработке....

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






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

Пример. Разрыв на новостях в ECN-платформе Dukascopy:


И аналогичный момент на фьючерсе:


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

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

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

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

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

Условия тестирования:
  • Оптимизации стратегии на 30 минутных барах без учета исполнения на базе минутных баров и тиковой истории.
  • Спред и свопы не учитываются, чтобы видеть, как влияют проскальзывания на результат работы стратегии.
  • Интервал настройки [2011-2012]. Интервал проверки 2013.
  • Объем сделки 1 контракт. Стоимость одного пункта 1$.
Результат оптимизации:


Те же настройки, но с учетом исполнения на базе минутных баров:


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

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

07.01.2011 16:30   OrderBuy 1371.4 EntryPrice 1372.7 Slippage: -1.3
13.01.2011 08:00  OrderSell 1385.5 EntryPrice 1385.3 Slippage: -0.2
17.01.2011 17:30  OrderSell 1359.7 EntryPrice 1359.5 Slippage: -0.2
24.01.2011 00:30   OrderBuy 1343.3 EntryPrice 1343.7 Slippage: -0.4
24.01.2011 08:30  OrderSell 1350.5 EntryPrice 1350.3 Slippage: -0.2
26.01.2011 00:30  OrderSell 1331.7 EntryPrice 1327.4 Slippage: -4.3
31.01.2011 05:30  OrderSell 1336.2 EntryPrice 1336.0 Slippage: -0.2
09.02.2011 00:30  OrderSell 1360.6 EntryPrice 1356.2 Slippage: -4.4
11.02.2011 01:30   OrderBuy 1364.9 EntryPrice 1365.1 Slippage: -0.2
11.02.2011 06:30  OrderSell 1360.8 EntryPrice 1360.5 Slippage: -0.3
18.03.2011 10:30  OrderSell 1411.4 EntryPrice 1410.7 Slippage: -0.7
20.03.2011 23:30   OrderBuy 1423.6 EntryPrice 1424.4 Slippage: -0.8
30.03.2011 06:00  OrderSell 1417.0 EntryPrice 1416.4 Slippage: -0.6
01.04.2011 17:00  OrderSell 1426.7 EntryPrice 1421.1 Slippage: -5.6
12.04.2011 18:30  OrderSell 1457.5 EntryPrice 1449.7 Slippage: -7.8
14.04.2011 10:00   OrderBuy 1462.0 EntryPrice 1463.1 Slippage: -1.1
14.04.2011 14:00  OrderSell 1457.7 EntryPrice 1455.8 Slippage: -1.9
18.04.2011 17:30   OrderBuy 1486.7 EntryPrice 1492.0 Slippage: -5.3
19.04.2011 07:30  OrderSell 1489.5 EntryPrice 1488.7 Slippage: -0.8
21.04.2011 05:30   OrderBuy 1505.3 EntryPrice 1506.7 Slippage: -1.4
27.04.2011 02:30   OrderBuy 1506.5 EntryPrice 1507.1 Slippage: -0.6
29.04.2011 14:00   OrderBuy 1535.8 EntryPrice 1536.4 Slippage: -0.6
02.05.2011 03:30  OrderSell 1554.1 EntryPrice 1545.8 Slippage: -8.3
05.05.2011 08:30   OrderBuy 1519.7 EntryPrice 1519.5 Slippage: 0.2
05.05.2011 12:00  OrderSell 1517.4 EntryPrice 1515.1 Slippage: -2.3
12.05.2011 02:30  OrderSell 1501.1 EntryPrice 1501.5 Slippage: 0.4
20.05.2011 19:30   OrderBuy 1504.2 EntryPrice 1511.2 Slippage: -7.0
03.06.2011 17:00   OrderBuy 1534.9 EntryPrice 1541.5 Slippage: -6.6
15.06.2011 18:00   OrderBuy 1526.3 EntryPrice 1529.8 Slippage: -3.5
28.06.2011 12:00   OrderBuy 1502.2 EntryPrice 1502.6 Slippage: -0.4
08.07.2011 17:00   OrderBuy 1533.0 EntryPrice 1542.3 Slippage: -9.3
12.07.2011 19:30   OrderBuy 1552.6 EntryPrice 1553.9 Slippage: -1.3
13.07.2011 06:00  OrderSell 1566.0 EntryPrice 1565.1 Slippage: -0.9
14.07.2011 13:30   OrderBuy 1589.9 EntryPrice 1592.3 Slippage: -2.4
19.07.2011 13:00  OrderSell 1605.2 EntryPrice 1604.2 Slippage: -1.0
20.07.2011 19:30   OrderBuy 1592.1 EntryPrice 1595.1 Slippage: -3.0
08.08.2011 02:30   OrderBuy 1669.5 EntryPrice 1687.7 Slippage: -18.2
09.08.2011 18:00  OrderSell 1737.9 EntryPrice 1731.0 Slippage: -6.9
16.08.2011 18:30   OrderBuy 1782.2 EntryPrice 1783.0 Slippage: -0.8
17.08.2011 16:00  OrderSell 1789.8 EntryPrice 1785.6 Slippage: -4.2
22.08.2011 03:00   OrderBuy 1872.4 EntryPrice 1875.0 Slippage: -2.6
24.08.2011 14:30  OrderSell 1845.9 EntryPrice 1845.7 Slippage: -0.2
25.08.2011 21:00   OrderBuy 1756.9 EntryPrice 1757.7 Slippage: -0.8
01.09.2011 05:00  OrderSell 1824.1 EntryPrice 1823.9 Slippage: -0.2
16.09.2011 15:00   OrderBuy 1779.9 EntryPrice 1787.0 Slippage: -7.1
21.09.2011 23:00  OrderSell 1784.9 EntryPrice 1783.1 Slippage: -1.8
26.09.2011 15:00   OrderBuy 1621.0 EntryPrice 1625.5 Slippage: -4.5
29.09.2011 10:00   OrderBuy 1623.4 EntryPrice 1623.9 Slippage: -0.5
25.10.2011 10:00   OrderBuy 1658.5 EntryPrice 1658.9 Slippage: -0.4
28.10.2011 07:00  OrderSell 1745.3 EntryPrice 1744.0 Slippage: -1.3
02.11.2011 12:30  OrderSell 1727.8 EntryPrice 1726.5 Slippage: -1.3
11.11.2011 01:30   OrderBuy 1762.1 EntryPrice 1794.3 Slippage: -32.2
28.11.2011 17:00  OrderSell 1712.1 EntryPrice 1711.6 Slippage: -0.5
30.11.2011 14:30   OrderBuy 1724.0 EntryPrice 1724.2 Slippage: -0.2
08.12.2011 15:30  OrderSell 1735.9 EntryPrice 1735.6 Slippage: -0.3
15.12.2011 15:00  OrderSell 1586.2 EntryPrice 1585.9 Slippage: -0.3
28.12.2011 15:00   OrderBuy 1591.9 EntryPrice 1592.4 Slippage: -0.5
18.01.2012 08:30   OrderBuy 1658.2 EntryPrice 1658.5 Slippage: -0.3
18.01.2012 19:00   OrderBuy 1659.0 EntryPrice 1659.4 Slippage: -0.4
25.01.2012 19:00   OrderBuy 1666.5 EntryPrice 1666.7 Slippage: -0.2
09.02.2012 15:30   OrderBuy 1740.4 EntryPrice 1741.1 Slippage: -0.7
12.03.2012 06:00  OrderSell 1706.6 EntryPrice 1706.2 Slippage: -0.4
16.03.2012 21:00   OrderBuy 1659.8 EntryPrice 1660.0 Slippage: -0.2
21.03.2012 02:00   OrderBuy 1654.5 EntryPrice 1654.7 Slippage: -0.2
22.03.2012 22:00   OrderBuy 1646.5 EntryPrice 1647.1 Slippage: -0.6
26.03.2012 16:30   OrderBuy 1668.5 EntryPrice 1679.2 Slippage: -10.7
28.03.2012 02:30  OrderSell 1679.8 EntryPrice 1679.6 Slippage: -0.2
27.04.2012 17:00   OrderBuy 1659.3 EntryPrice 1664.3 Slippage: -5.0
22.05.2012 05:30  OrderSell 1591.9 EntryPrice 1591.6 Slippage: -0.3
06.06.2012 05:30   OrderBuy 1625.4 EntryPrice 1625.6 Slippage: -0.2
19.06.2012 17:00  OrderSell 1629.0 EntryPrice 1627.5 Slippage: -1.5
22.06.2012 18:30  OrderSell 1564.3 EntryPrice 1563.7 Slippage: -0.6
25.06.2012 12:00  OrderSell 1570.5 EntryPrice 1569.3 Slippage: -1.2
29.06.2012 10:30   OrderBuy 1568.9 EntryPrice 1570.4 Slippage: -1.5
03.07.2012 08:30   OrderBuy 1603.3 EntryPrice 1604.3 Slippage: -1.0
10.07.2012 05:30  OrderSell 1585.9 EntryPrice 1585.4 Slippage: -0.5
10.07.2012 14:00   OrderBuy 1592.7 EntryPrice 1594.1 Slippage: -1.4
11.07.2012 18:30   OrderBuy 1579.4 EntryPrice 1579.9 Slippage: -0.5
23.07.2012 20:00   OrderBuy 1577.2 EntryPrice 1577.7 Slippage: -0.5
03.08.2012 17:00  OrderSell 1591.9 EntryPrice 1588.6 Slippage: -3.3
16.08.2012 05:00   OrderBuy 1605.0 EntryPrice 1605.4 Slippage: -0.4
16.08.2012 08:30  OrderSell 1604.2 EntryPrice 1603.7 Slippage: -0.5
20.08.2012 19:30   OrderBuy 1618.6 EntryPrice 1620.0 Slippage: -1.4
24.08.2012 19:30   OrderBuy 1671.2 EntryPrice 1671.5 Slippage: -0.3
30.08.2012 19:00  OrderSell 1656.7 EntryPrice 1653.1 Slippage: -3.6
31.08.2012 17:00   OrderBuy 1662.4 EntryPrice 1662.8 Slippage: -0.4
06.09.2012 16:30  OrderSell 1701.9 EntryPrice 1701.0 Slippage: -0.9
01.10.2012 17:00   OrderBuy 1774.2 EntryPrice 1784.1 Slippage: -9.9
25.10.2012 20:00  OrderSell 1713.6 EntryPrice 1712.3 Slippage: -1.3
26.10.2012 17:30   OrderBuy 1713.2 EntryPrice 1714.9 Slippage: -1.7
28.10.2012 23:30  OrderSell 1711.3 EntryPrice 1710.9 Slippage: -0.4
05.11.2012 08:30   OrderBuy 1680.0 EntryPrice 1680.3 Slippage: -0.3
07.11.2012 04:00   OrderBuy 1720.6 EntryPrice 1721.0 Slippage: -0.4
13.11.2012 17:00   OrderBuy 1731.1 EntryPrice 1731.8 Slippage: -0.7
03.12.2012 15:30  OrderSell 1714.6 EntryPrice 1714.4 Slippage: -0.2
18.12.2012 12:30  OrderSell 1697.9 EntryPrice 1697.5 Slippage: -0.4
20.12.2012 15:00  OrderSell 1665.0 EntryPrice 1664.8 Slippage: -0.2
22.01.2013 15:30  OrderSell 1688.1 EntryPrice 1687.8 Slippage: -0.3
30.01.2013 15:00   OrderBuy 1668.6 EntryPrice 1670.0 Slippage: -1.4
01.02.2013 16:30  OrderSell 1662.8 EntryPrice 1662.3 Slippage: -0.5
07.02.2013 08:00  OrderSell 1678.5 EntryPrice 1677.6 Slippage: -0.9
13.02.2013 15:00   OrderBuy 1652.8 EntryPrice 1653.1 Slippage: -0.3
14.02.2013 15:00  OrderSell 1641.5 EntryPrice 1641.2 Slippage: -0.3
21.02.2013 13:00   OrderBuy 1571.9 EntryPrice 1572.2 Slippage: -0.3
21.03.2013 14:00   OrderBuy 1610.4 EntryPrice 1611.5 Slippage: -1.1
22.03.2013 13:00  OrderSell 1608.5 EntryPrice 1608.2 Slippage: -0.3
27.03.2013 15:30   OrderBuy 1606.6 EntryPrice 1607.0 Slippage: -0.4
11.04.2013 18:30   OrderBuy 1565.3 EntryPrice 1565.5 Slippage: -0.2
24.04.2013 12:00  OrderSell 1425.5 EntryPrice 1424.8 Slippage: -0.7
26.04.2013 20:00  OrderSell 1467.9 EntryPrice 1453.9 Slippage: -14.0
16.05.2013 18:30   OrderBuy 1383.8 EntryPrice 1386.3 Slippage: -2.5
21.05.2013 13:30  OrderSell 1384.3 EntryPrice 1381.0 Slippage: -3.3
22.05.2013 19:00  OrderSell 1378.8 EntryPrice 1372.2 Slippage: -6.6
24.05.2013 14:00  OrderSell 1388.1 EntryPrice 1386.0 Slippage: -2.1
14.06.2013 17:00   OrderBuy 1385.8 EntryPrice 1388.9 Slippage: -3.1
25.06.2013 18:30  OrderSell 1279.2 EntryPrice 1277.5 Slippage: -1.7
17.07.2013 17:00   OrderBuy 1295.7 EntryPrice 1295.9 Slippage: -0.2
19.07.2013 07:30   OrderBuy 1289.5 EntryPrice 1290.8 Slippage: -1.3
31.07.2013 06:00   OrderBuy 1331.1 EntryPrice 1332.4 Slippage: -1.3
05.08.2013 10:30  OrderSell 1315.6 EntryPrice 1315.4 Slippage: -0.2
14.08.2013 18:30   OrderBuy 1327.3 EntryPrice 1333.7 Slippage: -6.4
27.08.2013 22:30  OrderSell 1416.6 EntryPrice 1415.8 Slippage: -0.8
30.08.2013 21:30  OrderSell 1396.5 EntryPrice 1395.8 Slippage: -0.7
05.09.2013 14:30   OrderBuy 1393.4 EntryPrice 1396.1 Slippage: -2.7
18.09.2013 22:30   OrderBuy 1320.2 EntryPrice 1322.4 Slippage: -2.2

Результат работы стратегии:


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

Сравним полученные ранее результаты с результатом оптимизации, сделанной изначально с учетом тиковой истории:


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

Далее рассмотрим результат настройки стратегии для золота на базе тиковой истории FxOpen.

Условия тестирования:
  • Оптимизации стратегии на 30 минутных барах без учета исполнения на базе минутных баров и тиковой истории.
  • Спред и свопы не учитываются, чтобы видеть, как влияют проскальзывания на результат работы стратегии.
  • Интервал настройки 2012 год. Интервал проверки 2013 год.
  • Объем сделки 1 контракт. Стоимость одного пункта 1$.
Результат оптимизации:


Те же настройки, но с учетом исполнения на базе минутных баров:


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


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

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

Результат работы по моделям на базе истории Dukascopy без учета тиков:


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


Результат на базе истории FxOpen без учета тиков:


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


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

Чтобы сравнить влияние уровня ликвидности, произведем настройку этой же стратегии для EUR, на базе данных Dukascopy, со следующими начальными условиями тестирования:
  • Оптимизации стратегии на 30 минутных барах без учета исполнения на базе минутных баров и тиковой истории.
  • Спред и свопы не учитываются, чтобы видеть, как влияют проскальзывания на результат работы стратегии.
  • Интервал настройки [2011-2012]. Интервал проверки 2013.
  • Объем сделки 1 контракт. Стоимость одного пункта 1$.
Результат оптимизации:


Проскальзывания в 165 пунктов учтены на базе 30-минутных баров.

Те же настройки, но с учетом исполнения на базе минутных баров:


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


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

Выводы.

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

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




Учёт издержек.

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

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

Для этого в ProSuite надо установить значение поля Comission/Amount, в окне свойств стратегии, в папке Costs:

Использование параметра комиссии для учета спреда и свопов.

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

Использование параметра комиссии для учета спреда и свопов.
В поле "комиссия" указывается объем издержек деленный на 2. На картинке далее, для издержек в 10 пунктов, комиссия указывается равной 5:

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

Средний отрицательный своп = ([отрицательный своп] - положительный своп) * (время стратегии в рынке / среднее число сделок в год)

Рассмотрим пример для GBPUSD.

Отрицательный своп: -0.6 пункта Fоrexite. Положительный своп: +0.1 пункта. Стратегия находится в рынке: 30% времени – это 365 * 0.3 = 110 дней. Среднее число сделок в год: 40. Средний отрицательный своп = (0.6 – 0.1) * (110 / 40) = 0.5 * 2.75 = 1.375

Если спрэд для GBPUSD равен 5 пунктов Fоrexite, то в параметрах этой стратегии в качестве комиссии необходимо указать 5 + 1.375 = 6.375. Только в этом случае будет произведен правильный расчет прибыли.

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

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

Дополнительные издержки создают проскальзывания. Потери из-за проскальзываний подробно рассмотрены здесь. Учитывать проскальзывания можно за счет исполнения ордеров по ценам с проскальзыванием. Если такой возможности нет, то можно вычислить среднее проскальзывание и добавить его в издержки так же, как был добавлен ранее средний отрицательный своп. Такой подход хуже исполнения по ценам проскальзывания, но на порядки лучше полного отказа от учета проскальзываний. Например, для золота проскальзывания могут делать убыточной стратегию, которая приносит стабильно более 200% годовых пять лет подряд виртуально. А вот во время реальной торговли такая стратегия убыточна из-за проскальзываний. Убыточность стратегии видна и при тестировании на базе тиковой истории. К сожалению, не всегда и не у всех трейдеров есть возможность использовать тиковую историю. Поэтому если нет возможности настраивать стратегию с использованием тиковой истории, стоит заложить среднее проскальзывание как обязательные издержки для каждой сделки. Подход "готовься к худшему, надейся на лучшее" в трейдинге весьма полезен.






Для души и разума.

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

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




Перепечатка авторских материалов сайта без указания ссылки на
сайт Gelium.net запрещена.

Pavel Gelium 2000-2017 © All rights reserved.