Блог им. ilyaalex
Недавно столкнулся с таким феноменом — про язык программирования R слышали многие. Но знают что это такое очень мало людей.
Поскольку являюсь носителем этого языка и заинтересован в его популяризации, попытаюсь немного раскрыть тему в этом посте. Будет интересно!
План простой:
1) Что такое язык R
2) Популярность в России
Что такое язык RR (вики) — язык программирования для статистической обработки данных и работы с графикой, а также свободная программная среда вычислений с открытым исходным кодом в рамках проекта GNU.
По нашему: Язык идеально подходящий для поиска рыночных закономерностей. Бесплатный, быстрый и свободный.
Он позволяет вести статистические исследования всего до чего могут дотянуться руки. За годы его существования появились десятки и сотни расширений для решения практически любых прикладных задач.
Это САМЫЙ популярный язык программирования алготрейдеров на западе. Это передовая того что сейчас доступно в области машинного обучения и статистики.
Для того чтобы писать программы на R, достаточно скачать R-Studio и всё
Некоторое время назад, в рамках популяризации языка, записал мини-курс «R для каждого». Бесплатный. Посмотрите как просто всё это работает и как быстро на нём писать скрипты. Это просто великолепно!
Популярность в РоссииОставляет желать лучшего.
Если на западе 90% всех исследований проводиться с помощью этого языка, то в России редкая неделя проходит на СмартЛабе, в которой можно найти хоть одно упоминание о нём. Т.е. число людей знающих R — критически мало.
В числе причин такой ситуации: отсутствие пособий на русском до недавнего времени, отсутствие обучающий курсов, низкая грамотность трейдеров и ещё много чего. Не будем об этом.
Важно лишь то, что популярность этого языка в России и СНГ неуклонно растёт.
Российские пользователи устали от неработающих АПИ и дорогих торговых систем. Бесплатный язык R, в контексте трейденга, очень скоро займёт достойное место в их инструментарии. Присоединяйся!
На этом сегодня всё. Надеюсь было интересно.
Смотрите мой бесплатный курс, чтобы понять, как просто писать код. Пишите роботов!
Тестируйте Ваши торговые идеи при помощи лучшего для этого инструмента!
Ссылки:
2) Мой бесплатный мини-курс по R
3) Прекрасная возможность выучить его за два месяца
если тестировать какие-нибудь простые стратегии (не статистические), типа купить когда объем болльше такого то, а ма такая-то, то нет необходимости.
А что насчет гибкости? обычно ведь когда есть заточенность подо что-то определенное, то гибкость страдает.
Сравнивать C# и R сложно, R заточен под стат обработку и визуализацию, это его конек.
p.s.: вот как после этого не поверишь в теорию заговоров :-)
Много вакансий в серьезных структурах стало требовать R
Насчет вакансий, я особого спроса не заметил. У нас пока все только начинается.
1)http://eclass.cc/courses?search=R+progra&category=&certificate=&language=&price=&provider=&fmt=
2)http://www.analyticsvidhya.com/learning-paths-data-science-business-analytics-business-intelligence-big-data/learning-path-r-data-science/
3)http://theasder.github.io/learning/2015/04/13/step-by-step-guide-for-learning-data-science-using-r.html
4)https://www.rstudio.com/resources/training/online-learning/
5)https://www.datacamp.com/
6)http://r-analytics.blogspot.co.uk/
7)http://www.skilledup.com/articles/5-free-courses-learning-r-programming
8)http://tryr.codeschool.com/
9)http://rforfinance.ru/
habrahabr.ru/hub/R/
profitraders.com/Rlang/R.html
Например на mt4 можно на 3-х выделенных под процесс гигах прогнать бектест на минутках за последние 15 лет...
А вот в tslab может и сам, от нечего делать 3 гига спокойно отожрать… а уж сколько он отожрет при тестированиичего-то вычислительно-ёмкого на минутках за несколько лет мне даже думать не хочется.
как в R c этим обстоят дела?
какой у вас объем данных, минимум такой и будет в памяти
прикинул что ваш пример это где-то 200-300 метров, ну вот минимум столько отъест, если еще преобразования будут, то еще а увеличится. Для 99% задач 1 ГБ на обычном компе достаточно.
Если пользоваться экзотикой (caret например), то там надо 2-4 (для выделения памяти)
у меня прикладная задача
1) искать базы (3-5 свечей ) по 35 инструментам ММВБ сразу и выводить их в таблицу
2) рисовать базы на графиках
все это надо в моменте делать во время торговли
3) как к нему подключить котировки/датафид?
4) как из него торговать?
а то реально начал под квик что-то делать изучать — так там чтобы линию на графике нанести горизонтальную от свечи до свечи (базу визуализировать ) — еп-ся можно
вот например ответ на мой вопрос - https://forum.quik.ru/forum10/topic1253/
forum.quik.ru/forum10/topic118/
или тоже танцы с бубнами
кстати
поиск этого и вывод в таблицу решается в 25 строк атф финам но жутко тормозит
а в thinkscript тоже строчек 15
а здесь как?
1. брать инструменты можно из разных мест
а. с сайта mfd
б. с сайта finam
в. из базы в которую до этого они будут добавлены каким-то способом
г. из текстового файла, который можно формировать например из quik
все эти способы реализуются из R
2. непосредственно онлайн можно это делать в вариантах в, г,
но это не очень удобно для него, так как основное это офлайн обработка или с небольшим лагом, но не полностью онлайн
3. см. п.1
4. гипотеттически можно сделать и робота, но это не очень верно
А чтобы программировать на C# нужно просто установить вижл студию. лол.
Напридумают десятки разных языков с различным синтаксисом, а потом программисты вынуждены изучать их — то один, то другой и держать всю эту кашу в голове! Ну сколько ж можно!
Программирование — это особая область решения задач, где требуется определенный склад ума! Но сейчас, к сожалению, многие реализации языков программирования идут по схеме упрощения: так, чтобы «даже школьник смог разобраться». Отсюда и появляются многочисленные фреймворки и огромное количество дилетантов, не понимающих элементарных принципов построения алгоритмов! Что уж говорить про ООП!
Не имею ничего личного против «R» и его создателей. Я против такого количества языков программирования в принципе. Почему бы не написать библиотеку для того же C# или С++ (на asm [шутка]), как вариант? Зачем создавать отдельный язык? Выпендрежники...
P.S.: Негодующий программер с 15-летним стажем. :-(
Или на R пишутся библиотеки и модули для коммерческих приложений?
для таких же как он (коммерческих приложений — MS SQL, Azure, MS BI, и прочих стат. приложений) есть интеграция с его модулями, функциями.
Ну а так наоборот, для R пишут библиотеки на C (фортране), которыми уже оч. удобно пользоваться в R
Да есть хорошая библиотека: alglib. Немного знаний в теории вероятностей и с ее помощью все, что хочешь можно запрограммировать. Если конечно миллисекунды не важны.
ко всем есть коннекторы,
также есть коннекторы к основным сервисам,
у нас mfd, и finam, а по миру и quandl, и yahoo и все такое
на spot инстансах амазона
меньше чем за бакс прогнать ночью весь сток маркет (интрадэй)
Да ладно… )))
R конечно не для роботов совсем. Для анализа да. Коннектор к плазе на R не написать ;)
1) «R — … в тоже время это свободная программная среда с открытым исходным кодом ...».
Есть отличная бесплатная кроссплатформенная IDE «Eclipse» (почему-то про нее забыли), но надо создать еще одну, свою! :))
2) «R возник как свободный аналог среды S-PLUS, которая в свою очередь является коммерческой реализацией языка расчётов S.»
Вот с этого и нужно начинать. Почему-то вспоминается Microsoft Office и его бесплатный аналог LibreOffice (или OpenOffice).
Ситуация: имеется качественный, но дорогой коммерческий продукт с хорошей поддержкой. Но есть и другие аналоги, со своими особенностями (косяками и прочими «артефактами»), устанавливаемые на свой страх и риск, не имеющие полноценной поддержки на русском языке, но полностью бесплатные! :))
Видимо, это среда на любителя, для очень специфических задач при ограниченном бюджете. Хорошо подходит для людей, кто не знаком с другими языками программирования или не готов разбираться с ними, но хочет решить свою проблему быстро и недорого (затраты по времени не рассматриваю).
R-знатоки, поправьте меня, пожалуйста. :)
но он может интерпретироваться и как веб-сервис (как передача в строке, так и полноценный графический)
есть R бесплатный с огромным комьюнити (с вопросами ответами и документацией) и большим числом пакетов, которые решают многое число задач, это более чем достаточно.
и есть R enterpise (есть и бесплатная версия и платная), которую купил год назад Microsoft (и активно интегрирует R в продукты — MS SQL, Azure, BI), в ней большая заточенность на высокопроизводительные вычисления, но по факту, все тоже самое, те же пакеты можно использовать.
А так да, это среда для своих задач (обработка данных, стат. модели, машинное обучение, визуализация)
«Есть одна, важная для всех операционных систем особенность: R (в отличие от того же S-PLUS) держит все свои вычисления в оперативной памяти, поэтому если в процессе работы, скажем, выключится питание, то результаты сессии, не записанные явным образом в файл, пропадут.»
— Замечательно! Что тут еще сказать…
И тут [внезапно] предлагается что-то новое. Основной вопрос состоит в том, а стоит ли отказываться от старых программ или языков (проверенных временем) и переходить на этот новый продукт (назовем его так). Пусть даже бесплатный. Стоит ли овчинка выделки?
Из плюсов я увидел разве что «продвинутую визуализацию» (как это нам преподносится). Да, с этим бывают сложности на других платформах. Но и они решаются.
Плюс он может и в себе все это делать, и кешировать и индексировать.
Если допустим написать перебор какого нибудь массива данных по индексу с помощью скрипта R то будет в несколько раз тормознутее, чем обычная программа на нормальном языке. Быстро будет только если перебор по индексу сделать внутри модуля какого нибудь.
И потом если без подключения собственных модулей на С не хватит гибкости, а если уж ты пишешь модули на С, то тогда уж можно и собственную программу писать, и R уже особо не нужен
Объем памяти должен быть не меньше, или же если не нужны мин-макс, а только какие-то одни цены, то следовательно раз в 5 поменьше, то 2 ГБ достаточно, или же делать кусками, так что да, даже без увеличения памяти, вполне возможно
Посмотрите посты с блога rforfinance,
rforfinance.ru/
там есть несколько тестов на дневках, но можно их переделать и на тики, там подход похожий.
profitraders.com/Rlang/CrossMA.html
есть много полезных пакетов, которые уже все делают,
строят графики, рассчитывают разнообразнейшую статистику, индикаторы и все такое, достачно подать на вход 2 таблички (все сделки и твои сделки), не уверен, что такое, в таком кол-ве есть даже для python, тем более для прочих языков.
в R еще плюс, что он с нуля до конца (web-сервис, например) можно сделать все на нем, в рамках единого синтаксиса, без доп. фреймворков со своими нюансами