Заметка

Применение Excel для построения торговых стратегий

  3  

Коллеги, в этой статье я хочу поделиться с вами своим личным опытом применения возможностей Excel для построения торговых стратегий.

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

В этой статье на примере данных о дневных свечах акций Газпрома покажу, как я описал с помощью инструментов Excel свою стратегию «Светофор».

Кратко о «Светофоре»

Для начала напомню суть системы.

Описание стратегии находится по адресу — http://robostroy.ru/community/article.aspx?id=350

Внешний вид графиков в терминале XTick в стратегии «Светофор» выглядит так:

Рис.1

Стратегия построена на двух индикаторах RSI – с периодом усреднения 7 и 14. Формула индикатора RSI также описана в упомянутой выше статье (см. ссылку).

С точки зрения описания стратегии в Excel я принял следующие условия:

Þ    В любой момент времени стратегия находится в позиции – Long или Short, причем попеременно. Позиция Cash отсутствует.

Þ    Сигнал Long возникает, когда и RSI (7), и RSI(14) на закрытии сессии имеют значения более 0,50. В этом случае система выдает сигнал Long. Но открытие позиции рассматривается исключительно на Open следующей сессии. Позиция удерживается до тех пор, пока система не выдаст сигнал Short. Само закрытие позиции происходит на Open свечи, следующей за свечой, в которой сформирован сигнал Short.

Þ    Сигнал Short возникает, когда и RSI (7), и RSI(14) на закрытии сессии имеют значения менее 0,50. В этом случае система выдает сигнал Short. Но открытие позиции рассматривается исключительно на Open следующей сессии. Позиция удерживается до тех пор, пока система не выдаст сигнал Long. Само закрытие позиции происходит на Open свечи, следующей за свечой, в которой сформирован сигнал Long.

Þ    Во всех прочих случаях происходит удержание ранее занятых позиций.

Поток данных

Я воспользовался архивом данных с сайта Финам (да простит меня Робострой за упоминание «коллеги по цеху») и скачал в виде текстового файла архив по дневным свечам Газпрома.

Рис.2.1

После несложной трансформации из формата «.txt» в формат «.xls» получился вот такой файл:

Рис.2.2

Если не стоит задача тестирования сигналов на глубоком историческом периоде, то можно и в ручном режиме сформировать архив – всего и надо то иметь данные о 14 последних свечах, включая текущую, причем данные необходимы только Open (как цена открытия позиции) и только Close (по ней идет расчет значений RSI).

Но вообще лучше, пожалуй, брать все-таки данные и об открытии/закрытии, и данные о максимуме/минимуме, поскольку Excel позволяет строить биржевые графики в виде свечей на основе данных Open-Low-High-Close:

Рис.3

Выделение из формата даты данных о годе, месяце и дате

Для удобства дальнейшего анализа потока данных из значения столбца <DATE> при помощи функций «ГОД», «МЕСЯЦ» и «ДЕНЬ» выделены данные соответственно по значению года, месяца и текущей даты. В дальнейшем по этим параметрам удобно фильтровать поток данных.

Рис.4

При большом потоке данных, например, можно фильтровать помесячно, или делать выборки за какие-то определенные числа.

Расчет значений RSI(7) и RSI(14)

Теперь перейдем к расчету собственно значений RSI.

Для этого нам необходим поток данных по цене CLOSE каждой свечи.

Формула RSI изложена в описании стратегии (см. ссылку в начале статьи), и я ее здесь не привожу. Единственно, что отмечу: способ усреднения (он применяется в расчете) выбран как простая скользящая (не экспоненциальная). 

Рис.5

Специально не даю расшифровку формул, зашитых в столбцы с расчетами, т.к. в них нет ничего сложного.

Ячейки со значениями индикаторов раскрашены не вручную, а с помощью функции «УСЛОВНОЕ ФОРМАТИРОВАНИЕ»:

  • если значение в ячейке больше 50%, то цвет – ЗЕЛЕНЫЙ
  • если значение в ячейке меньше 50%, то цвет – КРАСНЫЙ

Других цветов (желтый, синий и фиолетовый), принцип наложения которых описан в статье о стратегии, я в данном случае применять не стал, т.к. они носят чисто информативный характер и необязательны для принятия решений.

 

Задание критических значений RSI и визуализация сигналов

После того, как рассчитаны значения RSI(7) и RSI(14), можно приступить к формированию сигналов. Для этого укажем системе, по какому принципу формировать сообщения.

Критические значения RSI (20%, 50% и 80%) заданы в виде изменяемых переменных, чтобы трейдер мог самостоятельно их менять и подстраивать под свои потребности. Например, сигнал Long можно формировать при превышении значениями RSI уровня 60%. Причем для каждого RSI можно задать свое значение. Но я для себя выбрал 50% для формирования собственно сигналов и 20% и 80% для индикации перепроданности или перекупленности.

На экране это выглядит так:

Рис.6

Примечание:

в стратегии «Светофор», напомню, сигналы следуют один за другим попеременно «…Long-Short-Long-Short…»

В периоде с 02.10 по 23.10 включительно возникло два сигнала:

  1. Сессия 04.10 закрылась сигналом Short. До этого система рекомендовала «Держать ранее занятую позицию», то есть находиться в лонгах (с 10.08 от уровня 154,42 руб.). Значит, если следовать этим рекомендациям, то утром 05.10 закрываем лонги (фиксируем прибыль +3,08 руб. или +2% за 56 дней) и встаем в продажи по цене 157,50 руб.
  2. Сессия 10.10 закрылась сигналом Long. До этого система рекомендовала «Держать ранее занятую позицию», то есть находиться в шортах (с 05.10 от уровня 157,50 руб.). Значит, если следовать этим рекомендациям, то утром 11.10 закрываем шорты (фиксируем прибыль +2,70 руб. или +1,7% за 6 дней) и встаем в покупки по цене 154,80 руб.
  3. По состоянию на 18.45 мск 23.10.12 система продолжает показывать рекомендации «ПОКУПКА». В данном случае я интерпретирую это как удерживание позиции лонг от 11.10 либо наращивание покупок.

В столбец «ТЕКУЩЕЕ СОСТОЯНИЕ» рекомендации попадают из таблицы (см. ниже) при помощи функции «ВПР»:

Рис.7

            В зависимости от того, какие значения RSI сформированы в текущей свече, система определяет номер рекомендации в таблице и с помощью функции «ВПР» транслирует саму рекомендацию.

Определение критических значений цен для формирования сигналов

            Дополнительно к вышеперечисленному, для текущей свечи в опережающем режиме возможен расчет уровня цены CLOSE, при которой текущая позиция закрывается, и открывается противоположная позиция. То есть фактически это расчет уровня Stop-Loss на следующую сессию.

Поясню на примере:

Допустим, сейчас начало сессии 23 октября. По Газпрому система в покупках. Делая несложные манипуляции, вы можете определить для себя те уровни цен, при которых завтра утром 24 октября лонги надо закрыть и открыть шорты.

Ниже представлен скрин-сейв ваших действий:

Рис.8

Обычным ручным подбором определяются те уровни цен Close для текущей свечи, при которых система начнет «сомневаться» (вариант 2 – цена 150,58 руб.) или выдаст противоположный текущему сигнал (вариант 3 – цена 145,06 руб.).

Реестр сигналов по Газпрому с начала 2012 года

            В заключение обзора представлю реестр сигналов, которые выдала система, реализованная в Excel, за период с начала 2012 года на дневных свечах акций Газпрома.

Рис.9

Некоторая аналитика к реестру сигналов:

  1. Всего за период 9 сигналов, в том числе 5 сигналов short и 4 сигнала long.
  2. Средняя продолжительность удержания позиции 26 дней, в том числе 27 дней в лонгах и 25 дней в шортах. В среднем 1 сигнал в месяц.
  3. Общий результат по сигналам +39,72 руб, или +20% за 9 месяцев. В том числе +1,5% на сигналах лонг и +19% на сигналах шорт. Налицо полная несостоятельность бычьих потуг с начала года (4 сигнала в среднем по 25 дней каждый и всего +1,5% на весь поток).

И еще одна небольшая иллюстрация, взятая на основе построенной в Excel стратегии.

В течение 2012 года только однажды система выдала «ПЕРЕКУПЛЕННОСТЬ» (см. ниже)

Рис.10

Эта ситуация возникла 17 сентября при закрытии сессии на уровне 169,26 руб. Позднее ситуация развивалась так:

Рис.11

В течение сессии пятницы 14.09 рынок находился в стадии покупок, но не перекупленности. В понедельник 17.09 рынок вошел в стадию перекупленности и, начиная с 18.09, пошел на снижение.

Коллеги, за сим все и удачи!

Комментарии

Maxim_1983 — 25 октября 2012 г.

Добрый день vsozonov.
Мне кажется, у Вас не совсем верен расчет RSI.
Например посмотри RSI(14) за период с 02.10.2012 по 19.10.2012 ( как раз получается N=14).
Что мы имеем:
Первый ряд: 0, 0, 0, 2.66, 0, 0, 0, 0, 0, 0, +1.76, 2.16, 0, 0
Второй ряд: 1,6, 1.16, 1.73, 0, 0.17, 1.75, 1.85, 1.05, 1.89, 0.14, 0, 0, 1.14, 0.32

Разделив сумму членов этих рядов на 14 (длину ряда), получаем:
u=6,58/14=0.47;
d=12.8/14=0.91.

Заканчивая вычисления, получим:
RS=0.47/0.91=0.51
RSI=100 - (100/(1+0.51))=33.95,
А у Вас почему-то 65. Поправьте меня пож-ста, если я не прав. Но уменя получается так.
Спасибо.

0 +

vsozonov — 25 октября 2012 г.

я делю не на 14, а на количество НЕНУЛЕВЫХ значений. хотя может и вы тоже правы. попробую ваш вариант тоже прокачать

0 +

Maxim_1983 — 25 октября 2012 г.

Да просто в описании индикатора RSI стоит формула , где

U=среднее значение прироста цен закрытия за 14 дней и 7 дней;

D=среднее значение убыли цен закрытия за 14 дней и 7 дней;
А у Вас тогда получается, что если за 14 дней была всего одна растущая свеча - она и есть значение, т.е это не совсем среднее.

Вот из-за этого у меня возникает другая проблема при расчете RSI(7) . за период с 25,09 по 28.09 практиечски уходит в 0 (значения от 1,13 до 9,77), когда RSI(14 ) в диапозоне от 61 до 34

0 +

vsozonov — 25 октября 2012 г.

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

0 +

TheGuyFromWallStreet — 12 января 2013 г.

vsozonov, я конечно извиняюсь, но не смогли рассказать, как Вы рассчитали SMA(UP 14).

0 +

Написать комментарий

Чтобы написать комментарий, необходимо авторизоваться.

Написать администратору