Блог им. VDV

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

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

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

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


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

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

К примеру, в шаблоне кода однопозиционной стратегии, который изначально встроен в редактор стратегий вся логика торговли базируется на проверке является ли текущая позиция активной. Причем это происходит до выполнения торговых сигналов.
Искажения результатов из-за выбытия компаний
Вы должны иметь в виду, что возможны значительные искажения результатов тестирования даже в том случае, если код стратегии безупречен.
Однако здесь вклинивается другая проблема — при бектестинге стратегий Вы обычно используете данные о финансовых инструментах, которые относятся только к тем компаниям, которые выжили в суровых условиях рыночных реалий.
При этом финансовые инструменты, относящиеся к компаниям, которые больше не существуют или же больше не торгуются публично «выпадают» из Ваших тестов.
Более подробно об этих ловушках, включая пример кода таких «ущербных» стратегий можно прочитать здесь:.
 
★23
22 комментария
Дмитрий напишите пожалуйста в следующих постах, про еще двух главных врагов стратегий — проскальзывание и комиссию.
Андреев Андрей, Если комиссия еще не враг особенно на фьючах и при редких входах. То проскальзываение — это тот фактор что иногда затавляет меня задуматься а возможно ли вообще зарабатывать?
avatar
Андреев Андрей, я когда тестирую — стараюсь специально завышенную комиссию ставить 0,1% от объема позиции. Тогда при оптимизации выбираются такие параметры, которые приводят к меньшему количеству сделок.
Дмитрий Власов, почитал Ваши посты по ссылкам — Вы отлично потрудились, много интересного. По просьбе немного другое имел ввиду. Поясню, было бы классно добавить некоторую методу к исследованию стратегий т.з. проскальзывания (S) и комиссии (C). К примеру: 1. Делаете стратегию без S и С. 2. Включаете С постоянную с учетом оборота за день. 3. Плавно увеличиваете S и смотрите результаты — как вывод можно понять чувствительность к стратегии к объему и ликвидности. Например когда мы тестируем мы берем проскальзывание равное необходимому оьъему в стакан, так чтобы «ударив по рынку» мы взяли нужный объем.
Ну и конечно было бы великолепно сделать посты по оценке стратегий.
+10
avatar
угу… но есть еще 2 ловушки
1) торговля лимитниками на открытии
2) торговля стоп-лимитниками… т.к очень часто не наливают
avatar
3) купить-продать по цене открытия дня
avatar
4) тестировать на индексах
avatar
ves2010, да, с этим встречался. Поэтому данные для тестирования обычно готовлю специально (выбрасываю первую свечу), либо в коде программы прописываю правило игнорирования первой свечи при сравбатывании торговых сигналов.
+100
avatar
Пардон, вопрос немного не по теме, программу стоит покупать, ну те она стоит своих денег и по какому принципу она подключается к данным?
avatar
Bubellar, Прежде чем покупать можно 30 дней бесплатно потестировать, потом, если попросить, можно еще дней на 30 продлить тестовый период. Стоит относительно дорого 800 долларов первый год (затем каждый год 150 долларов). Кому нужно могу купон дать, котоырй 100 долларов скидку дает. К данным подключается через специальные адаптеры. Для лицензионных пользователей есть Finam — adapter. Можно самим сделать.
Дмитрий Власов, Ок, спасибо! Попробую 30-дней поюзать, хотя из 30 я думаю 15 только придется с прогой разбираться, если надумаю покупать с удовольствием воспользуюсь Вашим предложением по поводу скидочного купона.
avatar
забыли тег «реклама» добавить. пять ссылок на свой сайт в одном посту)))
Доколе Тимофей будет спонсировать всех?
avatar
Teddy, портал таки не бесплатный в обслуживании :-) Жить то надо людям, главное грани разумного соблюдать.
Андреев Андрей, к счастью, я давно уже обеспечил себя средствами на существование, которых вполне хватает и на жизнь и тем более на ведение портала. Но все равно приятно, когда к тебе в гости заходит большое количество людей, тем более тех, кто в теме. Своего рода спортивный интерес. Именно поэтому анонсирую свои статьи на Смарт-Лабе. Думаю, они хоть какой-то интерес для посетителей смарт-лаба тоже представляют.
Дмитрий Власов, не Вас имел ввиду! Смарт лаб надо содержать и единственный способ не зажимая пользователей это сделать — давать рекламу.
Teddy, и кстати говоря ссылки весьма полезны. Человек потрудился хорошо и ответственно относится к тому что пишет.
Такое впечатление что или фраза не закончена, или в ней ошибка
«1. Сигналы AtClose могут выполняются как на текущем баре,»
логично было видеть окнчание мфразы «так и ...»
avatar
При тестировании не получайте доступа к данным из будущего.
Спасибо КЭП, а я то не знал.
avatar
firebot, что поделать, в инструкции к WealthScript именно так написано.

теги блога Дмитрий Власов

....все тэги



UPDONW
Новый дизайн