Язык r для трейдера

Введение в язык R для трейдера

Установка R для Microsoft Windows

Обучение для трейдеров:

Установка RStudio для Microsoft Windows

В качестве интерактивной среды разработки на R удобно использовать специальную программу RStudio.

Установка R и RStudio на Debian/Ubuntu

Установка специализированных пакетов

Для расширения возможностей R используются дополнительные пакеты-расширения. Чтобы установить пакет, надо в консоли R выполнить команду:

Вторым параметром можно указать, чтобы автоматически были установлены все другие пакеты, которые требуются для установки данного пакета, например:

Мы часто будем использовать следующие пакеты:

Некоторые пакеты отсутствуют в главном репозитории, поэтому для их установки требуется указать адрес, например:

Режим калькулятора

В консоли R после приглашения > можно записывать любые арифметические выражения, после нажатия клавиши Enter будет выведен результат, например:

В квадратных скобках показывается номер первого элемента, с которого начинается вывод в данной строке. Если ответ будет содержать много элементов и не поместится в одной строке, то каждая следующая строка будет начинаться с номера элемента, который оказался в этой строке на первом месте. Для примера выведем все числа от 1 до 60:

(место переноса зависит от ширины экрана консоли).

Возведение в степень обозначается знаком ^ ; для извлечение квадратного корня используется функция sqrt() :

Длинные выражения можно разрывать, нажав клавишу Enter после очередного знака операции; тогда приглашение системы изменится с > на + и со следующей строки можно будет вводить продолжение. Аналогично интерпретатор команд поступит, если не найдёт в конце строки закрывающую скобку:

С помощью функции print() можно вывести число с заданной точностью, задав параметр digits (количество значащих цифр):

Присваивание значений

Также имеется функция assign (присвоить), первый параметр которой (переменная) записывается в кавычках, а второй параметр — это присваиваемое значение:

Обычно каждый оператор пишется с новой строки, но при желании разрешается записывать операторы в одной строке, разделяя их точкой с запятой:

В именах заглавные и строчные буквы различаются, т.е. например, Trend и trend — это разные переменные.

Имена должны начинаться с буквы и могут состоять из букв и цифр; специальные знаки в именах не разрешены, но можно использовать точку в любом месте, в том числе в качестве первого символа имени (что может оказаться неожиданным для тех, кто знаком с другими языками программирования).

Если какая-то переменная больше не нужна, то для её удаления из памяти используется функция rm() :

Специальные значения

Кроме чисел, символов и строк в R имеются следующие специальные значения:

Комментарии

Символ # означает, что оставшаяся часть строки содержит комментарий (невыполняемый код).

Векторы

Вектор (упорядоченный набор значений) создаётся с помощью функции c() (от англ. concatenate – сцепить, объединить):

Кроме чисел, элементами могут быть также символы, строки или логические значения:

Элементы нумеруются, начиная с 1. Доступ к отдельному элементу можно получить, записывая его номер в квадратных скобках:

Количество элементов в списке возвращает функция length() :

Все функции в R могут принимать векторные аргументы, например:

Операции сравнения вектора с числом, символом или строкой возвращают вектор логических значений:

Можно сравнивать векторы поэлементно:

Аналогично работают и арифметические операции:

Если длина одного вектора кратна длине другого, то элементы более короткого вектора будут использоваться, как будто они образуют замкнутую цепь: по достижении конца вектора мы снова перейдём в его начало:

При сложении векторов, длины которых не кратны друг другу, используется тот же алгоритм, но будет выдано предупреждение:

Аналогично работают с векторами и другие арифметические операции, а также операции сравнения.

или (с тем же результатом):

Имеется множество функций для работы с векторами:

В помощью функции rep() можно сгенерировать вектор, в котором несколько раз повторяется заданная последовательность, например:

Второй параметр может быть тоже вектором (той же длины, что и первый параметр), тогда каждый элемент первого вектора будет повторён столько раз, сколько задано в соответствующем элементе второго вектора:

Списки

Список отличаются от вектора тем, что элементами списка могут быть не только атомарные значения, но также другие списки, т.е. этот тип данных является рекурсивным.

Список создаётся с помощью функции list() :

Обращение к элементам списка производится с помощью квадратных скобок, но если использовать одиночные скобки, то результатом будет тоже список, а если двойные скобки — то сам элемент:

Работа с датами

Даты хранятся в памяти компьютера в виде числа дней, прошедших с 1 января 1970 года (более ранние даты представляются отрицательными числами).

Для преобразования строки в дату используется функция as.date() :

Можно задать, в каком формате указана дата (на каком месте в строке стоят год, месяц и день и какой используется разделитель):

Функция as.numeric() возвращает внутреннее представление даты, т.е. целое число дней:

Кроме того, имеется два вида представления даты и времени, в которых учитывается часовой пояс (time zone), а время хранится с точностью до секунды. В формате POSIXlt хранится список элементов: число секунд, минут, часов, дней, месяцев и лет, прошедших с начала 1 января 1970 года. А в формате POSIXct хранится число секунд, прошедших с того же самого момента:

Можно использовать произвольный формат представления даты и времени в виде строки, например:

Если часовой пояс не указан, то используются системные настройки (см. ниже).

Можно создать объект, представляющий дату, из отдельных чисел, обозначающих год, номер месяца, день, час, минуту и секунду:

Текущую дату и время возвращает функция Sys.time() :

Дату и время можно преобразовать в строку, задав нужный формат:

Можно создать последовательность дат (результат зависит от текущего часового пояса, заданного в операционной системе):

или (результат не зависит от текущего часового пояса):

Атрибуты

Имена и значения всех атрибутов можно узнать с помощью функции attributes() :

При создании вектора можно указать имя каждого его элемента:

Можно задать имена потом (с тем же результатом):

Источник

Создаем советник в R Trader с нуля. Практическое руководство

Для того, чтобы торговать на валютном или фондовом рынке, необходимо иметь набор правил, которые требуется соблюдать. Только в этом случае можно добиться успеха. Даже долгосрочное инвестирование подразумевает под собой определенные правила, согласно которым выбирается актив для покупки, и рассчитывается срок инвестирования в этот актив.

Торговые системы

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

Технический анализ подразумевает под собой анализ графика интересуемого финансового инструмента. Анализ этот производится с помощью разного рода индикаторов или общеизвестными ценовыми паттернами.

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

Торговые роботы

Если трейдер определился, какой вид анализа ему ближе, он начинает торговать. Со временем он достигает совершенства в торговле и для него это становиться обычной рутинной работой. В этой ситуации перед трейдером встает вопрос о том, как автоматизировать свою торговую стратегию.

Фундаментальный анализ автоматизировать достаточно сложно. Необходимо обладать навыками программирования, создавать роботов, которые умеют «читать и анализировать» новости. А еще лучше, если есть опыт работы с искусственным интеллектом. Поэтому круг таких трейдеров достаточно ограничен, при этом эффективность подобных систем ничем не лучше тех, которые основаны на техническом анализе.

Торговую систему, основанную на техническом анализе, гораздо проще перевести в автоматический режим. Если она состоит из индикаторов, то в этом случае достаточно знать язык программирования платформы, на которой работает трейдер.

Например, на рынке Форекс большой популярностью пользуется платформа MetaTrader 4. Для того, чтобы написать торгового робота для этой платформы, необходимо знать язык программирования MQL4. То есть и в этом случае также потребуется изучение языков программирования.

Где создать робота без знаний в области программирования?

Рынки развиваются, а вместе с ними появляются и новые возможности по автоматизации торговых систем.

Отличным вариантом для создания роботов без знаний программирования является мультирыночная платформа R Trader. В неё встроен понятный и простой конструктор стратегий. Данный конструктор позволяет автоматизировать торговую систему, не обладая навыками программирования. Все, что от вас требуется, это небольшой опыт торговли, для того, чтобы понимать, что такое цена открытия/закрытия и максимальная/минимальная цена интересуемой «свечи» на графике.

Описание торговой системы

Чтобы снять все вопросы по написанию торгового робота в платформе R Trader, я покажу вам как это делается на основании очень простой торговой системы, состоящей из двух индикаторов.

В нашем случае открытие позиции на Buy будет выглядеть следующим образом.

Если выполнились эти два условия, тогда открыть позицию Buy.

Теперь описываем условия закрытия позиции Buy.

Создание торгового робота

Сейчас я показал вам как описать точку входа на Buy. Теперь все это необходимо перенести в платформу R Trader.

Заходим в платформу и выбираем вкладку Strategies – My Strategies, после чего нажимаем «создать новую стратегию» (Add new strategy).

На следующем шаге вам необходимо будет придумать имя вашей стратегии и дать её краткое описание.

После того, как все эти этапы пройдены, вы попадаете уже в сам конструктор, где необходимо задать условия торговой системы.

Для начала вам предлагается задать условие для открытия позиции на Buy. Так как мы их описали выше, то нам теперь достаточно лишь выбрать соответствующие параметрам индикаторов и указать условия.

Теперь необходимо задать условие закрытия позиции, которые были описаны выше.

Дополнительно можно указать значение Стоп Лосс / Stop Loss (close at SL) и значение Тейк Профит / Take Profit (close at TP). В этом случае позиция будет закрыта по условию, которое выполнится первым.

Итак, мы сформировали условия для открытия и закрытия позиции на Buy. Теперь можно проверить, покажет ли положительный результат такая торговая система.

Для этого необходимо выбрать инструмент, на котором будет проводиться тестирование, затем выбрать временной период, объём открываемой позиции (Order volume) и после этого нажать кнопку «Backtest».

Тестирование торговой стратегии

Тестирование производится на исторических данных, период тестирования определяется платформой и зависит от количества доступных для тестирования котировок. К сожалению загрузить котировки для более длительного периода тестирования здесь не получиться.

Если мы все сделали правильно, появятся результаты тестирования.

В данном случае текущая стратегия показывает положительный результат с суммой прибыли в 1304 USD. Отрицательный результат, означает, что систему придется дорабатывать.

В этом тестере не указывается стартовый депозит. Рост прибыли начинается с нулевой отметки, а значит все, что ниже нулевой отметки, можно засчитывать за «просадку» депозита. По этой стратегии в самом начале была замечена «просадка» около 400 USD. В последующем убытки по торговой стратегии приходились на заработанные деньги.

Но это еще не все, текущий результат можно улучшить, добавив еще несколько стандартных условий. Возвращаемся в раздел редактирования стратегии (нажимаем Editor) и в значении «Max open deals» ставим цифру 2.

Это значит, что мы разрешаем торговому роботу открывать вторую позицию, даже если первая еще не закрылась.

«Max open deals» разрешает открывать новые позиции, когда предыдущие еще не закрылись. Хочу предупредить, что в данной стратегии этот параметр работает некорректно. Проверка условий происходит на каждом тике, в итоге за одну минуту может открыться очень большое количество позиций в одном направлении.

Чтобы избежать подобной ситуации, но все же иметь возможность открыть позицию в том же направлении по лучшей цене, можно задействовать функцию «Enter every 0 ticks above last entry». Данная функция позволяет открывать новую позицию через определенное количество пунктов ниже/выше предыдущего ордера. Для этого, вместо значения ноль, прописываем нужное нам количество пунктов.

Дополнительно в значении «Multiplicator» прописываем цифру 2, то есть указываем роботу, что необходимо открывать вторую позицию с объёмом в два раза больше, чем в первой позиции.

Multiplicator умножает объём предыдущего открытого ордера на значение, которое в нем указано. Нажимаем «Backtest» и получаем новый результат.

Запуск торгового робота

Если результат нас устраивает, тогда остаётся только запустить стратегию в работу.

Для этого необходимо нажать кнопку «Enable», после чего появится окно, в котором необходимо указать объём открываемой позиции и, по желанию, можно указать значение Take Profit и Stop Loss в USD. Если эти графы оставить пустыми, тогда позиции будут закрываться по условиям, описанным в торговой стратегии.

Выбор инструмента происходит автоматически. В данном случае используется тот инструмент, график которого сейчас открыт на экране, а именно US500. Дополнительно, после запуска стратегии во вкладке Running Strategies нам будет доступна информация и название стратегии, когда она была запущена, на каком инструменте, период графика и полученная прибыль.

Таким же образом можно запустить эту стратегию на всех инструментах, на которых она показывает положительный результат. Но в этом случае вам необходимо будет рассчитать объём для каждого инструмента, чтобы не превысить допустимые риски на депозите, так как одновременное закрытие позиций с убытком по всем инструментам, может привести к значительной потере средств.

Для удаления стратегии достаточно нажать на крестик в конце строки.

В платформе R Trader, в отличие от терминала MetaTrader 4 и MetaTrader 5, нет надобности постоянно держать включенным компьютер, чтобы робот имел возможность торговать. Услуги VPS сервера здесь так же не требуются. Достаточно запустить Торгового робота на платформе, после чего он автоматически запускается на сервере и начинает работать.

В процессе торговли у вас есть возможность закрывать позиции вручную, вносить изменения в ордер и в саму стратегию. Вы можете приостанавливать работу Советника, или же просто удалить его, если результаты начали ухудшаться.

Дополнительным преимуществом торговых роботов на платформе R Trader является наличие очень большого количества инструментов. В этой платформе доступны акции, торгуемые на американских и европейских биржах, валютные пары, а также криптовалюты. Таким образом одного робота можно опробовать на нескольких рынках, в противном случае пришлось бы под каждую платформу создавать робота и изучать языки программирования, что занимает очень много времени.

Видео «Алготрейдинг: Как создать своего торгового робота без знания программирования?»

Вывод

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

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

Источник

Поделиться с друзьями
admin
Оцените автора
( Пока оценок нет )
Как переводится?
Adblock
detector