Продолжаю цикл статей по практике применения Excel в работе трейдера Forex. Напомню, в предыдущих статьях мы рассматривали
экспорт из MT и простой
пример стратегии в Excel. В этот раз мы пойдем дальше, а именно создадим структурированный файл, вынесем настройки и статистические показатели на отдельную страницу, научимся оптимизировать систему по дням недели и характеру сделки (buy/sell).
Как и прежде для обучения будет использована простая торговая система AntiTrend Daily. Т.к. в ходе тестирования этой системы я
пришел к выводу, что у нее есть вполне себе хороший потенциал, то развитие системы пошло по двум направлениям —
ATD Student Edition (используется в текущем обучающем цикле статей) и
ATD Trade Edition (более сложные версии для исследования самой стратегии).
В итоге, файл системы был значительно переделан со времени своего первого появления; об этих изменениях и новых функциях и пойдет речь в этой статье. Сам файл выложен в конце статьи.
(нажмите на изображение для увеличения)
На скрине показана страница настроек ATD Student Ed. v1.03
Итак, какие проведены изменения. Тот, кто не понимает, что за изменения, читайте
предыдущую статью.
- Страница с настройками. Разделяем настройки и ценовые данные. Для этого страницу с ценовыми данными назовем Data, а также создаем новую страницу с настройками и называем ее Settings. Переносим ячейку со значением спрэда (если ячейку вырезать, а затем вставить на новое место, то в формулах, использующих значение ячейки, автоматически произойдут нужные изменения). На странице Data я убрал все пустые строки вверху; это необходимо в дальнейшем для корректной работы формул.
- Размещение графика. В первой версии график размещался на странице с данными. Рекомендую держать графики на странице с настройками, чтобы было удобнее мониторить изменения при изменении параметров системы. Итак, помещаем график на страницу Settings (правой кнопкой на графике, пункт «Размещение»)
В то же время я рекомендую помещать лишь миниатюры графиков и так, чтобы их не пересекали строки и столбцы рабочего пространства, т.е. фактически в шапку. Дело в том, что при добавлении новых строк в параметры график будет искажаться и смещаться. А в шапке останется нетронутым. В случае, если понадобиться посмотреть в увеличенном варианте — просто щелкаем правой кнопкой и выбираем пункт «Окно графика».
- Кириллические названия. В Excel нас интересует именно простота использования. Поэтому в цикле статей все формулы будут простые, поэтапные, с примечаниями и примерами, в кириллическом варианте. В соответствии с этим я переименовал столбцы также на русский язык за исключением распространенных Open-Close-High-Low.
- Закрепление областей. Советую пользоваться функцией «Закрепление областей» («Окно -> Закрепить области»). Закрепление делает использование таблиц более удобным — вы всегда видите заголовки таблицы.
- День недели. Добавляем новый столбец «День недели» на странице с ценовым данными сразу после столбца дат. Здесь будем, как вы уже догадались, вычислять день недели для соответствующей даты. Понадобится это для сбора статистики по дням недели и использования этой статистики при оптимизации. Тех, кто ставит под сомнение действенность подобных мер, отсылаю к книге «Долгосрочные секреты краткосрочной торговли» за авторством Ларри Вильямса. Я лично статистику очень уважаю, поговорить об этом подробнее можно в отдельной статье.
Итак, формула для расчета дня недели очень проста:
=ДЕНЬНЕД(XXX;2)
Вместо XXX подставьте адрес соответствующей ячейки. Второй параметр 2 обозначает, что неделя начинается с ПН (если подставить 1, то неделя будет начинаться с ВСК).
Эта формула будет возвращать день недели указанной даты в числовом формате (1=ПН, 2=ВТ, 3=СР и т.д.). Протягиваем формулу на весь столбец.
- Удаление суббот из истории. Тот, кто скачивал историю дневок с лохматого 99 года, может обнаружить, что в котировках до определённого года встречается суббота. Обычно это дни с очень маленьким объемом и маленьким диапазоном изменения цены, однако лишние дни могут привести к искажению сигнала. Лучше субботы удалить из истории, что становится возможным благодаря введению столбца с днями недели.
Выделяем первую строку и выбираем в меню «Данные -> Фильтр -> Автофильтр». Появится фильтр сортировки на всех заголовках таблицы. Выбираем в фильтре столбца «Дни недели» число 6 — теперь в таблице у нас отобразятся только субботы.
Осталось выделить все строки и удалить их. Удаление может занять некоторое время после удаления выберите в фильтре столбца «Все». фильтр можете удалить. Возможно, после удаления нарушаться формулы. Просто протяните их заново.
- Именование констант и переменных. Для лучшего понимания формул воспользуемся такой удобной функцией Excel, как присвоение имен ячейкам. Мы будем задавать имена константам и переменным, находящимся на листе Settings. Чтобы присвоить имя ячейке, нужно поставить на нее курсор и выбрать в меню пункт «Вставка -> Имя -> Присовить» Какие имена и каким ячейкам присвоены Вы можете увидеть на скрине ниже:

Заодно я предлагаю сразу привести вид страницы настроек в соответствии со структурой. показанной на картинке. Некоторые пояснения:
Множитель — это то число, на которое нам нужно умножать результат арифметических действий с ценами, дабы получить привычные пункты, а не 0,0025. В настройках пользователю предлагается указывать только кол-во знаков после запятой для данной ВП, а множитель будет рассчитываться автоматически по простейшей формуле:
=10^H14
В ячейке H14 располагается в моем случае заданное вручную кол-во знаков после запятой. Т.е. для вычисления множителя надо возвести 10 в степень количества знаков.
Дальше в блоке настроек все должно быть понятно:
«день недели» — какой день недели требуется выбрать или исключить (принимает значения от 1 до 5, что соответствует от ПН до ПТ);
«выбрать/исключить» — выбрать(1) или исключить(0) выбранный день недели;
«разрешить BUY» и «разрешить SELL» — разрешить(1) или запретить(0) сделки соответственно на покупку и на продажу.
- Получение сигнала. В предыдущей статье для совершения сделки мы сразу делали арифметическое действие в столбце вычисления прибыли, но по мере усложнения системы такой подход приведет к усложнению восприятия формулы и сделает ее менее гибкой для модификаций. Поэтому предлагаю ввести сигнальный принцип. Это обозначает, что мы добавляем отдельный столбец «СИГНАЛ», где 1=BUY, а -1=SELL. главная формула будет именно в этом столбце. В начале формулы всегда стоят исключения. Я думаю, что с учетом предыдущего пункта, Вы можете попробовать понять эту формулу:
=ЕСЛИ(ИЛИ(И(День_нед<>B3;Выбрать_дн=1);И(День_нед=B3;Выбрать_дн=0));0;ЕСЛИ(И(H2="B";Buy=1);1;ЕСЛИ(И(H2="W";Sell=1);-1;0)))
В столбце «B» у нас день недели, в столбце «H» — тип свечи. В начале в скобках «ИЛИ» идут исключения, которые не зависят от характера сигнала (бай или селл), т.е. выполнение этих условий ведет к отмене сигнала. Далее уже идут условия, которые зависят от характера сигнала.
Вычисление прибыли. В столбце «Прибыль» мы теперь только вычисляем прибыль, при условии, если был сигнал:
=ЕСЛИ(I3=0;0;(F3-C3)*I3*Множитель-Спрэд)
В начале идет проверка на условие наличия сигнала, затем вычисляется прибыль. Столбцы: I — сигнал, F — Close, C — Open.
- Результаты торговли. Формула нахождения последнего значения столбца. Здесь у нас располагается пока только результат в пунктах, т.е. последнее значение из столбца «Баланс (пп)». Часто новички, чтобы отразить подобную характеристику просто делают ссылку-формулу на последнюю ячейку нужного столбца, например, =Data!K2816, но это неправильно, т.к. в случае добавления новых ценовых данных придется подставлять в формулу новый актуальный адрес последней ячейки. Проблему решает использование специальной формулы. Допустим, что требуется найти последнее значение в столбце K. Тогда формулы будет иметь такой вид:
=ИНДЕКС(Data!K:K;СЧЁТЗ(Data!K:K))
Формула не будет работать правильно, если над таблицей у нас есть пустые строки.
- Статистические показатели.
Количество дней торговли получаем простым вычитанием максимальной даты из минимальной даты. Если дата хранится в столбце A, то формула примет вид:
=МАКС(Data!A:A)-МИН(Data!A:A)
Количество сделок. Можно подсчитать отдельно кол-во сделок BUY и SELL, а затем сложить. Согласно логике работы нашей таблице с данными, все сигналы на покупку в столбце I отмечаются как «1», а на продажу "-1". Формула для подсчета количества сделок на покупку сводится к подсчету числа единиц в соответствующем столбце:
=СЧЁТЕСЛИ(Data!I:I;"1")
То же самое для продаж, но считаем уже "-1"
На этом статья завершается. Файл готов к дальнейшему усложнению системы, чем мы обязательно и займемся в будущем.
Скачать итоговый файл, актуальный для данной статьи, можно по ссылке ниже. Файл сохранен в MS Excel 2003.
opentraders.ru_atd-student-01-03.zip (374 Kb)
Вступайте в группу «Excel на службе трейдеров Forex» и вы будете получать уведомления о появлении новых тем по Excel!
Отредактировано 28.10.2014: исправлена ошибка
Комментарии (41)
4 hinin Сообщений: 88
8 Paguk Сообщений: 328 - суровый трейдер
0 deletant Сообщений: 20
47 Kaur Автор Сообщений: 1331 - Руслан Каюмов
4 hinin Сообщений: 88
47 Kaur Автор Сообщений: 1331 - Руслан Каюмов
Давайте и про стоп-лоссы.
А где скачать ATD Trade Edition? Если не жалко.
0 wowa78 Сообщений: 1
Над ATD Trade Edition тоже еще надо работать.
47 Kaur Автор Сообщений: 1331 - Руслан Каюмов
0 deletant Сообщений: 20
К сожалению, приоритеты статей по Excel не на первом месте, т.к. лишь небольшое число пользователей заинтересованы в этих материалах.
47 Kaur Автор Сообщений: 1331 - Руслан Каюмов
0 deletant Сообщений: 20
Я Вам всего лишь пояснил, почему Ваш тон неуместен.
Речь не о конкретных ресурсах, а о востребованности вопроса как такового. На ютубе у роликов калиты по экселю с начала года по 3000 просмотров. Это совершенно не подпадает под определение «шкалит». У этой темы, например, просмотров больше, поэтому не нужно пытаться свалить на ресурс.
Но востребованность в описании обычной торговой стратегии или урока по MQL выше. Речь была об этом. Поэтому и приоритеты соответствующие.
47 Kaur Автор Сообщений: 1331 - Руслан Каюмов
0 deletant Сообщений: 20
2 AndrewX Сообщений: 37
0 deletant Сообщений: 20
6 Faustus Сообщений: 41 - Алексей К.
Обучение да, пока не планируется возобновлять.
Ну а сам Excel для нужд тестирования я и сейчас активно использую. Ежедневно.
47 Kaur Автор Сообщений: 1331 - Руслан Каюмов
6 Faustus Сообщений: 41 - Алексей К.
47 Kaur Автор Сообщений: 1331 - Руслан Каюмов
7 Soultaker Сообщений: 138
24 SerOv Сообщений: 859 - Сергей
1) Нажмите в заголовок колонки «B» правой кнопкой мыши
2) Появится контекстно меню, в которой выберите пункт «Формат ячеек..»
3) Откроется окно. Выберите в нем сверху вкладку «Число» (она обычно первая). В колонке «Числовые форматы» выберите «Общий» и нажмите ОК — дни недели должны будут отобразиться после этого числами.
47 Kaur Автор Сообщений: 1331 - Руслан Каюмов
24 SerOv Сообщений: 859 - Сергей
Извини Руслан если надоедаю но хочется разобраться !
24 SerOv Сообщений: 859 - Сергей
Подробнее о проблеме и решении здесь — kaur.opentraders.ru/57.html
Ничего страшного. Буду рад помочь. Понимаю, что в начале всегда не просто разбираться. Редактирован: 23 октября 2014, 18:43
47 Kaur Автор Сообщений: 1331 - Руслан Каюмов
24 SerOv Сообщений: 859 - Сергей
21 Homya4ek Сообщений: 491 - Влад
46 Bishop Сообщений: 5817 - АЛЬФАХАМЕЦ-Машковод
1-- -это же насколько я понимаю столбец В на первом листе — тогда что такое и где находится вот это
Форула сигнала вроде понятна но где и что из нее находится пока не понял.
2--
а не день недели что ли?
Руслан не мог бы ты сделать отдельный топик по этому второму листу == глядиш и тема Exctlя возродится!
Я вот уже протестил а Excel свою ТС — правда с простейшими сигналами ( надо как то объеденить два в один) и дальше продвигаться но пока вот ступпор .
24 SerOv Сообщений: 859 - Сергей
«День_нед» — это именованная ячейка с листа Settings (посмотри скриншот в 7-ом пункте, и описание, как задавать имена ячейкам)
День недели, да. Поправлю. Спасибо, что обратил внимание.
Результат действительно пугающе хороший. Тем более для «простых сигналов». Обязательно проверь, чтобы сигнал на сегодня не опирался на данные за сегодня. В экселе очень просто допустить ошибку, которая в свою пользу обернет работу системы. И такие графики — первый признак того, что надо проверить формулу. В крайнем случае для проверки можно сравнить какой-нибудь сигнал с истории на графике терминала с расчетным сигналом.
47 Kaur Автор Сообщений: 1331 - Руслан Каюмов
24 SerOv Сообщений: 859 - Сергей
1- Присваивать имена нужно ЯЧЕЙКАМ или столбцам ( у мене в Excel 2013 только столбцам присваивается — ячейкам нет.
2-спасибо за подсказку о проверке формулы = точно данные опирались сегодня на сегодня переписал формулу вышло вот что — как такое реально нет?
3- ====== вот с этим самое большое затруднение у мене
24 SerOv Сообщений: 859 - Сергей
Ячейкам. По следующей ссылке можно посмотреть, как присваивать имена ячейкам —
office.microsoft.com/ru-ru/excel-help/RZ010285709.aspx?section=4
Также можно скачать пример из данного топика. Покрутить его. Там все имена присвоены.
Да, это выглядит реальным. Если так работает торговая идея, то неплохо. Можно попробовать добавить фильтр для выправления эквити.
тебе стоит с одного параметра начать. Например, с
Кроме того, сделать этот параметр можно на том же листе, не вынося на отдельный. Чтобы понять принцип. Даже именовать ячейку не обязательно в таком случае. Например параметр у тебя в углу на А1, а таблица с данными основная начинается с B2
Тогда ты можешь в формуле ссылаться на А1. И если поставить знак доллара "$" следующим образом $A$1, то тогда при протягивании формулы адрес не будет изменяться. Таким образом можно обойтись будет без имени.
Я ведь тоже не сразу начал использовать отдельные листы с параметрами и имена ячейкам задавать. Постепенно с одного листа и с простейших примеров можно освоить.
Если бы, конечно, я показал в видео, то было бы гораздо проще понять… Но не могу сейчас обещать видео.
47 Kaur Автор Сообщений: 1331 - Руслан Каюмов
47 Kaur Автор Сообщений: 1331 - Руслан Каюмов
24 SerOv Сообщений: 859 - Сергей
24 SerOv Сообщений: 859 - Сергей
экспорт — kaur.opentraders.ru/57.html
пример стратегии — kaur.opentraders.ru/58.html
Эти ссылки даны в начале топика тут. Видимо как-то не достаточно очевидно я их дал.
А эта статья посвящена конкретно странице с настройками.
47 Kaur Автор Сообщений: 1331 - Руслан Каюмов
24 SerOv Сообщений: 859 - Сергей
Реален ли такой график баланса? А вот со своей тс зашел в тупик — не получается пока добавить фильтр по дням недели == хочу исключить понедельники из торговли т.к по ним самая большая просадка в тесте ( по другим дням (+) а в четверг небольшой (-). Какой еще фильтр можно применить — не подскажеш ???
А так то изучаю дальше Exsel и тренируюсь в написании формул.
24 SerOv Сообщений: 859 - Сергей
График реален, но просадка довольно большая
Исключить понедельники смысл есть. В чем трудности при исключении понедельников.
Там, где формируется сигнал, надо сделать проверку на день недели. Если возникают трудности, то могу посоветовать разбивать формулу на несколько частей и каждую часть прописывать в отдельный столбец.
47 Kaur Автор Сообщений: 1331 - Руслан Каюмов
24 SerOv Сообщений: 859 - Сергей
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий