AlgoTrading
AlgoTrading Блог компании StockSharp
17 декабря 2013, 12:36

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

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

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


После первых сделок на тестовом сервере, я понял, что с моими руками что-то не то))) Когда я видел, что график растет, я понимал, что нужно покупать, забивал настройки и периодически нажимал вместо «Покупать» на «Продавать». Или не ту цифру в суматохе прописывал! Пока все переустановишь и проверишь, уже собственно график туда и обратно три раза обернется. Ужас в общем! И как люди так торгуют?
Полез опять в интернет и нашел, что у Квика есть встроенный язык QPILE для совершения автоматических сделок по алгоритму. То, что мне нужно! Никакого бездумного клацанья по мышке, машина не ошибается! Полез в документы и руководства.
Как же все сложно… Я в школе Паскаль с трудом сдавал на уроках информатики… И как это давно было…
Но упорство сделало свое дело и через месяц не без помощи такой-то матери, смог запустить свой первый алгоритм! Радости моей не было предела!)
Рассказ нашего алготрейдера S#
 
Постепенно код усложнялся и вскоре перевалил за тысячу строк! Я использовал кучу индикаторов и однажды заметил, перематывая свою программу, что собственно забыл, чего искал в том месте программы, пока перематывал код. Так разросся код и стал сложным в восприятии. Потом осознал, что-то, что я писал вчера, сегодня уже не работает. Рынок другой. Индикаторы ведут себя по-другому.
«Нужно сначала тестировать стратегии!» — подумал я. И опять начал гуглить. И чем больше я ковырялся в интернете, тем больше ухудшалось мое настроение. А в QPILEникаких тестеров то и нет. В Excele? Я еще не настолько отчаялся… Другие программы типа Wealth-Lab? Но там все на английском, платная, ничего не понятно и из него нельзя торговать… Как туда перевести стратегии? Опять по-новому переучиваться? Только не это…
Предпринял последнюю попытку написать рекурсивный цикл в QPILEдля тестирования! Та еще порнография! Сделал замкнутый цикл и в нем обращался к историческим свечкам и индикаторам, и тестировал свои алгоритмы. Вы не поверите! Работало! Выставлялись заявки, логировались сделки, ставились метки входа и выхода на графике! Но… Протестировать можно было не глубже чем на неделю, и тестирование стратегии за один торговый день на одних параметрах занимало 10-15 минут. И таймфрейм нельзя было сделать меньше минуты, и стратегии выполнялись по очереди, а не параллельно, если их было много, то до последней выполнение могло не дойти. Все сыпалось на глазах, ничего не хотело работать так как я хотел…
Я зашел в тупик. Понял, что зря потратил время и ничего у меня с моими алгоритмами не получается. Потом я узнал, что тот самый знакомый слил всю свою прибыль на паре неудачных сделок (хоть как-то приподняло настроение). Дурацкий трейдинг!..
Рассказ нашего алготрейдера S#
Как я решил эти проблемы благодаря парням из S# и их платформе для алготрейдинга!
 
 
С чего начать алготорговлю
 
В итоге я полностью разочаровался в QPILE, не хотел извращаться с Excel и собственно не знал, что мне делать дальше. В общем, решил пока приостановить все работы пока не соберусь с собственными мыслями. Но идея о торговле меня не оставляла, люди же как-то зарабатывают на этом хорошие деньги?
В интернете наткнулся на S#, посмотрел, почитал и пришел к выводу, что мне нужно двигаться в этом направлении. Русскоязычная платформа, специально заточенная под алготрейдинг, есть обучение, форум, техподдержка. После головной боли от QPILE напрочь отмел все остальные скриптовые языки и криворукие оболочки. Только низкоуровневый код, только тру алготрейдинг!
Но вот незадача… Я c QPILE еле совладал, а в С# вообще полный 0. Да, и цена на обучение кусается. Решил сначала немного подготовиться, купил Герберта Шилдта «Полное руководство C# 4.0» и почитывал на работе, когда выдавалось свободное время. Мой мозг разрывался на маленькие кусочки, полиморфизм, инкапсуляция, наследование… Пару раз бросал с мыслью: «Зачем я во все это ввязался!». Но через месяц заметил, что стал более-менее разбираться в элементарных вещах. Шилдт молодец! Не зря считается одним из лучших писателей книг по обучению программированию. Рекомендую!
Начав в общих чертах разбираться в логике построения программ и поняв, что это все можно читать до бесконечности, и пора уже изучать применительно к алготорговле, купил обучающие курсы S#.
Сначала прошел курс C#, если честно он был тяжелый. Насколько я знаю, они сейчас его переделали и выпустили новые более адекватные и понятные уроки. Разобрался с Visual Studio. И начал потихоньку изучать примеры из уроков. Собственно первые буковки и циферки кода я начал писать с этих примеров. Потому что если еще с Шилдта примеры пробовать писать так это точно на все про все одной жизни не хватит.
Сначала все шло очень тяжело, нехватка знаний в C# и специфика работы API S# давали о себе знать. Но постепенно, при возникновении проблем, я все реже и реже стал обращался в техподдержку, и научился решать задачи самостоятельно. Отельное спасибо Бухарину Ивану из техподдержки S# за помощь в изучении!
Так что все реально, нужно идти от простого к сложному и все получится!
А теперь перейдем непосредственно к сути статьи. Что нам необходимо для алготорговли? Как вообще все это происходит? Какие модули и в какой очередности создавать?
Оговорюсь сразу, в своих статьях я буду затрагивать чисто технические моменты алготорговли, супер профитных стратегий и граалей не будет. Ну, может если только в более поздних статьях.
Ниже представлена общая комплексная схема работы моих приложений для анализа, тестирования и оптимизации стратегий:
Рассказ нашего алготрейдера S#
 
«АНАЛИЗАТОР» — приложение с графическим интерфейсом WPF и графиками Chart для визуализации и анализа стратегий, проверки на работоспособность стратегий.
«ОПТИМИЗАТОР» — консольное «производительное» приложение для тестирования стратегий.
«РОБОТ» – непосредственно торговый робот в который передается уже готовая стратегия для торговли на Бирже.
«Исторические данные» – хранилище исторических данных.
«Хранилище стратегий» – хранилище результатов тестирования «Оптимизатора» и «Анализатора», готовых стратегий и других параметров.
Исторические данные 
Алготрейдинг без бэктестинга не алготрейдинг! Прежде чем запускать алгоритм в работу его нужно проверить, протестировать. В этом огромное преимущество алгоритмической торговли!
Что нужно для тестирования? Это, конечно, исторические данные. В S# есть готовое решение S#.Data. С ее помощью закачал с сайта Финама исторические данные в бинарном формате. Сейчас у меня в хранилище исторических данных лежит более 400 тысяч файлов по разным инструментам, в каждом файле хранится информация о тысячах сделок. И все это занимает не более 10-11Гб на жестком диске.
Исторические данные заимели.
Теперь нам нужно их как-то визуализировать, научиться строить по ним свечные графики разных таймфреймов, индикаторы, выводить сделки на график и т.д.
Также нам нужно научиться тестировать стратегии, сохранять результаты тестирования и находить самую оптимальную стратегию.
Обо всем этом и многом другом вы сможете прочитать в моих следующих статьях)
Всем восходящего тренда! С уважением, Bond.

Бонд наш ученик!

Научиться алготрейдингу быстро
42 Комментария
  • shpek
    17 декабря 2013, 12:53
    Спасибо, очень интересно.Сам хочу заняться алготрейдингом, если честно, сомневаюсь, что получится.
  • Valeriy
    17 декабря 2013, 13:11
    Что то я не разделяю радости от S#, не иначе заказная статья :)
    • Mikhail Sukhov
      17 декабря 2013, 13:16
      Valeriy, вы наш пользователь? Что вас не устраивает?
      • alt
        17 декабря 2013, 13:28
        Mikhail Sukhov," Что вас не устраивает?"
        Та же Ваша Гидра как то уж оч.криво слеплена! Потратили кучу времени -так и не получили желаемый результат.
        И не мы одни такие «криворукие» оказались…
      • Valeriy
        17 декабря 2013, 13:32
        Mikhail Sukhov, не хочу разводить полемику, криво, не стабильно, если в двух словах
        • Mikhail Sukhov
          17 декабря 2013, 13:35
          Valeriy, это не полемика а сбор конкретики. В чем именно проблема. В последнее время много фантомных пользователей. Вот и уточняю.
  • Reaktor (The Catalyst)
    17 декабря 2013, 13:18
    Вы проделали достойную работу. Да и сама статья написана интерсно, мысль прервать чтение не возникала ни разу, что свидетельствует о том, что автор и здесь продвинулся, за что ему бы тоже следовало поблагодарить)
    Однако, наши возможности как трейдера, по прежнему остаются гораздо более продуктивными, чем программного алгоритма. И ничто не заменит в трединге — трейдера) =)
  • Lekrus
    17 декабря 2013, 13:21
    смысл то во всем этом? зарабатывать получается или нет?
  • Lasleon
    17 декабря 2013, 13:36
    Я тоже, как и автор, начинал с QPILE, но сейчас разочарован в этом кривом языке. Сколько слов было написано разработчикам об улучшении языка, т.к. даже мне, начинающему, было видно все баги языка. В итоге я его бросил, хоть и есть работающие роботы. А бросил потому что его явно не хватает для описания моих стратегий (вернее на нем написать можно, но программа перевалит за тысячу строк, а это лишнее время в обработке).
    Сейчас изучаю C#. Идет очень медленно, хоть за плечами Паскать и Купайл…
    Смотрел S# на их сайте. Их плюс в том, что многие библиотеки уже написаны, а в остальном… в остальном подтекст такой: приходите, платите, научим (((
    А мы САМИ-С-УСАМИ )))))
    • Mr. Bean
      17 декабря 2013, 13:39
      Lasleon, ну кажись для более сложных вещей в квике запилина поддержка луа, но сам я его не пробовал.
      • Lasleon
        17 декабря 2013, 13:44
        Mr. Bean, Луа смотрел, но решил незаморачиваться на ней… тотже купайл только в профиль
        • Sergey_P
          22 декабря 2013, 01:55
          Lasleon, луа намного гибче и проще купайла. Интуитивно понятное описание и вызов процедур. Нет ограничения на миним цикл 1сек. Есть визуализация и много другого. Купайл так до конца и ниасилил. Луа — влет ))
    • Mikhail Sukhov
      17 декабря 2013, 14:44
      Lasleon, если вы научитесь самостоятельно, то поверьте это будет замечательно. Большинство так и делает.

      Обучение нужно тем кто явно не тянет на самостоятельно или кто хочет ускорить процесс. Плюс оно дает техподдержку, которой у нас нет вообще. Мы даем бесплатно только платформу, примеры, документацию и площадку для обсуждений.
  • usertrader
    17 декабря 2013, 13:40
    AmiBroker надо было пробовать. На него есть руские доки. Из американских более менее адекватная программа. Или на худой конец Трейдматик с конструктором стратегий для совсем незнающих — там можно из конструктора сделать код на C#. Купайл это жесть. Он не предназначен по факту, что бы роботов писать. Это язык для написания дополнений в Квик.
  • Zuccer0
    17 декабря 2013, 13:46
    Я три раза начинал изучать, да все никак не до конца не довел, до сих пор не решил, что лучше самому изучить или найти прогера и написать и не загружаться изучением
    • Lasleon
      17 декабря 2013, 13:49
      Zuccer0/Андрей, прогер напишет, но он не всегда будет рядом… что бы уверенно работать с роботом — язык нужно учить самому
      • Zuccer0
        17 декабря 2013, 13:53
        Lasleon, Это и беспокоит, сколько не приходилось общаться с прогерами, единицы адекватны
        • Lasleon
          17 декабря 2013, 14:08
          Zuccer0/Андрей, у них свой собственный мир… их можно простить )))
          • Zuccer0
            17 декабря 2013, 14:16
            Lasleon, Боюсь что бы не заразится при изучении)
        • Mikhail Sukhov
          17 декабря 2013, 14:18
          Zuccer0/Андрей, пишите к нам на форум о соискательстве. Если у вас интересное предложение то вы найдете помощников.
  • SHCHUTUSHCHA
    17 декабря 2013, 14:15
    «я закончил технический факультет на инженера» Как же ты закончил, если не знал С#?
    • Lasleon
      17 декабря 2013, 15:39
      SHCHUTUSHCHA, я вот тоже на инженера закончил (МАИ), но мы все программы писали на Паскале… так что не все кто учится на инженеров изучают C# )))))
      • SHCHUTUSHCHA
        17 декабря 2013, 18:14
        Lasleon, у нас паскаль на 1 курсе был, в качестве ознакомительного языка.
        • Sergei789
          17 декабря 2013, 21:57
          SHCHUTUSHCHA, он и есть ознакомительный. Я с ним в средней школе разобрался, перед ассемблером
          жесть, я думал инженеры у нас другие…
          • SHCHUTUSHCHA
            17 декабря 2013, 23:36
            Sergei789, не смотря на то что у меня специальность инженерная, я скорее айтишник, видимо в этом различия
            • Sergei789
              17 декабря 2013, 23:50
              SHCHUTUSHCHA, я вообще экономист, но мы с друганом изучали в институте разные языки… да и матлаб, опять же
              короче, понятно, че у нас Протоны падают :0 если уж в МАИ…
              • SHCHUTUSHCHA
                18 декабря 2013, 00:10
                Sergei789, у нас матлаб входит в обязательную программу
        • 2153sved
          17 декабря 2013, 23:40
          SHCHUTUSHCHA, к Вам вопрос, нефть ниже 110, когда переворачиваться
          • SHCHUTUSHCHA
            18 декабря 2013, 00:09
            2153sved, когда дешево будет, тогда и переворачиваться
            • 2153sved
              18 декабря 2013, 00:12
              SHCHUTUSHCHA, как аналитик начали отвечать
              • SHCHUTUSHCHA
                18 декабря 2013, 00:34
                2153sved, я понятия не имею где оно перевернется. лично я шорты по нефти закрыл сегодня. в лонг пока не брал
  • Nemo_2000
    17 декабря 2013, 14:16
    Опять же, в подобных историях мне не понятен подход к задаче, то есть к прибыльной торговле. Думается, что плясать надо от рынка и от вашего понимания рынка. На кой чёрт тысячи стратегий и индикаторов тестить на истории, если и так понятно, что в боковике — стохастик, а в тренде что — то типа 1-2-3… В трейдинге вообще проблемы в большей степени связаны с поиском торговой идеи, чем с методом её реализации. А подход, описанный в посте, это замена алгоритмами того самого понимания… Я вот пишу роботов под свои идеи. Мне бы не помешал и С++ и всё остальное, за что просят денюшку. Но моё собственное понимание — это основа торговли и оно не стоит денег. Точнее его никто не предлагает мне продать :)

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн