Блог им. iSly

Помогите с написанием торгового робота

    • 10 ноября 2014, 17:52
    • |
    • iSly
  • Еще
Добрый день!
Начну сразу с сути. Начал изучать программирование. Цель — написание торговых роботов. Опыта в программировании никакого. Остановился на Pythonе. Читаю, изучаю, пытаюсь что то писать. Что-то даже автоматизировал для своей основной работы — простейшие вещи ) — благо таких примеров в сети полно. Но как все это дело приладить к трейдингу вообще не понимаю. Примеров посмотреть негде. Как подключиться к квику, получить котировки, накапливать историю, сохранять ее, отправлять заявки и т.д. В связи с этим вопрос: может кто-либо поможет с этим разобраться или даст простого робота (без логики принятия решений) для самостоятельного изучения. Естественно все это на возмездной основе. Очень надеюсь что здесь есть люди готовые помочь. Для дальнейшего общения пишите, пожалуйста, в личку.

P.S. Если не сложно поставьте плюс что бы вывести на главную, а то хорошие люди могут и не увидеть.
★6
62 комментария
начало большого пути…
avatar
почему питон?
avatar
krasoffka, Да он вроде как довольно простой относительно всяких там си и си плюсов и т/д/ плюс это ООП А на самом деле мне просто его посоветовали и сказали что это самое то))
avatar
iSly, попробуйте AFL. Посоветовали вам неправильно. Не для новичков выбранный язык.
avatar
krasoffka, Вот и я про тоже.
Забудь про питон и иди сюда kbrobot.ru/forum/
Куча примеров
kbrobot.ru, спасибо посмотрю
avatar
krasoffka, спасибо буду смотреть
avatar
Не тот язык выбрал. Лучше C# учи.
Пример: www.itinvest.ru/editorfiles/File/smartcom/TestConnect_source.zip
avatar
professor facepalm, я начинал со сток шарпа был такой персонаж марсель тазетдинов в складчине мы учились но он потом слился и киданул всех. Спасибо за ссылку, буду смотреть обязательно. Может и на си шарп перейду )
avatar
iSly, то что он в складчине дал, вы все изучили? на чем строятся ваши системы? на сколько сложен их уровень? на той же складчине есть ТСлаб с апи, смотря что вы собираетесь строить, может и начать стоит с тслаба, он очень не плох…Ваш пост слишком пустой, даже если и хочется посоветовать то непонятно что вам интересно, опыт, навыки и тд, а писать про все сами понимаете нет желания.
avatar
krasoffka, По языку там был вводный курс. А примеров конкретных роботов так и не получили к сожалению. ТС лаб доже думал, использую его для проверки простых стратегий. А мои стратегии не сильно и сложны. Основа-парный трейдинг но с моими примочками. Сложноватые на опционоах. Но вот сегодня прочитал что Каленкович и ТС лаб все таки реализовали опционный модуль. Может быть и действительно к ТС лабу повнимательнее присмотреться
avatar
«Начну сразу с сути. Начал изучать программирование. Цель — написание торговых роботов. Опыта в программировании никакого. „
Начать нужно с торговой идеи, потом уже ее реализовывать.
avatar
А по сути, если еще не программируете:
начните с Quik-DDE-Excel,
разберетесь сначала с экспортом DDE, простейшими алгоритмами, обработкой, постановкой заявок, потом создадите свой DDE сервер на том же C#, и свое приложение и т.д. Сразу объять всё, может быть затруднительно.
avatar
AlexeyT, да идеи то есть. Они не очень и сложны. Вот как их реализовать непонятно пока что. А в ексель через дде я вывожу данные на данном этапе, он отображает их считает то что мне надо а дальше я сам руками заявки ставлю это же не дело))
avatar
iSly, trans2quik.dll прикручивайте и всё
avatar
AlexeyT, Квик + ДДЕ + Эксель — это адская трешовая связка на мой взгляд, никто еще не написал что ему удалось собрать из нее стабильный автомат для торговли.
avatar
SergeyEgorov, именно про это я везеде тоже читал
avatar
SergeyEgorov, нормальная связка, только надо знать особенности и понимать как их обходить.
Впрочем это верно (связка и особенности) про любое непрямое подключение.
avatar
AlexeyT, я читал твой блог Опционная торговля на QUIK-Excel (VBA) — II он у меня в закладках. Мощно конечно, ничего не скажешь. Буду двигаться в твоем направлении (в плане развития). Но я не программер. Наверное пока тс лаб попользую а параллельно что буду другое делать может даже и эксель, он ближе)
avatar
AlexeyT, А чем Quik-DDE-Excel лучше Quik-Qpile?
avatar
Sergey, удобством и простотой реализации: smart-lab.ru/blog/175461.php
avatar
AlexeyT, да ну? имхо, проще на QLUA писать, проще не придумаешь. А вообще по правильному с# + ритмик или cqg и свой софт на cme
avatar
AleksK, да
avatar
Там вверху AFL посоветовали (это язык встроенный в amibroker).
Помимо него можно также посмотреть TradeScript:
habrahabr.ru/company/itinvest/blog/214601/
habrahabr.ru/company/itinvest/blog/237689/
avatar
professor facepalm, у меня квик очень привык к нему хотя он конечно и деревянный (как и я) может позже и к амиброкеру присмотрюсь
avatar
Алексей Ван, очень надеялся что Вы ответите. Спасибо отдельное за майнеры. Не каждый готов такие вещи выкладывать. Смело, хотя критика в Ваш адрес присутствует (пустая на мой взгляд) посмотрю на ссылки обязательно
avatar
тслаб
avatar
ves2010, очень сильно присматриваюсь еще и поционы там появились наконец то. А ты я так понял судя по постам только им пользуешься, хватает?
avatar
iSly, дружище я помогу, читай:
forum.qlua.org
ilovelua.narod.ru/about_lua.html
ilovelua.wordpress.com/
Там все есть.

Тут еще чел под ником orekton выкладывал уроки по Qlua, поищи его…
avatar
nemilen, спасибо большое буду смотреть обязательно
avatar
Начнем с того, что это большой и длинный путь. В идеале тебе должно быть вообще фиолетово на каком языке писать. Скажу на своем примере. Я все тестирую в амиброкере, там свой язык. Что бы закачать туда историю использую javascript. Ну а сами роботы работают в транзаке, опять же и там свой язык. А вся аналитика моих реальных сделок, заявок, стопов и результатов торговли в 1с
avatar
Вобщем если че — пиши в личку
avatar
Cheshirscy, спасибо но такие объемы как 3 языка не потяну. Я семейный человек))
avatar
у человека терминал quik, поэтому рекомендую ему однозначно qlua
avatar
Скажу тебе как программист с конекторами к плазе квику метатрейдеру и тслабу и собственной системой тестинга.

Пиши под метатрейдер лучше 5, его брокеры выдают некоторые к бирже.
Да там будут левые данные часто, не будет ленты сделок и опционов.
НО
Зато 90% сделано за тебя уже + готовые примеры в справке+ встроенный тестер + глюки легко ловить, зарабатывать за счёт умения кодить ты не сможешь по началу точно, потом как освоишся перейдёшь на что то нормальное, а быстро начать изучение лучше там.

Под что начинать писать не надо точно это под Квик. Это сложно и долго, и всё твоё время уйдёт на решение программистских проблем а не сути. Там можно написать либо чтото очень простое, либо надо потратить крайне много времени вникуда чтобы вышло что то нормальное.

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

И ещё момент.
Если у тебя нет чёткой системы, лучше не начинай кодить, а посиди сперва и сделай её, программирование с 0 это сотни часов вникуда пока разберёшься.
avatar
farok, спасибо. есть четкие страты я давно на рынке. Никак все не решался заняться алгоритмизацией. Но время пришло. Не могу уже руками и постоянно пялиться в монитор (тупо жалко времени и не всегда оно есть). Понял уже тоже, что по началу крутовато замазнулся.Начну наверное опять с ТС ЛАба, а параллельно буду изучать и пробывать посерьезнее что то свое (в плане программ)
avatar
farok, С++ и C# похожи не более чем синтаксически. Программируя на C++ у программиста значительно больше возможностей прострелить себе ногу, если он не представляет себе как вообще происходит исполнение программ и что такое работа с памятью. Получить из программы на C# segmentation fault практически невозможно и почти любой говнокод будет как-нибудь исполняться, при программировании на C++ все новички начинают с segmentation fault. В написанной на C++ программе никакая среда исполнения не будет за программистом «мусор собирать».
avatar
SergeyEgorov, Массивы заданного заранее размера присутствуют в обоих вариантах, новичок всё равно не сможет круто пользоваться памятью. Зато потом перспективы на порядок лучше.
avatar
farok, Массивы наверное есть в любом языке программирования. Я когда начинал программировать первого робота, мне хотелось побыстрее его торговать поставить, поэтому я договор заключил с брокером, который API предоставлял, ну а язык программирования выбирать не пришлось, кроме C# ничего не предлагалось.
avatar
Вот дружище обратись к этому парню он напишет робот sib-algo.ru/ и передавай привет от нас
avatar
TRADERS GLOBUS, да это хороший парень, спасибо
avatar
AFL и амиброкер лучший выбор для новичка. Простой функциональный язык, интерфейс к квику и уйма готовых систем. Лучше него только MQL по количеству написанных систем, но и язык сложнее и интерфейс к российскому рынку только для старого терминала.
avatar
Спасибо всем большое за Ваши мысли, пожелания, рекомендации. Очень полезно для меня. Все еще раз перечитаю завтра и буду действовать.
avatar
Я не люблю связки «что-то и терминал», не встречал еще ни одной такой чтобы была надежной. То рыночные данные пропадут, то заявка не ушла, то еще какая-нибудь хрень. Чем больше компонентов в системе, тем выше вероятность отказа. Такие вещи можно практиковать на начальном этапе, когда только присматриваешься к «рыночному программированию». В алгоритмической торговле есть масса тонких моментов, особенно если практиковать стопы, и если торговать волатильные инструменты. Сразу возникает необходимость оперативно и надежно ставить, снимать, двигать заявки в зависимости того, что там на рынке намечается. Если есть ощущение что алгоритмической торговлей будешь заниматься всерьез и долго, лучше сразу начать постепенно разбираться с каким-нибудь более менее приличным API и нормальным языком, а скриптовые вещи использовать как предварительное знакомство с рыночным программированием.

P.S. На Python-е, если я правильно помню можно торговать америку через Quantopian, если есть договор к примеру с IB. Там же и стратегии тестировать можно.
avatar
Вы правильно выбрали python, он действительно простой и позволит отвлечься от технических деталей и полностью сосредоточится на самой стратегии, а не на технических особенностях терминала. Обычно торговые роботы состоят из нескольких частей, минимально связанных друг с другом:

— блок получения котировок
— блок принятия решения
— блок определения параметров сделки в соответствии с риск менеджментом
— блок управления ордерами (отправка и исполнение)

Конечно все интересно и хочется со всем разобраться, однако нужно сфокусироваться на самых важных вещах, а именно на блоке принятия решений, иначе есть риск, что вы потратите время на то, что бы разобраться с особенностями терминала, но это никак не поможет вашей торговле. Более того, блок принятия решений как правило делают независимым от терминала, что бы можно было перенести на другого брокера легко. Напишите как с Вами связаться — я могу помочь с python и разработкой стратегии — бесплатно, я Вам дам скрипты для теста стратегий — это существенно сэкономит Вам время. Вообще старайтесь избегать работы, которая «около» Вашей основной задачи, а в данном случае Ваша задача — именно стратегия, а не отправка ордеров. Удачи и помните, сложные проценты и положительное мат. ожидание — самые важные вещи.
avatar
sheffield, не смог письмо отправить, не хватает рейтинга. Рискну почту оставить, а вдруг не заспамят i.slyusarev@mail.ru напишите, пожалуйста, а там и определимся как более продуктивно пообщаться. И, конечно, спасибо за желание помочь.
avatar
iSly, подскажите на чем остановились — что выбрали в итоге? актуальный подняли вопрос. в python много библиотек с математикой, что наверное плюс для анализа и теста…
avatar
wyg, несмотря на советы не использовать питон я все таки на нем остановился. Пока правда из-за работы не получается в плане роботов работать, хватет времени только на изучение самого языка
avatar
sheffield, нет возможности написать вам письмо — нет рейтинга, напишите пожалуйста как с вами можно связаться по поводу python в трейдинге?
avatar
Не тратьте время зря. Не заработаете и выучите не лучший язык.

Программирование это сложное ремесло. Настолько сложное что хорошо программируя у вас не останется сил на разработку каких либо стратегий и пр. А программируя плохо вы обречены на постоянный бег по граблям. Поверьте, программистам не зря хорошие деньги платят за нажимание кнопок )
Кубики вам в руки!
avatar
Изико, Это да программисты не просто так получают крайне неплохо где бы они не работали, геморой тот ещё.
Времени на исправление всяких ляпов будет потрачено больше чем на торговлю.
Просто чтоб стартануть могут уйти сотни часов.
avatar
С#
avatar
Здесь немножко про python для трейдинга:
ubertrader.org/tag/python/

а здесь видео про python на английском
www.youtube.com/user/sentdex/playlists
avatar
Python только пробую, C# уже немножко знаю...
сам думал про использование Python, возникает вопрос с инфраструктурой, где брать коннекторы к бирже...
сам скорее всего буду использовать его для математических расчетов.
На другом портале нашел:
www.bot4sale.ru/blog-menu/ami/amibroker-list/142-amisharp.html
библиотека для работы с терминалом Quik,
У автора эта библиотека в связке с AmiBroker работает.
В AmiBroker свой встроенный векторный язык AFL + можно использовать синтаксис похожий на C#
Наверное библиотеку эту AmiSharp можно будет и на Python использовать.
avatar
Еще находил Zipline is a Pythonic algorithmic trading library github.com/quantopian/zipline
avatar
Еще в качестве альтернативы, возможно будет интересно,
здесь исходники C# под SmartCom: bitbucket.org/SazanProject
на библиотеку эту наткнулся здесь на этом портале,
автор smart-lab.ru/my/SergeyEgorov/blog/all/
есть виде по использованию библиотеки:
www.youtube.com/user/codetraidingsystem/playlists
avatar

теги блога iSly

....все тэги



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