Дмитрий Власов
Дмитрий Власов личный блог
30 мая 2012, 01:27

Найден "Святой Грааль", или ловушки при программировании торговых стратегий

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

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

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


Вот несколько основных правил:

При тестировании не получайте доступа к данным из будущего
Убедитесь в том, что Ваша стратегия не извлекает преимущество из той информации, которую Вы никогда не сможете получить в реальном мире.
Такого типа ошибки можно легко избежать если всегда получать доступ к значению ряда данных либо индикатора в главном цикле только на текущем (либо предыдущем) баре, не пытаясь получить доступ к данным на баре с номером (bar + 1) либо с любых других баров, которые находятся в будущем
Выполняйте торговые сигналы только на баре с номером (bar + 1)
Если Вы не хотите получать доступ к данным бара, который находится в будущем, Ваша стратегия должна обрабатывать текущий бар и создавать торговый сигнал для следующего бара, т.е. для бара с номером (bar + 1). Все стратегии, которые поставляются вместе с программой Wealth-Lab Developer являются хорошими примерами для внимательного изучения. Обязательно посмотрите также технику выходов, основанных на времени удержания позиции.
 
Придерживайтесь порядка выполнения приказов, применяющихся для торговых сигналов
В стратегиях, которые используют многочисленные виды приказов одновременно придерживайтесь следующего порядка выставления приказов:
1. Сигналы AtClose могут выполняются как на текущем баре,
2. Сигналы AtMarket
3. Сигналы AtStop (ограничивающие убытки), и наконец,
4. Сигналы AtLimit (берущие целевую прибыль)
 
С осторожностью используйте торговые сигналы, базирующийся на статусе активности позиции
Для избегания таких ошибок запомните главное правило: никогда не проверяйте статус активности позиции после выполнения любого торгового сигнала.

К примеру, в шаблоне кода однопозиционной стратегии, который изначально встроен в редактор стратегий вся логика торговли базируется на проверке является ли текущая позиция активной. Причем это происходит до выполнения торговых сигналов.
Искажения результатов из-за выбытия компаний
Вы должны иметь в виду, что возможны значительные искажения результатов тестирования даже в том случае, если код стратегии безупречен.
Однако здесь вклинивается другая проблема — при бектестинге стратегий Вы обычно используете данные о финансовых инструментах, которые относятся только к тем компаниям, которые выжили в суровых условиях рыночных реалий.
При этом финансовые инструменты, относящиеся к компаниям, которые больше не существуют или же больше не торгуются публично «выпадают» из Ваших тестов.
Более подробно об этих ловушках, включая пример кода таких «ущербных» стратегий можно прочитать здесь:.
 
22 Комментария
  • Андреев Андрей
    30 мая 2012, 03:27
    Дмитрий напишите пожалуйста в следующих постах, про еще двух главных врагов стратегий — проскальзывание и комиссию.
    • Kulikov Pavel
      30 мая 2012, 07:26
      Андреев Андрей, Если комиссия еще не враг особенно на фьючах и при редких входах. То проскальзываение — это тот фактор что иногда затавляет меня задуматься а возможно ли вообще зарабатывать?
      • Андреев Андрей
        30 мая 2012, 11:57
        Дмитрий Власов, почитал Ваши посты по ссылкам — Вы отлично потрудились, много интересного. По просьбе немного другое имел ввиду. Поясню, было бы классно добавить некоторую методу к исследованию стратегий т.з. проскальзывания (S) и комиссии (C). К примеру: 1. Делаете стратегию без S и С. 2. Включаете С постоянную с учетом оборота за день. 3. Плавно увеличиваете S и смотрите результаты — как вывод можно понять чувствительность к стратегии к объему и ликвидности. Например когда мы тестируем мы берем проскальзывание равное необходимому оьъему в стакан, так чтобы «ударив по рынку» мы взяли нужный объем.
        Ну и конечно было бы великолепно сделать посты по оценке стратегий.
  • ev`
    30 мая 2012, 08:14
    +10
  • ves2010
    30 мая 2012, 09:21
    угу… но есть еще 2 ловушки
    1) торговля лимитниками на открытии
    2) торговля стоп-лимитниками… т.к очень часто не наливают
    • ves2010
      30 мая 2012, 09:23
      3) купить-продать по цене открытия дня
      • ves2010
        30 мая 2012, 09:23
        4) тестировать на индексах
  • Sergey100
    30 мая 2012, 09:25
    +100
  • Bubellar
    30 мая 2012, 09:48
    Пардон, вопрос немного не по теме, программу стоит покупать, ну те она стоит своих денег и по какому принципу она подключается к данным?
      • Bubellar
        30 мая 2012, 10:31
        Дмитрий Власов, Ок, спасибо! Попробую 30-дней поюзать, хотя из 30 я думаю 15 только придется с прогой разбираться, если надумаю покупать с удовольствием воспользуюсь Вашим предложением по поводу скидочного купона.
  • Teddy
    30 мая 2012, 10:35
    забыли тег «реклама» добавить. пять ссылок на свой сайт в одном посту)))
    Доколе Тимофей будет спонсировать всех?
    • Андреев Андрей
      30 мая 2012, 11:58
      Teddy, портал таки не бесплатный в обслуживании :-) Жить то надо людям, главное грани разумного соблюдать.
        • Андреев Андрей
          30 мая 2012, 12:55
          Дмитрий Власов, не Вас имел ввиду! Смарт лаб надо содержать и единственный способ не зажимая пользователей это сделать — давать рекламу.
    • Андреев Андрей
      30 мая 2012, 12:00
      Teddy, и кстати говоря ссылки весьма полезны. Человек потрудился хорошо и ответственно относится к тому что пишет.
  • xTestero
    30 мая 2012, 10:42
    Такое впечатление что или фраза не закончена, или в ней ошибка
    «1. Сигналы AtClose могут выполняются как на текущем баре,»
    логично было видеть окнчание мфразы «так и ...»
  • firebot
    30 мая 2012, 12:16
    При тестировании не получайте доступа к данным из будущего.
    Спасибо КЭП, а я то не знал.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн