← Zurück

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

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

Год назад в Вконтаке я увидел скриншоты из Квика одного своего знакомого. На них была прибыль от сделки в 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.

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

Kommentare (8)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Bond
Bond

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

loop
loop

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

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

Bond
Bond

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

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

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

loop
loop

Bond:

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

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

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

Понятно.

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

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

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

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

VassilSanych
VassilSanych

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

Bond
Bond

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

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

Mikhail Sukhov
Mikhail Sukhov

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

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

VassilSanych
VassilSanych

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