Пишем тестер-оптимизатор своими руками! часть 2

Первая версия тестера-оптимизатора «Монте-Карло».
Классический поиск максимума.
За основу своего первого тестера-оптимизатора решил взять логику из статьи «Нелинейная стохастическая оптимизация методом Монте-Карло»  из сборника Санкт-Петербургского Государственного Университета. Кого интересует это направление, советую почитать их сборники. Много интересных разноплановых статей про оптимизацию в самых разных областях.

Так вот. Суть метода в том, что мы создаем многомерную матрицу, состоящую из разновидностей стратегий с разными параметрами. Выбираем из этой матрицы случайным образом стратегии, тестируем их и определяем самую прибыльную стратегию. За критерий прибыльности взял мат ожидание. А так можно комплексный параметр составить. Принимаем точку с этой стратегий в матрице за эпицентр и режем края матрицы максимально удаленные от эпицентра на заданную нами глубину. Тем самым уменьшаем область выборки и по-новому тестируем из полученной уменьшенной
Читать дальше →

Пишем тестер-оптимизатор своими руками! часть 1

                                                    Введение.

                                   Методы оптимизации стратегий
Пишем тестер-оптимизатор своими руками! часть 1
     Как вы уже поняли из предыдущей статьи, оптимизация методом перебора не эффективна. Учитывая скорости тестирования, нецелесообразно перебирать все возможные параметры.
     Есть, конечно, уже готовые производительные оптимизаторы стратегий в других программных продуктах. Но как в них перевести свои стратегии? Все ли может этот тестировщик, что нам нужно? Будут ли тесты отражать реальность? Как
Читать дальше →

Фу, опять этот форекс!


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

За несколько недель я заработал 200% к счету, мне понадобились деньги, да и хотелось их просто подержать. =)
Мне дали вывести деньги, но после того, как я снова закинул деньги на счет, мне пришлось нажить по 10 раз на кнопку купить, перед тем, как мне давали цену, такого раньше не было и я решил на долгое время, что мне с форексом не по пути. Однако, как я уже писал, желательно диверсифицироваться разными рынками, а у форекса помимо всех его минусов нет утренних гэпов, что заманчиво! И в этот раз негативный осадок с прошлого опыта заставил меня тщательнее подойти к


Читать дальше →

Самая первая торговая система от Kazai_Mazai

Это была самая первая рабочая системка, изобретенная в далеком сентябре 2010 года. Заставляет улыбаться сейчас, но тогда было круче=) Шли лихие годы торговли на форексе и мт4. Теперь, когда уже можно с полной уверенностью сказать, что она сдохла, я о ней и расскажу.
 
В те времена общественность была настроена достаточно радикально против использования индикаторов в торговле. Как, впрочем, и сейчас.
Я тоже никогда не был приверженцем, но за неимением никаких других идей… на безрыбье, как говорится.
 
Стратегия была найдена абсолютно случайно. К оптимизаторам тогда, как и сейчас, отношение было еще хуже, чем к индикаторам.
Гипнотизировал график, заметил нюансик на EURUSD, потестил. Наобум подставленные параметры давали хороший PF. Далее выяснилось, что стабильные параметры были почти что любые.
 
Для начала маленький экскурс в арифметику.
 
Хотя я уверен, что в трейдерской среде все уже сыты по горло этими «терминами».


Есть мат. ожидание( aka


Читать дальше →

БУДЬ МУДРЕЙ! Определяй кол. контрактов правильно!



 Когда мы имеем больше одной стратегии, в которых уверены, возникает вопрос каким количеством лотов торговать. На данный вопрос еще в 50-60х годах попробовал ответить Гарри Марковиц, за что в 1992 году получил нобелевскую премию.


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


 Оптимизация портфеля — процесс относительно несложный, если использовать специальные программные средства, такие как матлаб, или R. В обоих языках в свободном доступе можно скачать оптимизаторы инвестиционных портфелей, в R, их несколько. Мне как не профессиональному программисту довольно сложно перекидываться с одного языка на другой, не освоив толком C# и S# (до сих пор приходится пересматривать курсы). Поэтому,  реализация простого механизма подбора оптимального


Читать дальше →

Рассказ нашего ученика 2

В прошлой статье рассмотрели общую схему создания и проектирования системы для алгоритмической торговли на бирже. Рассмотрим более подробно работу каждого модуля.
 
Как получить исторические данные для работы мы уже знаем. Сейчас рассмотрим необходимый минимальный функционал для своего терминала визуализации.
 
Ниже буду приводить скриншоты моей последней версии «Анализатора», более раннюю версию можно скачать с серверов S#. Просто опишем, что из себя представляет система визуализации стратегий.



Задаем диапазон тестирования, таймфрейм и тестируемый инструмент. Как дополнительно, но не обязательно можно задать комиссию, начальный депозит и др. настраиваемые параметры.
 
Строим свечной график, также выводим индикаторы. Снизу строим график Эквити. В данном примере для оценки стратегии я использую свой расчет Профита. В стандартной версии графика PnL от S# используется немного другой вариант, более приспособленный для торговли в реальном времени с расчетом


Читать дальше →

Рассказ нашего алготрейдера!




Как я стал алготрейдером


Год назад в Вконтаке я увидел скриншоты из Квика одного своего знакомого. На них была прибыль от сделки в 34 тысячи рублей. Потом он еще парочку выложил с прибылью в несколько десятков тысяч рублей. Парень учился на экономическом — гуманитарий, а я закончил технический факультет на инженера. И вот сидя на заводе с зарплатой в 25 тысяч рублей, я задумался… «А какого собственно хрена, я 6 лет учил сопромат, теормех, высшую математику? Когда обычный студент с эконома за пару минут заработал больше, чем я за месяц въе**** на заводе???» Эти мысли не давали мне покоя, и я решил разобраться с этой несправедливостью) Нет, я не пошел и не набил ему морду))) А полез в гугл читать, что такое акции и как торгуют на бирже!


После первых статей в интернете понял, что ничего сложно в этом нет. Ставишь Квик, регистрируешься у брокера и покупаешь и продаешь акции одним кликом мышки! Но тогда я еще не представлял на сколько глубока кроличья нора…


После первых сделок на тестовом сервере, я понял, что с моими руками что-то не то))) Когда я видел, что график растет, я понимал, что нужно покупать, забивал настройки и периодически нажимал вместо «Покупать» на «Продавать». Или не ту цифру в суматохе прописывал! Пока все переустановишь и проверишь, уже собственно график туда и обратно три раза обернется. Ужас в общем! И как люди так торгуют?


Полез опять в интернет и нашел, что у Квика есть встроенный язык QPILEдля совершения автоматических сделок по алгоритму. То, что мне нужно! Никакого бездумного клацанья по мышке, машина не ошибается! Полез в документы и руководства.


Как же все сложно… Я в школе Паскаль с трудом сдавал на уроках информатики… И как это давно было…


Но упорство сделало свое дело и через месяц не без помощи такой-то матери, смог запустить свой первый алгоритм! Радости моей не было предела!)


 





 



Постепенно код усложнялся и вскоре перевалил за тысячу строк! Я использовал кучу индикаторов и однажды заметил, перематывая свою программу, что собственно забыл, чего искал в том месте программы, пока перематывал код. Так разросся код и стал сложным в восприятии. Потом осознал, что-то, что я писал вчера, сегодня уже не работает. Рынок другой. Индикаторы ведут себя по-другому.


«Нужно сначала тестировать стратегии!» — подумал я. И опять начал гуглить. И чем больше я ковырялся в интернете, тем больше ухудшалось мое настроение. А в QPILEникаких тестеров то и нет. В Excele? Я еще не настолько отчаялся… Другие программы типа Wealth-Lab? Но там все на английском, платная, ничего не понятно и из него нельзя торговать… Как туда перевести стратегии? Опять по-новому переучиваться? Только не это…


Предпринял последнюю попытку написать рекурсивный цикл в QPILEдля тестирования! Та еще порнография! Сделал замкнутый цикл и в нем обращался к историческим свечкам и индикаторам, и тестировал свои алгоритмы. Вы не поверите! Работало! Выставлялись заявки, логировались сделки, ставились метки входа и выхода на графике! Но… Протестировать можно было не глубже чем на неделю, и тестирование стратегии за один торговый день на одних параметрах занимало 10-15 минут. И таймфрейм нельзя было сделать меньше минуты, и стратегии выполнялись по очереди, а не параллельно, если их было много, то до последней выполнение могло не дойти. Все сыпалось на глазах, ничего не хотело работать так как я хотел…


Я зашел в тупик. Понял, что зря потратил время и ничего у меня с моими алгоритмами не получается. Потом я узнал, что тот самый знакомый слил всю свою прибыль на паре неудачных сделок (хоть как-то приподняло настроение). Дурацкий трейдинг!..






Как я решил эти проблемы благодаря парням из S# и их платформе для алготрейдинга!


С чего начать алготорговлю


В итоге я полностью разочаровался в QPILE, не хотел извращаться с Excelи собственно не знал, что мне делать дальше. В общем, решил пока приостановить все работы пока не соберусь с собственными мыслями. Но идея о торговле меня не оставляла, люди же как-то зарабатывают на этом хорошие деньги?


В интернете наткнулся на S#, посмотрел, почитал и пришел к выводу, что мне нужно двигаться в этом направлении. Русскоязычная платформа, специально заточенная под алготрейдинг, есть обучение, форум, техподдержка. После головной боли от QPILEнапрочь отмел все остальные скриптовые языки и криворукие оболочки. Только низкоуровневый код, только тру алготрейдинг!


Но вот незадача… Я cQPILEеле совладал, а в С# вообще полный 0. Да, и цена на обучение кусается. Решил сначала немного подготовиться, купил Герберта Шилдта «Полное руководство C# 4.0» и почитывал на работе, когда выдавалось свободное время. Мой мозг разрывался на маленькие кусочки, полиморфизм, инкапсуляция, наследование… Пару раз бросал с мыслью: «Зачем я во все это ввязался!». Но через месяц заметил, что стал более-менее разбираться в элементарных вещах. Шилдт молодец! Не зря считается одним из лучших писателей книг по обучению программированию. Рекомендую!


Начав в общих чертах разбираться в логике построения программ и поняв, что это все можно читать до бесконечности, и пора уже изучать применительно к алготорговле, купил  обучающие курсы S#.


Сначала прошел курс C#, если честно он был тяжелый. Насколько я знаю, они сейчас его переделали и выпустили новые более адекватные и понятные уроки. Разобрался с VisualStudio. И начал потихоньку изучать примеры из уроков. Собственно первые буковки и циферки кода я начал писать с этих примеров. Потому что если еще с Шилдта примеры пробовать писать так это точно на все про все одной жизни не хватит.


Сначала все шло очень тяжело, нехватка знаний в C# и специфика работы APIS# давали о себе знать. Но постепенно, при возникновении проблем, я все реже и реже стал обращался в техподдержку, и научился решать задачи самостоятельно. Отельное спасибо Бухарину Ивану из техподдержки S# за помощь в изучении!


Так что все реально, нужно идти от простого к сложному и все получится!


 


А теперь перейдем непосредственно к сути статьи. Что нам необходимо для алготорговли? Как вообще все это происходит? Какие модули и в какой очередности создавать?


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


Ниже представлена общая комплексная схема работы моих приложений для анализа, тестирования и оптимизации стратегий:


 




«АНАЛИЗАТОР» — приложение с графическим интерфейсом WPF и графиками Chart для визуализации и анализа стратегий, проверки на работоспособность стратегий.


«ОПТИМИЗАТОР» — консольное «производительное» приложение для тестирования стратегий.


«РОБОТ» – непосредственно торговый робот в который передается уже готовая стратегия для торговли на Бирже.


«Исторические данные» – хранилище исторических данных.


«Хранилище стратегий» – хранилище результатов тестирования «Оптимизатора» и «Анализатора», готовых стратегий и других параметров.


Исторические данные


Алготрейдинг без бэктестинга не алготрейдинг! Прежде чем запускать алгоритм в работу его нужно проверить, протестировать. В этом огромное преимущество алгоритмической торговли!


Что нужно для тестирования? Это, конечно, исторические данные. В S# есть готовое решение S#.Data. С ее помощью закачал с сайта Финама исторические данные в бинарном формате. Сейчас у меня в хранилище исторических данных лежит более 400 тысяч файлов по разным инструментам, в каждом файле хранится информация о тысячах сделок. И все это занимает не более 10-11Гб на жестком диске.


Исторические данные заимели.


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


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


Обо всем этом и многом другом вы сможете прочитать в моих следующих статьях)




Всем восходящего тренда! С уважением, Bond.


Научиться алготрейдингу быстро


Доступна запись вебинара Торговые стратегии и командная работа с S#

Здравствуйте.

6 ноября состоялся бесплатный вебинар на тему «Торговые стратегии и командная работа с S#». Спасибо всем участникам вебинара, в том числе за интересные вопросы после сессии.

Мы рады сообщить, что для просмотра доступно видео вебинара.



Кроме того, вы можете загрузить проекты которые были рассмотрены на вебинаре.
Все подробности вы можете найти в статье Хранилище стратегий на нашем сайте.

В рамках вебинара были рассмотрены следующие основные темы:


  • Хранилище стратегий.
  • Работа с сервисом TFS.

Вебинар торговые стратегии и командная работа с S#

Друзья, приглашаем вас на вебинар «Торговые стратегии и командная работа с S#». Вебинар будет проходить 6 ноября в 19:00.
Узнать подробности и зарегистрироваться в вебинаре вы можете здесь.

На данный момент у нас на сервере собралось достаточно много разработок, которыми мы бы хотели поделиться с коллегами. Плюс мы хотим показать, как можно работать с нашим сервером TFS.
А именно:
  • Как подключаться к хранилищу роботов.
  • Скачивать робота на свой компьютер.
  • Изменять его и делиться с коллегами.
  • Участвовать в обсуждения и искать единомышленников.

 



Читать дальше →

Анализируем стаканы из Plaza!

Анализируем стаканы из Plaza!
несложный проект по выводу стаканам на чарты S#

Наша команда открывает серию простых ботов/проектов (S#.Api). Простые и сложные версии будут лежать у нас на сервере по обучению. Как это было:

 


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


  1. Подгружает хранилище стаканов, закаченное из плазы, с помощью гидры
  2. Выводит простые индикаторы с расчетом по стаканам на чарт
  3. Можно поменять формулу и сделать свой аналайзер стакана.
Проект простенький, данные сразу лежат в готовом варианте:
Анализируем стаканы из Plaza!

Скачать исходники можно через наше хранилище на TFS (бесплатно), подключиться к публичному серверу!
Читать дальше →

Что такое алготрейдинг (запись вебинара)

Что такое алготрейдинг?

Вопреки распространенным стереотипам, робот — это вовсе не мифическая программа, которая черпает деньги с рынка, отправляя при этом свои сигналы настолько быстро, что обычному трейдеру никак с этим не совладать.



 


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

План занятия:


  1. Теория системной торговли. Риски ручной торговли.
  2. Почему стоит торговать системно.
  3. Что такое алготрейдинг и какие бывают роботы.
  4. Примеры торговых роботов на софте StockSharp (S#).

Читать дальше →