Финансовая лаборатория

Биржевая торговля и торговые роботы

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

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

Выходы по-времени

Как: выполнить выход из позиции ориентируясь на время?

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

Пример (как выполнить пример приведенного кода)...

int numberOfBars = 5;  // определяем максимальное количество баров удержания позиции

Position p = LastPosition;

if( bar + 1 - p.EntryBar >= numberOfBars )

   ExitAtMarket(bar + 1, p, "Выход по времени");

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

Пример (как выполнить пример приведенного кода)...


protected override void Execute()
{
   int numberOfBars = 5;

   for(int bar = 1; bar < Bars.Count; bar++)
   {
      if (IsLastPositionActive)
      {
         Position p = LastPosition;
         if( bar + 1 - p.EntryBar >= numberOfBars )
            ExitAtMarket(bar + 1, p);
      }

     else

          BuyAtLimit(bar + 1, Close[bar]* 0.97);
   }
}

Вот так выглядит график стратегии:

выходы по времени

Графи стратегии, использующей выходы по-времени

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

Вам может показаться, что можно упростить код примера, приведенного чуть выше с помощью немедленного определения номера того бара, на котором должен происходить выход из позиции. Однако, если Вы используете конструкцию (Bar + n) в том случае, если n>1 для торговых сигналов, то Велс Лаб действительно выполняет эти сделки немедленно во время бектестинга. В самоме деле, эти сделки будут выполнены только в будущем, но статус позиции поменяется на "активна" слишком рано. Очень часто это становится причиной того, что код, построенный по такой логике, начинает выполнять входы или выходы слишком рано (т.к. обычно такие действия базируются на статусе позиции) и именно из-за этого это является путем, который не совпадает с реальной торговлей.

Пример (как выполнить пример приведенного кода)...

protected override void Execute()
{
   int numberOfBars = 5;
   for(int bar = 1; bar < Bars.Count; bar++)
   {

      if (IsLastPositionActive)

      // ЭТО НЕПРАВИЛЬНЫЙ СПОСОБ КОДИРОВАНИЯ ВЫХОДОВ ПО ВРЕМЕНИ (ИЛИ ЛЮБЫХ ДРУГИХ ТОРГОВЫХ СИГНАЛОВ)

         ExitAtMarket(bar + numberOfBars, LastPosition);

      else

         BuyAtLimit(bar + 1, Close[bar]* 0.97);
   }
}

Прописывая в коде торговой стратегии правило, в соответствии с которым торговый сигнал должен выполняться на баре (bar + n), если n > 1 помните о том, что это всегда будет ошибочным решением как для бектестинга, так и для торговли потому что:

1. Wealth-Lab Developer выполняет торговые сигналы при бэктестинге немедленно. Выход из позиции на баре (bar + n), если n > 1 является причиной преждевременной смены статуса позиции из "active" на "not active". Это будет иметь разрушительный эффект для логики стратегии (смотри тему "Ловушки").

2. Невозможно торговать стратегии, которые генерируют Алерты на барах с номером (bar + n), где n > 1. В зависимости от стратегии результатом будет одна из двух ошибок: или алерт появится на n-1 бар раньше чем следовало, или же Вы будете получать алерты на выход из позиции для каждого из дней n.

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

Комментариев: 8

  1. [...] пост расскажет Вам о том, как планировать выходы, зависящие от времени удержани…. Не забывайте подписываться на новые посты по RSS. Если [...]

  2. Игорь пишет:

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

    • Игорь, приветствую. Такие тесты очень подробно описаны в моей любимой книге по трейдингу, которую написал Л. Вильямс “Долгосрочные секреты краткосрочной торговли”.

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

      • Игорь пишет:

        Спасибо, Дмитрий!

      • Игорь пишет:

        Приветствую Дмитрий, купил книгу Л. Вильямс “Долгосрочные секреты краткосрочной торговли”, решил, что ее стоит обязательно прочитать, раз уж умные люди считают ее своей любимой :) Не подскажешь в какой главе Вильямс разжевывает про тесты выходов по времени? Буду очень признателен. Спасибо

        • Игорь, читай подряд всю книгу – это очень интересно. А тесты выходов по времени он в главе №6 разжевывает “Истина где-то рядом” в разделе “Рынок-это не игра в орлянку”. У меня в издании на странице 98.

          • Игорь пишет:

            Действительно, классная книга, буду подряд читать, просто думал гляну быстренько, чтобы врубится с чем это едят, ан нет, чтиво захватывает, так что мой тебе низкий поклон за подсказку :) И за видео уроки по квику, спасибо большущее, а то, я тоже 7 лет на смарттрейде просидел и квик сначала не понравился, а оказывается, я просто его не умел готовить :)))

Оставить комментарий