Дмитрий Власов
Дмитрий Власов личный блог
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
    Дмитрий напишите пожалуйста в следующих постах, про еще двух главных врагов стратегий — проскальзывание и комиссию.
  • ev`
    30 мая 2012, 08:14
    +10
  • ves2010
    30 мая 2012, 09:21
    угу… но есть еще 2 ловушки
    1) торговля лимитниками на открытии
    2) торговля стоп-лимитниками… т.к очень часто не наливают
  • Sergey100
    30 мая 2012, 09:25
    +100

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

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