С чего начинается торговля на финансовых биржах? Она начинается с разработки торгового алгоритма. При этом основным вопросом, который возникает у нас – где нам можно взять готовую историю торговых котировок, где скачать данные биржевых показателей. Для чего же нужна история торгов? Они нужны для детального анализа торговой стратегии, для тестирования созданного нами алгоритма торговли. Существует огромное количество ресурсов предоставляющих возможность скачать историю торгов. Множество источников предлагают скачать рыночные данные со своих ресурсов, однако зачастую эти ресурсы являются платными. А бесплатное приложение позволяет скачивать исторические данные в урезанном или неконвертируемом виде, ограничивая период биржевых котировок не более одним днем. Безусловно, это представляет неудобство для пользователя и несет дополнительные траты. Для наших клиентов мы в компании StockSharp разработала уникальную бесплатную программу S#.Data (Hydra), позволяющий скачивать маркет данные с различных источников. Программа предоставляет пользователю выбрать ресурс, на котором хранятся данные котировок и инструмент по которому ему нужна история биржевых торгов. Что важно, пользователь может выбрать период, по которому нужно скачать маркет данные для более детального тестирования своей торговой стратегии или торгового робота. Мы рассмотрим, источники ФИНАМ или MFD, которые предоставляют историю минутных свечей, а также тиковую историю торгов: Для установки программы сделаем следующее: 1. Зайдем на сайт StockSharp.ru , в раздел программы и выберем S#.Data. 1.1.jpg 2. Перейдем на страницу Программы. 1.2.jpg 3. Выберем раздел Скачать. 1.3.jpg 4. Скачаем архив Hydra.zip, разблокируем его ( https://www.thewindowsclub.com/fix-windows-blocked-access-file ) и распакуем его. 1.4.jpg 5. И запустим файл с расширением exe для установки. 1.5.jpg 6. После распаковки запускаем файл Hydra.exe 1.6.jpg 7. В открывшемся окне выбираем режим для 32-х или 64-х битной системы, в зависимости от установленной на компьютере операционной системы (рекомендуем 64 бита), и нажимаем ОК. 1.7.jpg После установки мы можем приступить к настройке чтобы скачать данные биржевых котировок. Рассмотрим на примере исторические данные скачав историю торгов акций Сбербанка из источника ФИНАМ за прошедший год. Для этого в открывшейся программе сделаем следующие: 1. В верхнем левом углу нажмем на кнопку Добавить в виде большого плюса. 2.1.jpg 2. В раскрывшемся списке выберем необходимый источник рыночных данных, в нашем случае ФИНАМ, поставьте галочку, и нажимаем ОК внизу списка. 2.2.jpg 3. Выберем путь по которому будут храниться маркет данные, формат хранения данных рыночных котировок и период за которой нам нужна история биржевых торгов. 2.3а.jpg 2.3б.jpg 4. Программа предложит выбрать инструмент, по которому нам нужна история торгов, выберем все доступные в источнике инструменты и загрузим их. 2.3в.jpg 2.3г.jpg 5. Выберем инструмент, который нам необходим и нажмем ОК. 2.4.jpg 6. В появившемся меню выбираем таймфрейм котировок. 2.5.jpg 7. В верхнем левом углу нажимаем на кнопку Старт, в виде кнопки Play. 2.6.jpg 8. В нижнем левом углу нажмем на кнопку Логи, для отслеживания всех действий программы и дождемся окончания итерации. 2.7.jpg 9. Затем правой кнопкой мыши жмем на инструменте и переходим на панель свойств. 2.8.jpg 10. После этого мы можем выбрать, например, построение свечей и получим результат. 2.9.jpg 2.9а.jpg Сейчас проделаем тоже самое , для того чтобы скачать историю биржевых котировок с не менее крупного ресурса MFD. Отключите источник данных Финам, переведя переключатель. 3.1.jpg В верхнем левом углу нажмем на кнопку Добавить в виде большого плюса. В раскрывшемся списке выберем необходимый источник рыночных данных - MFD, поставим галочку , и нажимаем ОК внизу списка. 3.2.jpg Выберем путь по которому будут храниться маркет данные, формат хранения данных рыночных котировок , период за которой нам нужна история биржевых торгов, инструмент по которому нам нужна история котировок (аналогично описанному ранее для источника Финам). В окне выбора инструмента выберем все доступные и загрузим их. 3.3.jpg Выберем инструмент, который нам необходим и нажмем ОК. 3.4.jpg Аналогично описанному ранее выберем таймфрейм котировок и нажимаем на кнопку Старт, в виде кнопки Play. После окончания итерации, правой кнопкой мыши жмем на инструменте и переходим на панель свойств. 3.5.jpg 3.6.jpg Получаем все необходимые данные биржевых котировок по источнику MFD. Удобство использование программы, в том числе, заключается в отсутствии необходимости новой настройки, при переходе с одного источника на другой, достаточно просто переключать их. Это позволяет сэкономить время и облегчает пользование программой. Подобным образом можно настроить скачивание исторических данных биржевых котировок по любому финансовому инструменту, по любой торговой площадки и с любого финансового источника. Стоит заметить что маркет данные могут сохраняются в двух форматах: в специальном бинарном формате S#.Data (BIN), что обеспечивает максимальную степень сжатия истории торгов, или в текстовом формате CSV, что удобно при анализе рыночных данных в других программах. В дальнейшем сохраненная информация доступна для использования торговыми стратегиями (подробнее, о тестировании стратегий написано в разделе Тестирование). Все скаченные истории торгов можно импортировать в любые текстовые форматы. Использование программы Hydra позволяет получить надежный инструмент для тестирования алгоритмов любой финансовой стратегии и анализа котировок за любой период истории торгов.
Рост активности работы на мировых рынках среди трейдеров, а так же постоянный прогресс технологий, привели к увеличению скорости действий проводимых игроками на торговой площадке. Сегодня многие трейдеры, активно работающие с различными финансовыми инструментами, отдают предпочтение торговым роботам, нежели ручной торговле. Во многом это связано со скоростью протекания операций и их объемом. Давайте разберемся, что такое торговый робот? Торговый робот – специальная программа, созданная по особому алгоритму, в соответствии с которым она проводит торговые операции. Давайте чуть подробнее рассмотрим особенности таких программ. Программа торгового робота позволяет полностью или частично взять на себя процесс работы на торговой площадке. За трейдером, как за оператором торгового робота, остается возможность полного контроля над ним, что позволяет корректировать роботу торгового робота, вносить изменения в код программы или менять алгоритм. Фактически, торговый робот при автономной работе самостоятельно принимает решения о заявках и сделках, согласно установленным критериям его алгоритма, при вмешательстве в процесс пользователя, операции могут проводиться в ручном режиме. Программный код торгового робота основополагается на рассчитанных и продуманных математических последовательностях. Следя за разными данными, такие как индексы, индикаторы и иные маркет данные получаемые с биржи. Программа торгового робота решает, покупать или продавать те или иные активы. Скорость реакции на изменения рынка, позволяет торговому роботу совершать гораздо больше операций, соответственно потенциально приносить большую прибыль и сокращать потери. algorithmic-trading-forex.jpg Вернемся к основной задаче торгового робота. Можно сказать, что задача торгового робота по упрощению торговли для трейдера, не является основной. Основная задача торгового робота заключается в возможности реализации посредством программирования торговых алгоритмов, которые сложно или невозможно воплотить в жизнь при ручной торговле. Упрощенно говоря, торговый робот – установленная последовательность действий для совершения сделки. Из общей массы торговых роботов стоит выделить три основные группы, отличающиеся между собой алгоритмом работы или типом стратегии. - Трендовые (дирекционные) или направленные, - Контртрендовые; - Арбитражные. trade-robot-strategy.jpg Рассмотрим более подробно особенности каждого из типов торговых роботов. 1. Трендовые или направленные роботы. Целью робота является максимально быстрая реакция на тенденцию движения рынка, иными словами отследить в какую сторону развернулся рынок. В зависимости от направления торговый робот автоматически открывает позицию либо продажей, либо покупкой. Соответственно, если рынок меняет свое направление, то торговый робот максимально быстро осуществляет обратное действие, открывая позицию. 2. Контртрендовые торговые роботы. Их целью является отслеживание откатов цены. Данный торговый робот отслеживает откаты цен, происходящих во флетовом положении рынка, и выставляет заявки исходя из установленного алгоритма. 3. Арбитражный торговый робот. Такой торговый робот является чуть ли не самым популярным типом. Торговый робот такой к примеру как «Эдвард», приносит прибыль определяя различия цен между схожими или одинаковыми инструментами на различных рынках. Фактически он покупает на одном рынке, продает на другом, компенсирую разницу и получая прибыль. trade-robot-api.png Еще один способ разделение роботов: - Свечные. Это торговые роботы, использующие для определения сигналов к выставлению заявок данные свечей. - Индикаторные. Эти роботы, использующие для открытия заявки данные индикаторов. Поговорим о построении торгового робота. Само написание программного кода - не сложное занятие, сводимое к знаю языков программирования. Гораздо сложнее этого – найти верный путь создания торгового алгоритма, на основе которого создается торговый робот. На сегодня до 50% сделок на торговых площадках совершаются торговыми роботами. Торговых роботов по праву относят к одному из самых надежных и эффективных инструментов торговли. Этому есть объяснение : - Торговый робот упрощает работу при сделках с большим объемом лота, разделяя заявки на более мелке части и совершая сделки по частям; - Торговый робот сокращает трудозатраты трейдера, совершая торговые операции автоматически. Это способствует к росту объема совершаемых сделок, увеличению прибыли, которую приносит торговля, и важное, сокращает возможную потерю; - Оставаясь автоматическим, торговый робот всегда может быть переведен в ручной режим, то есть остается полностью подконтрольным своему владельцу; - Огромный перечень инструментов и методов, которые может использовать торговый робот, позволяют говорить, что торговый робот дает возможность воплотить в жизнь самые сложные математические задачи для торговли; - У торгового робота отсутствует критерий эмоциональности, по сути, он трезво действует своему заложенному механизму. Не паникует в стрессовой ситуации. HFT-trade-forex.jpg Разбирая торговые роботы, трейдер должен выбрать для себя нужный путь, исходя из которого он сможет подобрать робота для себя. Трейдер должен понимать, что торговый робот – инструмент торговли, не является панацеей для 100% успеха. Помимо самого трейдера, важно знать и платформы реализации таких торговых роботов. Таких достаточно много (TSlab, S#.Designer). holy-grail-forex.jpg exchange-trade-strategy.png Подводя итог, можно сказать, что торговый робот надежный и удобный функционал на вооружении у трейдера, самое главное правильно использовать его при ведение биржевой торговли.
Прежде чем начать разговор об алготрейдинге, необходимо дать ему определение. Итак, что такое алготрейдинг? Существует разное определение данному понятию, неизменным остается только его суть и принципы, на основе которых строится работа. Алготрейдинг – трейдинг, который проходит посредством полностью автоматизированного алгоритма, который прописывает трейдер, исполнение которого потенциально приносит трейдеру прибыль. Фактически это программа, которая несет в себе последовательность исполнения действий. trading_robot.jpg Сам трейдер составляет и определяет последовательность подачи заявок на покупку или продажу, указывая порядок управления своими средствами. Условия управления капиталом, установленные трейдером как параметры программы, определяют необходимый или оптимальный размер вложений, например, купленных ценных бумаг. Так же эта система управляет допустимой потери или риска, при котором размер убытка будет приемлемым. При этом управление риском производится путем установки алгоритма стоп-лосс. Отсутствие у алгоритмической программы чувств и эмоций позволяет избежать нервных срывов или иных эмоциональных всплесков. Это безусловно идет в плюс, та как работа трейдера зачастую происходит на грани нервного напряжения, и порой у человека могут сдать нервы, что повлечет за собой необдуманный шаг и как следствие потери. В то же время, трейдер имеет возможность вмешиваться в работу торговой стратегии, внося необходимые корректировки. Задача алготрейдинга – это точное исполнение указаний своей системы. Часто в некоторых источниках можно увидеть название механические торговые системы (МТС), однако алготрейдинг наиболее распространенное название. По сути, алгоритм «механически» исполняется программой, исключая суждения о рыночной ситуации и состоянии различных инструментов. Нужно сказать, что «механическая» система не всегда автоматизирована. Последняя в отличие от первой, самостоятельно совершает сделки, при этом участие человека не требуется или сведено к минимуму. trade_systems.jpg Эксперты отмечают, что алготрейдинг состоит из двух этапов. Давайте подробнее рассмотрим их. На уровне первого этапа, трейдер создает свою «механическую» стратегию. После создания, проходит процесс тестирования на маркет данных, и впоследствии, при достижении стратегией необходимого уровня потенциальной прибыли, тестирование переходит в режим реального времени или реальных торгов. Отметим, что последний этап проходит при использовании минимального капитала, так как является тестированием, а некоторые трейдеры предпочитают ему «торговлю на бумаге». При этом доходность, это не единственный критерий который дает оценку работоспособности стратегии. Давайте поговорим о средствах создания и последующего тестирования созданных стратегий. К таким средствам могут относится специальные программы, предназначенные для технического анализа созданных алгоритмических систем. Наиболее известными являются: осуществляется с использованием специализированных программ: MetaStock, S#.Designer, Wealth-Lab, ТSLab и другие. Программа стратегии пишется на различных языках программирования таких как: C#, C++, LUA и другие. Записанный алгоритм дает возможность использовать скаченные маркет данные для тестирования стратегии, а в дальнейшем позволяет выставлять заявки в программах используемых для торговли. Стоит отметить, что стратегии могут быть созданы как в программах конструкторах например: S#.Designer, ТSLab, в которых стратегия создается на базе кубиков, а программа представляет собой схему, так и в программах где используется непосредственное программирование MetaStock, Wealth-Lab , в том числе с использованием готовых библиотек, например S#.API. Второй этап разработки начинается после того как стратегия трейдера полностью прошла тестирование и готова к реальной торговле. На втором этапе реализуется подход к работе стратегии либо создается торговый робот, который будет торговать по установленному алгоритму, либо трейдер выбирает ручное выставление заявок по сигналу получаемому от созданной стратегии. Трейдер подключает экспортирование биржевых маркет данных, полученных в режиме реального времени к программе в которой создана его торговая стратегия. Стратегия обрабатывает полученные данные и исходя из результата, подает сигнал на подачу заявок. Еще раз напомним, что действия по сигналу стратегии могут быть сделаны вручную трейдером, например как в системе QUIK, а так же могут быть делегированы торговому роботу, который выставляет заявки автоматически согласно алгоритму, например в таких системах как S#.Designer, MT4, TSlab. Trade_Strategy.jpg Необходимо помнить, что создание торгового робота, не снимает с трейдера ответственности за саму торговлю. Трейдер должен постоянно отслеживать работу своего робота, редактировать условия совершения сделок согласно изменницею ситуации на рынке. Стоит сказать, при работе на длинных тайм фреймах, сопоставимых, например, с часом, автоматизация выставления заявок может отпасть, так как трейдер способен сам коррелировать и управлять торговлей на длительных периодах. Любое выбранное направление алготрейдинга несомненно может принести трейдеру прибыль, но подход должен быть глубокий, не просто на уровне выбранного алгоритма, необходимо учесть инструменты на которых будет вестись торговля, программное обеспечение. Важное правило – анализ и тестирование, это всегда минимизирует ваши потери.
Для упрощения работы с индикаторами, можно построить и сохранить их в программе Hydra. Рассмотрим порядок построения графика индикатора биржевой торговли на примере индикатора SMA (простая скользящая средняя): 1. Загрузим программу Hydra. 2. Выберем, источником биржевых данных. (1.1) 1.png 3. Щелкнем правой кнопкой мыши, и выпавшем списке выберем «Посмотреть скачанное» (1.2) 2.png 4. Выберем пиктограмму «график» и построим график истории биржевых котировок (1.3) (1.4) 3.png 4.png 5. Щелкнем правой кнопкой мыши в поле графика и выберем пункт «Индикатор». (1.5) 5.png 6. Из выпавшего списка выберем необходимый нам индикатор биржевых котировок, в нашем случае SMA, и нажмем «Ок». (1.6) 6.png 7. На графике маркет данных отобразиться кривая индикатора биржевых котировок. (1.7) 7.png 8. Чтобы построить график индикатора SMA отдельно, нам необходимо нажать на кнопку «+» в верхней части поля графика истории биржевых котировок, и в открывшемся ниже поле щелкнуть правой кнопкой мыши. Выбрать пункт «Индикатор» , в списке выбрать необходимый и нажать «Ок». (1.8) (1.9) 8.png 9.png 9. График индикатора биржевых котировок построиться в отдельном окне. (1.10) 10.png Рассмотренный функционал программы Hydra, позволяет применять индикаторы рассчитанные по скачанным маркет данные на любой платформе, что облегчает работу с торговыми алгоритмами. Приятного использования программы.
В прошлой статье были разобраны общие принципы работы с программой S#.Data (Hydra), от ее установки на компьютер пользователя, до скачивания истории маркет данных с двух источников ФИНАМ и MFD. В сегодняшней статье мы подробно разберем функцию записи в файл скачанной истории биржевых котировок и настройку шаблона для конвертации данных котировок в текстовой файл, с целью, когда маркет данные используются в других программах алгоритмической торговли и анализа торговых стратегий. Как уже говорилось ранее, программа способна хранить истории торгов в специальном бинарном формате S#.Data (BIN), что обеспечивает максимальную степень сжатия истории торгов, или в текстовом формате CSV, что удобно при анализе рыночных данных в других программах. Рассмотрим порядок выгрузки истории биржевых котировок в разные форматы файлов: Загрузим программу S#.Data (Hydra). Мы уже имеем данные истории торгов, загруженные ранее. 1.1.jpg Выберем, к примеру, источником биржевых данных, ранее скачанные маркет данные с ресурса MFD. 1.2.jpg У нас загружена история котировок акций Сбербанка. 1.3.jpg Нажмем правую клавишу мыши, и выберем пункт «Посмотреть скаченное». 1.4.jpg Выберем справа пиктограмму «сохранить», чтобы сохранить историю биржевых котировок. 1.5.jpg В выпавшем списке выберем необходимый для нас формат. Например - Excel. 1.6.jpg После записи данные биржевых котировок можно просмотреть, открыв файл. 1.8.jpg Сохраним теперь скачанные маркет данные в формате txt. 1.9.jpg Нажмем кнопку «сохранить» и увидим, что появилось меню настройки шаблона записи истории биржевых котировок. Данная функция реализована в программе S#.Data (Hydra) с целью предоставить возможность пользователю сохранить данные котировок в удобном виде, для упрощения использования маркет данных в других программах. 1.9а.jpg Заменим все «:» в программе на «-», и нажимаем «Предпросмотр». Заметим, что вид записи изменился. 1.9б.jpg Сохраним и откроем файл с скаченными маркет данными. 1.10.jpg Рассмотренный сегодня функционал программы S#.Data (Hydra), позволяет говорить о том, что скачанные маркет данные можно применять на любой платформе, что облегчает работу с торговыми алгоритмами. Настройка шаблона представления биржевых котировок позволяет настроить вид скачанных биржевых данных под себя, делая их более удобными для анализа торговой стратегии. Стоит заметить что программа в том числе поддерживает возможность выгрузку истории биржевых котировок в базы данных SQL, что позволит анализировать данные средствами данного языка. Напишите нам в комментариях, какие вопросы вы хотели бы рассмотреть в наших следующих статьях.