четверг, 8 декабря 2011 г.

Проверка торговой идеи в 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 пунктов. Конечно, график далек от идеала, но теперь можно заняться и совершенствованием системы… Пожалуй, в следующий раз *улыбается*Спасибо за внимание! Удачи и профитов!

Источник: www.opentraders.ru

Комментариев нет:

Отправить комментарий