Блог им. t-trade

Стратегия для фРТС: алготрейдинг в массы!

Что такое Системный трейдинг? Нет, это не программирование. И не талмуды кодов. Не статистика, не математика. Это не умные программы, у которых и название-то страшно прочитать. Системный трейдинг – это, прежде всего, логика! Читая про возможности той или иной программы вы вряд ли проникнитесь духом алготрейдинга! Ведь это не просто формулы – это подход, парадигма, это стиль, это особый взгляд. Любую идею системный трейдер проверяет на истории, потому что без проверки – это всего лишь слова. А, как мы знаем, ещё В.И. Ленин сказал: «Главная проблема цитат в Интернете в том, что люди сразу верят в их подлинность» :)
 
В этой статье я хочу показать Вам, что алготрейдером можно стать даже без установки каких либо специальных программ. Я взял элементарную идею, и с помощью программы MS Excel выяснил, что за 2012 год можно было заработать более 40 тысяч пунктов! И вот эту идею я вам и расскажу:
 
Многие боятся алготрейдинга. Боятся, потому что не умеют программировать. Поэтому придумывают всякие нелепые отмазы, вроде тех, что восхваляют интуитив и порицают роботизированный подход к трейдингу. Меж тем, ничего сложного в программировании нет. Необязательно знать специальные языки, «объявлять классы», «разрабатывать библиотеки» и т.д. Достаточно простой логики. Сегодня я хочу показать, как с помощью обыкновенного ЭКСЕЛЯ можно проверить торговую идею.

 
1 этап. Подготовка данных. В принципе, этот раздел можно пропустить. Или даже скачать файл эксель с данными отсюда.
 
Заходим на всеми любимый финам, скачиваем часовые данные нашего обожаемого фьючерса на индекс РТС. На этот раз будем пользоваться Обычной склейкой финама. Переносим данные в эксель: открываем блокнот, «Выделить всё» -> «Копировать», в первой же ячейке «Вставить». Получаем несколько тысяч строк с данными в первом столбце. Их надо разделить по нескольким. Выделяем столбец с данными, меню «Данные»-> «Текст по столбцам» -> «Далее» ->ставим флажок «запятая» -> «Готово». Теперь вставляем после ценовых данных по пустому столбцу и проделываем то же самое, добавив разделитель «Другой: точка». Иллюстрация:
 Стратегия для фРТС: алготрейдинг в массы!
2 этап. Идея.
 
Проверить в экселе можно очень многое. Но для примера я взял элементарную идею: если 2 часа подряд рынок растет – покупаем. Если 2 часа подряд падает – продаем. Таким образом, мы всегда «в рынке». Стопов нет, тейков нет. Сделки будем проводить в конце часа, в последние секунды, когда уже с высокой долей вероятности можно сказать, исполнилось условие или нет (в противном случае при исполнении по OPEN мы получим неправдоподобные данные при открытии позиции в 10:00, т.к. в момент открытия рынка совершить сделку могут только «избранные»)
 
Когда ЛОГИКА ясна, можно приступать к проверке идеи.
 
3 этап. Проверка.
 
Я делаю первое, что приходит в голову. Возможно, можно делать проще, или наоборот более поэтапно. Можно сразу подставлять данные так, чтобы была возможность проверять разные условия (оптимизировать стратегию). Я же для примера делаю всё, что называется, в лоб:
Создаем столбец «Условие для входа». В каждый час будем проверять, соблюдаются ли условия.
Для лонга: Если закрытие больше открытия (рост свечи) и закрытие предыдущей свечи больше открытия, то условие выполнено. Присвоим этому событию число 1. Обратное для шорта, присваиваем число -1. Если сигнала нет, ставим 0. Таким образом, формула эксель выглядит так: =ЕСЛИ(И(F4>C4;F5>C5);1; ЕСЛИ(И(C4>F4;C5>F5);-1;0))
Здесь и далее для удобства все формулы даны для пятой строки книги.
Логика формулы «если»:
 
Если (
  1. условие, в нашем случае: и в этот час рост, и предыдущий час тоже рост, то
  2. Ставим в ячейку число 1. В противном случае
  3. проверяем, нет ли условия на шорт: если (
    1. условие №2: оба часа падение, то
    2. ставим -1, в противном случае
    3. ставим 0
)
)
 
Всё, условие записали. Теперь, поскольку мы всегда в рынке, нам нужно, чтобы появился некий «выключатель», который предотвратит повторные входы, и будет изменять направление позиции только при появлении условия на противоположный вход. Таким образом мы избавляемся от нолей и число -1 появляется каждый раз, пока не появится 1, после этого в каждой следующей строчке будет 1 до тех пор, пока не выполнится условие на шорт. Для этого Пишем формулу: если предыдущее значение условия для входа изменило свой знак, то ставим новое значение в столбец «выключатель», в противном случае оставляем то, что было. =ЕСЛИ(И(I4<0;H5>0);H5; ЕСЛИ(И(I4>0;H5<0);H5;I4))
Логика формулы: Если (число поменялось с -1 на 1, то ставим новое число, 1. В противном случае, если (число поменлось с 1 на -1 ставим новое: -1. В противном случае оставляем то, что было))
 
Следующий столбец – «точка входа». Если значение выключателя поменялось, то значит на этом часе появился сигнал на переворот, значит ставим сюда значение закрытия текущего часа. При чем для шорта ставим со знаком плюс, а для лонга со знаком минус (потому что когда мы покупаем, мы тратим деньги, а когда продаем – получаем). Формула: =ЕСЛИ(I5<>I4;I5*F5;0)*-1
Следующая ячейка: баланс. В начале у нас 0 денег (в данном случае одна деньга = 1 пункт РТС). Как только мы вошли в шорт, у нас появилось денег, полученных в результате продажи одного контракта. Как только появится условие на лонг, мы потратим деньги на закрытие позиции+ ещё столько же на открытие новой, лонговой, и наш баланс станет отрицательным. Когда на поледней свечке мы принудительно закроем позицию по цене закрытия, мы получим итоговый результат нашей стратегии.
Формула: =J5*2+K4 «Точка входа» умноженная на два + предыдущее значение баланса.
 
И последний, самый важный столбец: «Результат». Сделаем его по состоянию на каждый час. Для этого представим, что мы закрываем позицию в конце каждого часа. Если «выключатель» = -1, то мы тратим деньги на покупку контракта, т.е. из баланса вычитаем цену закрытия. Если «выключатель» = 1, то нам надо продать контракт, и к балансу прибавится стоимость закрытия.
Формула: =ЕСЛИ(I5<0;K5-F5;F5+K5)
 
4 этап. Оценка результатов.
Строим график по столбцу «результаты». («Вставка»-> «Диаграмма»->и далее по желанию). Смотрим:
 
 Стратегия для фРТС: алготрейдинг в массы!
 
При желании, в экселе можно посчитать и всякие там коэффициенты шарпа, и % прибыльных сделок, и профит-фактор – всё, что угодно. Для этого нужно понимать логику каждого показателя. Вот здесь лежит готовый файл — берите, добавляйте свои формулы, проверяйте показатели, оптимизируёте по дню недели, времени входа, придумайте, как добавить стопы — это всё реализуемо! Ведь так я работал до тех пор, пока однажды не скачал Мультичартс! :)
 
5 этап. Тонкости.
Естественно, при таком тестировании, как и при любом другом, будут возникать ошибки. Ставить стопы и тейк профиты на часовиках сложно – если в одно часе могло исполниться и то, и другое, то неизвестно, что исполнилось бы раньше. Для этого надо лезть в минутные данные, а это уже в экселе делать не очень удобно, по крайней мере за длительный период. А разница цен контрактов при экспирации, о которой я писал здесь, отнимает у итогого результата именно этой стратегии около 3500 пунктов… Поэтому всегда проверяйте свою работу!
 
Выводы.
 
Лично я такую систему торговать не буду. Но, в целом, 2012 год оказался бы намного лучше для тех, кто её использовал бы вместо своих интуитивных догадок. ;)
 
Поводя итоги, скажу, что проверять стратегии, как видите, может каждый, кто хоть немного знаком с экселем. А системный подход к трейдингу позволяет избавиться от многих психологических ошибок, а также избавит трейдера от иллюзий относительно прибыльности того или иного метода…
 
Честно скажу, в экселе я решаю те задачи, которые я не умею решать с помощью Мультичартс (например, вывод числовых данных в таблицу по массивам данных без открытия позиций – среднее изменение от open до close по каждому часу гораздо быстрее и проще узнать именно в экселе с помощью сводных таблиц!). Но всё-таки проверить простую идею намного удобнее именно с помощью easy language – логика та же, что и в экселе, просто язык английский и все показатели считаются автоматически! :)
 
 
Всем профитов!
★55
25 комментариев
Автору плюс!
avatar
Demogorgon, Спасибо!
Я эксперт в программировании — именно поэтому скептически отношусь к алготрейдингу, т.к. прекрасно понимаю его возможности.
avatar
RuTicker.com, т.е. Вы не проверяете свои идеи на истории — что-нибудь придумали — и сразу в бой?
Иван Коваль-Зайцев, нет конечно, прошлое же не повторяется.
Идеи вроде «последние 10 лет 70% нечетных вторников были в плюсе» — дебильными
avatar
RuTicker.com, Ну, Вы лишаете себя мощного инструмента, что я ещ могу сказать. С другой стороны, если у Вас есть время проверять идеи на практике, то отлично. «Кто понял жизнь, тот никуда не торопится»…
RuTicker.com, если под этой идеей нет фундаментального чего то, то конечно это глупо. Но датамайнинг (по сути его вариация описана в статье) позволяет выявить некую неэффективность, о которой так бы и не задумался.
Вот многие говорят Sell in May and Go Away — и май прошлого года полностью это вроде бы подтвердил. Непонятно только, чем этот факт подтвержден, какая за ним стоит идея. Прогон лет за 60 того же SnP говорит, что на таком промежутке май ничего особенного из себя не представляет — растем и падаем 50/50.
С другой стороны, перед НГ многие начинают говорить о предновогоднем ралли. Можно либо на слово верить, а можно проверить. За те же 60 лет SnP500 декабрь был растущим в >75% случаев. Заставляет этот факт задуматься о глобальных вещах, о цикличности, что конец года, все прутся в магазины за подарками и делают им кассу, доосваивают бюджеты, перетряхивают портфели и т.п…
Прошлое, конечно, не повторяется. Но есть события цикличные. Рождество каждый год 25.12, после зимы — весна, урожай собирают осенью…
avatar
Alexand77, посмотри у меня в жж про сезонность, поймешь суть sell in may and go away.
avatar
Pratrader, да я у вас в ЖЖ года два торчу, именно про май видимо не увидел. Зато много другого интересного на тему сезонности узнал и использую. Ткните пожалуйста про май, можно в личку.
avatar
Alexand77, pratrader.livejournal.com/236724.html
В общем, суть не в том, чтобы в мае зашортить, т.к. действительно ничего в нем нет шортового.
А в том, что имеет смысл
а)закрыть лонги перед маем.
б)завершить операции в конце мая и пойти погулять, т.к. следующий месяц-июнь, а его традиционно прибыльней не торговать, чем торговать.
avatar
Pratrader, все, до того как увидел ваш ответ, пробежал ваши статьи по тегу сезонность :)
Я в общем это и подразумевал, в продаже мая нет какой то неэффективности. А в контексте сезонности, все верно, выходим из лонгов. Просто я почему то эту пословицу для себя дословно переводил как «продавай в мае и вали». :)
avatar
RuTicker.com, ну отчасти ты не прав, ибо рынок имеет сезонность… и конечно вторник вторнику рознь, НО первый вторник декабря из года в год имеет свою логику.
avatar
Dimanite, Какую же?
avatar
Alexand77, Сам спросил, сам и ответил. Собственно можно сказать что где то в этом районе и начинается НГ ралли. На MICEX покупая в первый вторник декабря на месяц — угадайка 92% с 1997 года. О чем я собственно в посте выше говорил.
avatar
Ключевая фраза «можно было бы заработать», а еще в 2009 можно было бы сбер взять по 14
avatar
aldo, Да, частичка «бы» всегда всё портит.
А что толк проверять, если все равно для стратегии нужно будет робота писать. Без знания программирования все бесполезно.
avatar
demigivan, Зачем робота? У меня несколько стратегий и ни одного робота, всё руками исполняю
>всё руками исполняю
Зачем такой риск приносить в стратегию. Обиднее всего наверное отбраковать рабочую систему из-за «неидеальных рук»
avatar
Kestable, Последние полтора года всё отлично с руками.
Еще один грааль спален! :)
avatar
Грааль уже давно найдена — простая идея, железная реализация, время работоспособности системы…
Андрей Чарыков, Спасибо, Кэп!
avatar
Вот ещё занятный алгоритм: если рынок рос 2 часа подряд, то в дальнейшем он будет либо расти, либо падать, либо пилить на месте. Проверял на очень глубокой истории (где то с 1600-го года). Результат стопроцентный.
Очень понравилась статья автора, так что не обижайтесь на лёгкую иронию))))

теги блога Иван Коваль-Зайцев

....все тэги



UPDONW
Новый дизайн