Проверка торговой идеи в Excel. Часть II: модель торговой системы на простом примере

Решил не откладывать в долгий ящик и, пока есть время, продолжить начатую вчера тему о проверке торговой идеи в Excel (см. Часть I: выгрузка ценовых данных из МТ).

Сегодня познакомимся с принципами построения торговой системы в таблицах и с основными формулами. Этого будет достаточно, чтобы реализовать простую торговую стратегию. Пример такой стратегии будет представлен на выходе. Любопытно, что стратегия эта на истории в 10 лет оказалась в целом даже профитной *улыбается*



Итак, приступим!

Первое, что нам понадобится, — идея. Простая торговая идея, которую мы и хотим проверить. Уверен, что многим из нас в самом начале приходили в голову одни и те же незамысловатые идеи навроде «если 2 подряд бара бычьих, то открываем покупку» Примерно такую идею мы и будем проверять. Даже более простую, но флетовую:

Простейшая торговая идея:
Если последняя свеча бычья — продаем; если медвежья — покупаем. Закрываем позицию на закрытии свечи.

Немного поясню. Нам важно, чтобы стратегия не зависела ни в коем случае от движений внутри бара. Это сводит вероятность ошибки тестирования к 0. Плюс в данном случае нам удасться обойтись без усложнений в виде выставления стопов и тейков, т.к. все стопы и тейки по времени. Хотя в экселе можно задавать и уровни стопов, но пока это запутает новичков.

Заметьте, система флетовая, а не трендовая! График трендовой сильно проигрывает, посмотреть можно здесь

Таймфрейм выберем D1. Я всегда стараюсь в экселе работать с дневками. Это очень удобный ТФ (при условии, конечно, что стратегия не требует учета движения внутри баров).

В 1-ой части мы как раз экспортировали именно дневные данные EURUSD. С ними и будем работать. Приведите исходную табличку в соответсвии с картинкой ниже (добавьте строчки и столбцы, где необходимо), если желаете, чтобы адреса ячеек в формулах оставались справедливыми для вашей таблицы.



Наша торговая идея подразумевает определение характера дневной свечи: бычья или медвежья. Этим и займемся первым делом.

Озаглавим новый столбец H как «Nature» (или «Свеча»; как вам удобнее). Помещаем курсор внутрь ячейки H6 (первая ячейка нового стобца) и пишем первую нашу формулу для определения типа свечи. Логика проста: если Close > Open, то White (бычья свеча), если Close < Open, то Black (медвежья свеча). Соответсвенно в нашей таблице в ячейке H6 формула будет иметь следующий вид:

=ЕСЛИ(F6>C6;"W";ЕСЛИ(F6<C6;"B";"WB"))

Останется протянуть формулу на столбец. Получаем такую таблицу:



Тип свечи вычислили. Переходим к следующему шагу — вычисляем результат каждой сделки, совершенной согласно торговой идеи. Напоминаю, что мы собрались покупать, если последняя свеча медвежья, и продавать — если бычья. Если у свечи нет тела (Close = Open), то сделку не совершаем (записываем в этот день результат «0»).

Заведем новый столбец I «Profit». Т.к. мы руководствуемся характером «вчерашней» свечи, то формулу пишем со второй строки столбца.
Логика формулы: если свеча вчера W (бычья), то для вычисления профита Open — Close; если свеча вчера B (медвежья), то Close — Open; если WB (без тела), то 0, т.е. не торгуем.
Т.о. в ячейке I7 имеем формулу:

=ЕСЛИ(H6="W";(C7-F7);ЕСЛИ(H6="B";(F7-C7);0))

Тогда результат у меня для I7 (у вас другой, в зависимости от того, с какого дня история загружена) получается 1,0737 — 1,0714 = -0,0023
Т.е. =-23 пункта. Но как получить результат именно в таком привычном виде, а не в долях? Конечно, умножить на постоянный множитель. Для четырехзнака EURUSD множитель = 10 000. Тогда формула принимает вид:

=ЕСЛИ(H6="W";(C7-F7)*10000;ЕСЛИ(H6="B";(F7-C7)*10000;0))

Теперь результат у меня для 4.10.99 = -23 пункта. Чего не хватает? Конечно, спреда! *улыбается*

Т.к. спред в разных ДЦ для разных ВП может различаться, то предлагаю вынести его в отдельную ячейку, чтобы мы могли удобно спредом управлять. Пусть это будет ячейка над заголовком стоблца профита «I4» (по привычке я выношу вспомогательные коэфиценты и параметры над заголовками соответсвующих столбцов, а в примечании к ячейке делаю пояснения). Укажем в ячейке I4 величину спреда. Сейчас для многих ДЦ спред EURUSD можно смело принять за 2 пункта. Осталось вычесть значение этой ячейки из результатов по сделке. Формула в I7 изменяется так:

=ЕСЛИ(H6="W";(C7-F7)*10000-I$4;ЕСЛИ(H6="B";(F7-C7)*10000-I$4;0))

Обратите внимание, мы вычитаем не просто I4, а I$4. Знак $ заставляет при протягивании формулы оставаться неизменным номер строки. В противном случае после протягивания в следующей строке у нас вычиталась бы ячейка I5, затем I6, I7 и т.д.


Протягиваем формулу на весь столбец I и получаем следующую таблицу:



Ну вот и выходим на финишную прямую! Размер прибыли по каждой сделке есть, осталось подвести баланс. Для этого создаем новый столбец J «Balance».
Баланс на заданный день, как вы понимаете, вычисляется просто — суммированием всех значений столбца «Profit» до текущего дня. Формула суммирования, которую нам надо написать в ячейку J7, очень простая и короткая:

=СУММ(I$6:I7)

Эта запись обозначает суммирование диапазона с одной указанной ячейки до другой. Опять же использован значок $ для закрепления в формуле точки отсчета (первого дня). Так после протягивания в ячейке, например, J1000 формула будет иметь вид "=СУММ(I$6:I1000)"

С балансом разобрались. Для пущей наглядности осталось построить график изменения баланса по дням. Для этого, удерживая Shift, нажмите на столбцы B и J, затем кликните на иконку созданию Диаграммы. В открывшемся окне выберите тип «График», вид оставьте первый. Разъяснения на картинке ниже.



Нажмите «Готово» и вы увидите график. Таблица целиком вместе с графиком будет иметь в итоге вид:



Как видите, буквально играючи, вооружившись самой простейшей идеей, нам удалось даже выйти в плюс по итогам торговли за 10 лет и заработать +2700 пунктов. Конечно, график далек от идеала, но теперь можно заняться и совершенствованием системы… Пожалуй, в следующий раз *улыбается*Спасибо за внимание! Удачи и профитов!

Обновление 12 мая 2010: В статье представлена система флэтовая. График трендовой гораздо хуже. Увидеть его можно в комментарии

Обновление 18 мая 2010: Система из статьи выделена в отдельную торговую систему под названием AntiTrend Dayli (ATD). В частности, после оптимизации получен такой график:

  • +7
  • Просмотров: 57875
  • 11 января 2010, 14:55
  • Kaur
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Следующая запись в моем блоге  
Соотношение стопов и тейков (подхватываю тему)
10 января 2010
22 января 2010

Комментарии (23)

+
0
Разрабатываешь системы разрабатываешь, читаешь аналитику всякую, а простые системы самые из нашего детства прибыльные! Зачот
Хотя я не любителя Эксэля. Даешь торговую систему на счетах! ))))))
avatar

  12  BetMaster Сообщений: 433

  • 11 января 2010, 15:24
+
+1
Kaur, очень быстро! И даже больше, чем я ожидал. Сейчас буду разбираться. Формулы выглядят более дружелюбно, чем программный код.
avatar

  4  hinin Сообщений: 88

  • 11 января 2010, 17:28
+
+1
Здравствуйте, Kaur. Вы пишите везде «протягиваем формулу», но как протягивание это делать?
avatar

  0  Svetik Сообщений: 20 - Светик

  • 11 января 2010, 19:17
комментарий был удален

+
+2
detc.usu.ru/assets/acomp0021/31.htm
Читайте абзац --Абсолютные и относительные ссылки-- про маркер автозаполнения
avatar

  13  Tor Сообщений: 447 - Роберт

  • 11 января 2010, 22:29
+
+2
Svetik, когда по ссылке Тора разберетесь и поймете, где находится маркер, то советую использовать его так — делаете двойной клик по маркеру и формула автоматически протягивается до самого низа. Условие для этого — слева должен вплотную примыкать столбец с данными; именно до окончания этого столбца и будет происходить автозаполнение по двойному щелчку.

Просто в нашем деле протягивать руками формулу может быть весьма неудобно. Например, в моем случае таблица имеет свыше 3000 строк, тянуть всякий раз и при каждом исправлении формулу процесс малопривлекательный ;) Потому освойте двойной клик.
avatar

  47  Kaur Автор Сообщений: 1327 - Руслан Каюмов

  • 12 января 2010, 08:46
+
+1
Ура, построил свою таблицу! Если спред сделать 0, то прибыль 8000 пунктов!
avatar

  4  hinin Сообщений: 88

  • 12 января 2010, 10:48
+
0
Поигрался вдоволь с таблицами и сделал для себя интересный вывод. При тестировании появляется очень хорошее чувство от полного контроля над ситуацией. Хотя не все системы можно в Excel протестировать.
avatar

  4  hinin Сообщений: 88

  • 16 января 2010, 13:14
+
0
А не проще мукуль изучить?
avatar

  4  baksozavr Сообщений: 236

  • 19 января 2010, 16:05
+
0
Мукуль по одной статье не изучить
avatar

  3  Chernomor Сообщений: 76 - Черномор

  • 28 марта 2010, 21:33
+
+1
Идея супер, но по графику видно, что система не стабильна, и требует дополнительных фильтров, это значит что данную систему можно принимать за фильтр изначально.
скорее всего данная стратегия покажет хороший результат на глобальных дневных трендах, и только вдоль тренда.
а так респект.
avatar

  17  Vacoin Сообщений: 965 - Vacoin

  • 29 марта 2010, 02:08
+
0
Спасибо. Конечно, все так.

Вообще, система приведена для иллюстрации темы статьи. Прибыльность — просто приятный побочный эффект. Если бы еще при всей своей подкупающей простоте она оказалась стабильной, то я бы очень удивился ))
avatar

  47  Kaur Автор Сообщений: 1327 - Руслан Каюмов

  • 29 марта 2010, 09:29
+
0
ну прикола ради можно сделать ее прибыльной. Нужно просто ввести фильтр — тренд, и фильтр на заборе когда флэт. и система заработает.
avatar

  17  Vacoin Сообщений: 965 - Vacoin

  • 29 марта 2010, 11:26
+
0
Хотелось бы спросить как формулой выразить покупку 3 дня ждем потом продаем, если на примере если возможно.
avatar

  0  deletant Сообщений: 20

  • 12 мая 2010, 13:43
+
+2
Т.е. надо, чтобы сделки заключались на 3 дня, а не на 1?
Если да, то для данной системы довольно просто (далее подразумевается, что в вашей таблице и в таблице из статьи расположение ячеек совпадает):
1) очищаем ячейки I7, J7, I8, J8
2) в ячейке I9 заменяем формулу на
=ЕСЛИ(H6="W";(C7-F9)*10000-I$4;ЕСЛИ(H6="B";(F9-C7)*10000-I$4;0))
3) протягиваем формулу

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

Также при желании можно создать параметр «кол-во дней удержания сделки» и тогда без дальнейшего изменения формулы можно будет изменять кол-во дней. Но для этого придется ввести новые столбцы и немного усложнить формулу. Кроме того, при увеличении кол-ва дней акутальным становится вопрос стоп-лоссов, которые не реализованы в данном примере.
avatar

  47  Kaur Автор Сообщений: 1327 - Руслан Каюмов

  • 12 мая 2010, 14:56
+
+1
я думаю это будет интресно многим на примере продолжить эту ветку
-в третй части рассмотреть удержание позиции по времени и установка стпов.
-в червертой можно рассмотреть управление капиталом.
-ну пятой прикручивание фильтра к системе.
не хочу быть навязчивым, но эти вопросы возникли при сравнении могих программ. excel очень гибкий и понятный инструмент.
реализация торговли для на этой базе очень востребована.
avatar

  0  deletant Сообщений: 20

  • 13 мая 2010, 12:05
+
0
Спасибо за интерес к теме. Я планирую продолжить, но когда именно, сказать сложно.
avatar

  47  Kaur Автор Сообщений: 1327 - Руслан Каюмов

  • 13 мая 2010, 23:54
+
0
Я настойчиво прошу *улыбается*ускорить процесс
avatar

  0  deletant Сообщений: 20

  • 14 мая 2010, 11:59
+
+1
Отвечая на последний вопрос, обнаружил ошибку в статье. Торговая идея была описана для трендовой системы (после бычьей свечи покупаем), а формулы даны для флетовой (после бычьей — продаем). Сейчас в текст внес необходимые правки.

Почему я оставновился на флетовой? Чтобы понять это, достаточно изменить формулы и посмотреть на график трендовой:



Неудвительно, что увидев такую антиутопию, я изменил формулу на обратную, но совсем забыл отразить это в тексте статьи. Сейчас в тексте все поправлено (формулы прежние, поравлено только описание торговой идеи).
avatar

  47  Kaur Автор Сообщений: 1327 - Руслан Каюмов

  • 12 мая 2010, 15:30
+
0
Система из статьи выделена в отдельную торговую систему под названием AntiTrend Dayli (ATD). После оптимизации получен такой график:



ПОДРОБНЕЕ >>
avatar

  47  Kaur Автор Сообщений: 1327 - Руслан Каюмов

  • 18 мая 2010, 13:16
+
0
Интересно интересно… мне как раз сейчас предстоит бумажная работа над одной идеей — это очень пригодится
avatar

  1  dzhini Сообщений: 2

  • 2 декабря 2010, 19:22
+
+3
Спасибо за тему и описанные в ней возможности*kiss*  , а также Бишопу, который все время меня к ней подталкивал*kiss* 
и вот мой первый грааль*bildbody* 




Редактирован: 22 марта 2015, 21:12
avatar

  27  alterego Сообщений: 2088 - Елена

  • 22 марта 2015, 21:10
+
+1
:)  Рад, что тема пригодилась.
avatar

  47  Kaur Автор Сообщений: 1327 - Руслан Каюмов

  • 22 марта 2015, 21:45

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари