Хотите научиться самостоятельно и без MQL проверять торговые идеи, собирать статистику, улучшать торговые системы?
В этой статье с помощью Excel мы вместе с нуля дойдем до такого графика:
"Прототипирование (prototyping) — быстрая «черновая» реализация базовой функциональности для анализа работы системы в целом" (Википедия)
Я считаю, это обязательная штука для многих трейдеров, которые не хотят вслепую тыкаться на рынке и которые хотят работать со статистически подтвержденными торговыми системами, а не с народными приметами. Универсальный и удобный инструмент прототипирования для трейдера (и даже для программиста) — это обычный Excel.
Начинаем интенсив по Excel-прототипированию торговых систем.
Понадобятся знания: основы трейдинга + желательно иметь хотя бы небольшое знакомство с Excel.
Постановка торговой идеи
Наверняка Вы слышали про то, что большую часть времени рынок находится во флете. Это одна из первых «примет», которую узнаёт трейдер.
Также, полагаю, многие слышали, что в среднесроке и долгосроке меньше влияние шума и легче заработать, чем в краткосрочной внутридневной торговле.
Объединим эти две мысли с целью получения простейшей базовой торговой идеи:
рынок чаще идет в противоположную сторону относительно предыдущего дня.
Возьмем самую распространенную торговую пару EUR/USD и проверим на ней эту торговую идею.
Подготовка данных
Итак, нам нужен Excel и нужно как-то выгрузить туда данные из торгового терминала. Согласно торговой идее работать будем с D1. Одним из источников качественных данных является Alpari (инструкция по открытию там счета и скачиванию терминала —
start.opentraders.ru/13646.html).
Выгружать данные буду со счета MT4-Standart, впрочем в учебных целях можете использовать МТ4 любой компании. Переходим в МТ4 в Архив котировок (F2), находим EUR/USD D1. Но до экспортирования данные можно догрузить, кнопка Загрузить. Альпари выдает данные со своих серверов, а не с демо-серверов MetaQuotes, что нам и надо. Игнорируем предупреждение, что загрузка будет с серверов Alpari NZ, эти сервера нас вполне устраивают.
Нажимаем Экспорт, где нам предложат формат экспорта. Быстрый способ — экспортировать в формате *.htm, открыть получившийся файл, выделить все и скопировать (Ctrl+A, Ctrl+C). В новой книге Excel вставить скопированное (Ctrl+V)
Однако согласно Вашим региональным настройкам разделителем целой и дробной части, скорее всего, будет являться запятая. В файле — точка. Просто выделяем четыре колонки с ценами, нажимаем Ctrl+F, выбираем закладку Заменить и делаем, как на скриншоте ниже — заменяем все точки в выделенных колонках на запятые.
Можно также:
— для единообразия выставить этим колонкам ценовых данных формат ячеек «Числовой» с 5 знаками после запятой (доступ к формату ячеек по правой кнопке);
— удалить колонку Time, т.к. она не имеет значения для D1;
— добиться, чтобы табличка начиналась с А1, выделить ячейку B2 и закрепить области (Вид / Закрепить области) — тогда закрепленными будут верхняя заголовочная строка и левая колонка с датами (заголовочные строки и столбцы не будут перемещаться при навигации по таблице, что очень удобно)
Получим такую исходную табличку с ценовыми данными:
В конце топика Вы сможете скачать готовый файл со всеми формулами и графиками. Но рекомендую создать его все же самостоятельно. Толк будет больше.
Создаем сигнал
Работать будем с данными за 2014-2017 гг (лишние строки можно удалить)
Напомню, мы проверяем торговую идею по торговле против движения предыдущего дня.
Что нам понадобится? Набросаем предварительную формулу:
ЕСЛИ вчера был день бычий, то ПРОДАТЬ;
ИНАЧЕ ЕСЛИ день вчера был медвежий, то КУПИТЬ
Узнаем, каким было движение в тот или иной день.
Для этого мы можем просто сравнить дату закрытия Close и дату открытия дня Open. Если Close > Open, то курс за день повысился (бычья белая свеча). Если наоборот — понизился (черная свеча). Для этого заведем колонку
Kind. Для белой свечи kind = 1, для черной kind = -1, если движения не было (Close = Open), то kind = 0
Пишем формулу в Excel и
протягиваем формулу на всю колонку Kind.
Мы даже можем зайти в Условное форматирование и выбрать для наглядности форматирование с помощью набора значков
(чтобы получилось, как на скриншоте, придется создавать правило форматирования, выбрать нужный набор и установить обратный порядок форматирования — не заморачивайтесь с этим, если с ходу не получается)
Хорошо, цвет свечи Kind у нас есть.
Мы уже можем получить сигнал для каждого дня в зависимости от цвета свечи за предыдущий день. Сделаем это. Заведем следующую колонку
Signal
Понятно, чтобы получить сигнал на сегодня, мы должны ориентироваться на вчера. Значит для написания таких формул ставим курсор не в первую строчку с данными, а во вторую, а опираться будем в формуле на первую строчку с данными.
Пусть сигнал на покупку — это Signal = 1, на продажу Signal = -1. Соответственно 0 — это отсутствие сигнала. Условно формула будет выглядеть так:
ЕСЛИ Kind_вчера = 1,
ТОГДА Signal_сегодня := -1 # ведь мы должны продавать, если свеча вчера была белая
ИНАЧЕ ЕСЛИ Kind_вчера = -1,
ТОГДА Signal_сегодня := 1
Отдельно замечу, что никаких алгоритмических изысков (например, вместо условий умножить значение kind на -1) я здесь намеренно не даю, потому что они будут решением частных случаев, а моя задача — показать общий подход!
Реализуем в Excel, протягиваем формулу и можем на сигнал поставить условное форматирование в виде стрелок вверх-вниз
Еще раз обратите внимание, что опираемся на предыдущий день, а не на текущий. Т.к. при получении сигнала мы еще не знаем, что будет в этот день.
Итак, мы получили сигнал. Попробуем оценить, как часто он отрабатывал правильно, как часто он правильно предсказывал направление на сегодня.
Промежуточная оценка
Чтобы оценить сигнал, можно сравнить его с текущим днем, т.е. сравнить Signal и Kind. Результат сравнения будем хранить в виде 1 (сигнал верный) и 0 (сигнал неверный) в новой колонке Value
Использованная формула немного сложнее предыдущих. Сначала мы проверяем, что Signal не равен 0 (чтобы проводить оценку только тогда, когда есть сигнал), а затем уже формируем условие на проверку
ЕСЛИ Signal <> 0,
ТОГДА ЕСЛИ Signal = Kind,
ТО Value = 1,
ИНАЧЕ Value = -1
ИНАЧЕ Value = 0
Теперь у нас есть проверочная колонка Value. Для быстрой оценки можно просто выделить ее и посмотреть характеристики в строке состояния внизу
Среднее 0,09 в данном случае уже говорит о том, что единицы (а значит верные сигналы) преобладают
Положительная сумма 90 говорит, на сколько верных сигналов больше.
Но число это нельзя рассматривать в отрыве от общего числа сигналов. Посчитаем процент верных.
Сначала вообще выясним, сколько верных и ошибочных сигналов
x + y = 980, где х - верные, y - ошибочные
верных на 90 больше, чем ошибочных
y + 90 = x
подставляем в первое выражение
y + 90 + y = 980
y = 445 число ошибочных
Значит число верных сигналов х = 445 + 90 = 535
Доля верных = 535/980 = ~ 0.55 = 55%
Разумеется, можно и нужно заставить Excel самостоятельно все это считать. Но в данном случае я показал, что делать первые выводы о преобладании верных сигналов можно подобными расчетами даже на глаз.
55% для простейшей идеи без единого дополнительного параметра — это замечательно.
Не верите? )) Посмотрите, как может выглядеть кривая прибыли для 55% верных сделок —
kaur.opentraders.ru/25600.html
Однако, трейдер не зарабатывает на проценте верных сигналов. Важно все-таки, сколько пунктов и какой процент прибыли можно было бы заработать. Как построить по имеющимся данным эмуляцию торговли, провести настоящий тест, мы поговорим в следующей части цикла.
Строим график
А пока давайте построим хоть какой-нибудь график. Ведь даже зная Value, уже можно построить график и сделать какие-то выводы. А именно построить кривую изменения суммы сигналов во времени и сделать вывод о распределении. Может мы случайно в какой-то благоприятный момент времени получили почти подряд 90 положительных сигналов, а всё остальное время кривая была 50 на 50?
Итак, для кривой изменения суммы сигналов ключевое слово — это «сумма сигналов». Действительно, строить график по колонке Value бесполезно, получится заборчик в диапазоне +-1. Поэтому заведем колонку, где будем суммировать наши сигналы. Так ее и назовем
ValSum.
Чтобы построить накапливающуюся сумму, нужно применить СУММ к диапазону, где первый элемент будет закреплен символом $. Выглядит это так:
Вот так просто, да. Главное, не забывайте про знак доллара перед номером строки первого элемента диапазона (иначе сумма получится плавающей, а не накопительной).
После протягивания формулы Вы можете проверить, что в любой ячейке будет считаться сумма с первого сигнала и по выделенный день. А итогом в конце мы и будем как раз иметь то самое число 90, которое мы видели в Промежуточной оценке.
По получившейся колонке ValSum уже можно строить график. Для этого:
- Выбираем две колонки Date (дата будет у нас по оси Х) и ValSum — выбор отдельно расположенных колонок осуществляется нажатием на соответствующие буквы колонок, удерживая Ctrl
- Когда колонки выбраны, идем в меню, как это показано на скрине ниже: Вставка — Диаграмма — График — График. Нажимаем
Получим тот самый график из начала статьи.
Полностью готовый по данному уроку файл приложен:
ATD_system.xlsx (108 Kb)
Как видите, торговая идея «день против предыдущего» выглядит рабочей. В следующих частях я планирую продолжить и показать, как нам в Excel получить результаты в пунктах, как учесть торговые условия и как улучшать систему.
Часть 2: получаем результат трейдинга в пунктах →
P.S. Доступны персональные консультации и обучение по скайпу. Для подробностей обращайтесь в личные сообщения или на почту
ruslan.kayumov@opentraders.ru
Комментарии (5)
27 Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..
47 Kaur Автор Сообщений: 1331 - Руслан Каюмов
20 Nacha51 Сообщений: 5610 - Наталья
4 hinin Сообщений: 88
7 atarasiuk Сообщений: 51 - андрей
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий