Блог им. HOME
Одним из главных принципов построения эффективной Торговой Стратегии (ТС), на мой взгляд, является использование только «нужных» (релевантных вашей ТС) периодов активности.
Не нужно стараться захватить весь торговый период с 9-00 (предторги) утра и вечернюю сессию, если вы хотите торговать интрадей. Эти периоды вам не нужны, но вы вынуждены их учитывать, поскольку все индикаторы и осцилляторы, установленные в торговой системе (и, соответственно, в терминале) используют непрерывные ряды котировок. Ведь терминал (пример – QUIK) не имеет встроенных инструментов «обрезания» исходной базы, т.е. как только вы подписываете свой бот на получение данных командой
ds, error_desc = CreateDataSource(ClassCode, TickerCode, TimeFrame),
вы тем самым получаете «полный пакет» всех доступных данных.
Нужно понимать, что вам для торгов нужны не все данные, а только часть, релевантная вашему торговому периоду. Все остальные должны быть отброшены, но отброшены по-настоящему. Ведь, когда вы в параметрах окна «График по инструменту» устанавливаете фильтр «Отображать данные за период…», вы не обрезаете базу. В ваш бот эта база закачивается вся!
В самом деле, как при полной базе можно заставить RSI или ATR выдавать верные, с точки зрения вашей ТС, текущие параметры состояния рынка? Как на этих непрерывных данных можно строить именно внутридневную стратегию? Тем более, что даже эта ТС может быть, как минимум 2 видов: «чистая внутридневная» и совокупность «чистых внутридневных на протяжении более длительного суммарного периода торговли». Например, я использую именно совокупность внутридневных сессий, состоящих из чистых интрадеев, но объединенных одним временным рядом котировок.
В случае чистых интрадеев, я торгую только период 10-00…18-40, без учета ценовой статистики предыдущих дней и периодов. Просто вырезаю этот период и рассчитываю свои (не предлагаемые терминалом торговой системы) индикаторы, каждый из которых получает свое первое значение именно в 10-00 каждого дня и последнее – в 18-40 того же дня. На следующий день первым значением индикатора опять же становится первая котировка в 10-00 этого дня. Данных за предыдущие дни в индикаторе нет, и они не обсчитываются и не влияют на текущие значения текущего дня.
В случае использования, например, недельной совокупности интрадеев, мои индикаторы обрабатывают только нужные периоды с 10-00 до 18-40, а всё остальное отбрасывается еще на стадии подготовки данных на входе в бот.
Для этого я использую функцию сжатия базы, которая отсекает ненужные интервалы базы котировок и сжимает полученную базу, удалив пустые периоды. Происходит переиндексация базы, и она становится непрерывной, что и требуется для индикаторов.
Пример такой функции уплотнения:
Одна особенность этого подхода: все используемые вами индикаторы теперь нужно прописывать в виде процедур в теле бота в полном аналитическом виде.
Не у каждого есть время и силы на это дело.
Если прочтете мои посты, то, возможно, заметите, что я везде отрицаю возможности предсказаний движения цен.