Рассказ нашего ученика
Atom Ответить
17.12.2013




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


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

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

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


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

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

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

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


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


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

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

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

А теперь перейдем непосредственно к сути статьи. Что нам необходимо для алготорговли? Как вообще все это происходит? Какие модули и в какой очередности создавать?
Оговорюсь сразу, в своих статьях я буду затрагивать чисто технические моменты алготорговли, супер профитных стратегий и граалей не будет. Ну, может если только в более поздних статьях.
Ниже представлена общая комплексная схема работы моих приложений для анализа, тестирования и оптимизации стратегий:

"АНАЛИЗАТОР" - приложение с графическим интерфейсом WPF и графиками Chart для визуализации и анализа стратегий, проверки на работоспособность стратегий.
"ОПТИМИЗАТОР" - консольное "производительное" приложение для тестирования стратегий.
«РОБОТ» – непосредственно торговый робот в который передается уже готовая стратегия для торговли на Бирже.
«Исторические данные» – хранилище исторических данных.
«Хранилище стратегий» – хранилище результатов тестирования «Оптимизатора» и «Анализатора», готовых стратегий и других параметров.

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

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

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

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




8 Ответов
Bond

Фотография
Курсы
Дата: 17.12.2013
Ответить


Хорошее фото) На пол статьи)
Спасибо:

loop

Фотография
Дата: 18.12.2013
Ответить


Заинтриговали, заинтриговали, всё, теперь делитесь тем о чём так много и упорно заявляете, а не то я лично очень обижусь, если это только чтоб подразнить. Где этот оптимизатор?

Либо пишите большими буквами: "ВНИМАНИЕ ПЛАТНОЕ!!!" Чтоб не вводить народ в заблуждение.
Спасибо:

Bond

Фотография
Курсы
Дата: 20.12.2013
Ответить


loop Перейти
Заинтриговали, заинтриговали, всё, теперь делитесь тем о чём так много и упорно заявляете, а не то я лично очень обижусь, если это только чтоб подразнить. Где этот оптимизатор?

Либо пишите большими буквами: "ВНИМАНИЕ ПЛАТНОЕ!!!" Чтоб не вводить народ в заблуждение.


Где вы видите, чтобы я что-то продавал?
Если честно мне непонятно откуда такой ажиотаж.
Что вам мешает написать их самостоятельно? Никакого ноухау в коде нет. Все построено на стандартном функционале. К тому же на сервере лежат базовые версии этих программ. Допилите как вам нравится. Если не получается, пройдите обучающие курсы.
Куда интереснее методы и идеи, которые я применял для оптимизации и тестирования, но об этом спрашивают только единицы...
Спасибо:

VassilSanych

Фотография
Дата: 20.12.2013
Ответить


"Оптимизатор" - смелое название :)
Потому что именно с оптимизацией на S# пока косяк. Производительность тестирования слишком низкая для нужд оптимизации.
Спасибо:

Bond

Фотография
Курсы
Дата: 20.12.2013
Ответить


VassilSanych Перейти
"Оптимизатор" - смелое название :)
Потому что именно с оптимизацией на S# пока косяк. Производительность тестирования слишком низкая для нужд оптимизации.


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

loop

Фотография
Дата: 20.12.2013
Ответить


Bond Перейти
loop Перейти
Заинтриговали, заинтриговали, всё, теперь делитесь тем о чём так много и упорно заявляете, а не то я лично очень обижусь, если это только чтоб подразнить. Где этот оптимизатор?

Либо пишите большими буквами: "ВНИМАНИЕ ПЛАТНОЕ!!!" Чтоб не вводить народ в заблуждение.


Где вы видите, чтобы я что-то продавал?
Если честно мне непонятно откуда такой ажиотаж.
Что вам мешает написать их самостоятельно? Никакого ноухау в коде нет. Все построено на стандартном функционале. К тому же на сервере лежат базовые версии этих программ. Допилите как вам нравится. Если не получается, пройдите обучающие курсы.
Куда интереснее методы и идеи, которые я применял для оптимизации и тестирования, но об этом спрашивают только единицы...


Понятно.

Интересовало именно готовое решение представленное в нескольких статьях, даже если бы я «прошёл курсы», зачем скажите мне снова делать тоже самое, что очень косвенно относится к торговле, почему бы не скачать Ваше, или не купить у Вас готовое, за вменяемые деньги? Мне торговать нужно, стратегии делать и их проторговывать, а то что Вы сотворили это должны были сделать ребята из S#, так же как это сделали Wealthсовцы.

Про что спрашивать? Монте Карло описан в сетях, или Вы изобрели что то принципиально новое? Если принципиально новое то расскажите конечно, раз предлагаете:)

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

А теперь получается что «пройти курсы» нужно не для того что бы торговать, а что бы писать свою инфраструктуру как в Wealthсе и тп. Cогласитесь это многих отпугнёт так как времени у многих нет на это, особенно когда есть WealthLab.
Спасибо: Иван З.

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 20.12.2013
Ответить


VassilSanych Перейти
Производительность тестирования слишком низкая для нужд оптимизации.


Да ладно низкая. На стаканах и тиках "аналогичный" софт тестирует не быстрыее. А на свечках у нас как у всех - шустро и не точно.
Спасибо:

VassilSanych

Фотография
Дата: 22.12.2013
Ответить


Михаил Сухов Перейти
А на свечках у нас как у всех - шустро и не точно.

Амиброкер год минуток в системе средней сложности (пара-тройка индикаторов + сложные стопы + рискменеджмент + 30 разных статистических показателей) отрабатывает за полсекунды.
Сколько на S#?

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy