Котировки акций алго трейдеру и инвестору: где найти и как скачать? Бесплатно

Многие расстроились, когда Yahoo.Finance закрыл все лазейки для получения бесплатных котировок акций не так давно, но к всеобщему счастью, уже есть альтернативы бесплатных данных где можно найти их. В этот раз мы скачаем бесплатную дневную историю с биржи IEX для ~8 тысяч американских активов примерно за ~2 минуты. Поможет нам в этом Python 2.7. А рассказывать будет Роман Щеголихин.

Пытливые умы на сайте биржи могут найти бесплатную историю тиков за предыдущие 10 месяцев в формате pcap (tcpdump).

На бирже IEX совершается примерно ~2.5% оборота акций, что необходимо учесть. Тики не дадут построить идеальную историю изменения цены из-за недостатка данных по остальным биржам.

В отличие от многих зарубежных поставщиков данных, IEX (https://iextrading.com/) предоставляет исторические данные бесплатно. Дневная история за 5 последних лет доступна для более чем 8 тысяч активов, среди которых такие рынки как:

  • New York Stock Exchange
  • Nasdaq Global Select
  • NYSE Arca
  • NYSE American
  • NASDAQ Global Market
  • NASDAQ Capital Market
  • BATS Exchange

OTC Markets Group

список компаний, который включает в себя имена и телефоны, брокеров и котировки акций компаний. Информация печатается на тонких розовых бумажных листах —

Кстати, дневная история учитывает торги на всех американских биржах, в отличии от тиков. RAA.

Этот брокер имеет простой API, и главное, бесплатный. Даже регистрироваться не надо. Правда, есть ограничение на 100 запросов в секунду.

Документация по API: https://iextrading.com/developer/docs/

Список доступных активов: https://api.iextrading.com/1.0/ref-data/symbols

Запрос по нужному активу выглядит так: https://api.iextrading.com/1.0/stock/aapl/chart/1m

Это запрос по Apple inc. дневной истории за последний месяц. Котировки отрегулированны на сплиты и дивиденды.

Ну что же, список котировок есть, API есть. Как всё это дело скачать и побыстрей? Ниже скрипт на Python 2.7 с использованием технологии MultiCurl и библиотеки pycurl.

И на загрузку более 8 тысяч активов за месяц у меня уходит всего ~110 секунд.  Здорово!

Код в студию котировки акций

Котировки акций

Список тикеров получаем “на лету” из IEX и берем из них только работающие инструменты. Замеры скорости приведены для красоты. Основную работу выполняет функция [code]performMyMulti[/code]. В данном примере она пачками по [code]block[/code] тикеров параллельно выкачивает историю дневок за последние 30 дней. В качестве пачки на вход этой функции поступает список [code]tools_[/code], который содержит строковые коды инструментов. Второй параметр этой функции, [code]time_frame[/code] — задает глубину. Чтобы скачать котировки за 5 лет, задайте [code]’5y’[/code]. Результаты складываются в текстовые файлы в каталог data. Данные в них — это объекты json, которые дальше можно парсить и использовать по назначению.

[raaAdSenceArticle]

[код Python]

импортировать pycurl
запросы на импорт
импортировать json
время импорта
импорт ОС
def выполнитьMyMulti ( tools_ , time_frame = ‘1m’ ) :
    ”’
    Функция многопоточного скачивания. Принимает на вход список
    кодов инструментов для скачивания. Количество инструментов в этом
    списке не должно превышать 100шт.
    ”’
    m = pycurl.CurlMulti()
    м . ручки = [ ]
    files = [] # список файлов для сохранения результатов
    start_ = time.time() # замер времени для расчета скорости, начальная точка
    # создание и настройка curl-объектов
    для инструмента_ в инструментах_ :
        c = pycurl . Завиток ( )
        
        # имя файла для сохранения результатов; файлы сохраняются в каталог data
        fileName = “data% s% s_% s.txt” % ( os . sep , tool_ , time_frame )
        fileName = имя файла . replace ( ‘*’ , ‘_’ )
        f = open ( имя_файла , «wb» )
        files.append(f) # файл добавляется в список, чтобы потом закрыть его
        c.setopt(c.WRITEDATA, f) # кроме файла здесь можно указывать функцию, но файл нам наиболее удобен
        URL = “https://api.iextrading.com/1.0/stock/%s/chart/%s” % ( Инструмент : , time_frame )
        c . setopt ( pycurl . URL , URL )
        м . add_handle ( c )
        м . ручки . добавить ( с )
    num_handles = len ( м . ручки )
    в то время как num_handles :
        а 1 :
            # выполнить запросы
            ret , num_handles = m . выполнить ( )
            если ret ! = pycurl . E_CALL_MULTI_PERFORM :
                перерыв
        м . выберите ( 1.0 )
    # очистка
    для c в м . ручки :
        c . закрыть ( )
        м . remove_handle ( c )
    для f в файлах :
        f . закрыть ( )
    м . закрыть ( )
    дель м . ручки
    end_ = time.time() # замер времени для расчета скорости, конечная точка
    return len(tools_) / (end_start_) # скорость в секунду
# скачиваем список инструментов
r = запросы . получить ( ‘https://api.iextrading.com/1.0/ref-data/symbols’ )
данные = json . грузы ( r . текст )
tools = [] #список кодов инструментов
# выбираем коды инструментов в отдельный массив
для инструмента в данных :
    попробуйте :
        если инструмент [ ‘isEnabled’ ] имеет значение True :
            инструменты . добавить ( инструмент [ ‘символ’ ] )
    кроме :
        Продолжать
block = 80 #количество параллельных запросов (не более 100шт)
tools_count = len ( инструменты )
print(u“Всего инструментов для скачивания: %d” % tools_count)
loops = tools_count / block # количество полных циклов (циклов по block запросов)
tail = tools_count % block # количество оставшихся запросов
tools_ok = 0 # общее количество выполненных запросов
start = time.time() # замер общего времени, начальная точка
for i in range(loops): # в цикле по всем полным циклам
    srez = tools[i*block:i*block+block:1] # формируем выборку из следующих block инструментов
    speed = performMyMulti(srez) # выполняем параллельное скачивание
    tools_ok + = блок
    print(u“готово %d из %d, скорость %f в сек” % (tools_ok, tools_count, speed))
if tail > 0: # “докачиваем” оставшиеся инструменты
    i += 1
    srez = tools[block*i:block*i+tail]
    speed = performMyMulti(srez)
    tools_ok + = хвост
    print(u“готово %d из %d, скорость %f в сек” % (tools_ok, tools_count, speed))
end = time.time() # замер общего времени, конечная точка
print(u“Всё скачали! Ушло %f сек” % (endstart))

Итог

Код можно адаптировать для скачивания минутной истории в реальном времени.

  Секрет успеха от человека, чье состояние оценивалось в 310 миллиардов долларов

Также доступны тики в реальном времени через вебсокеты (websockets). Что делает данную биржу крайне ценной находкой.

Первым шагом в автоматизации трейдинга является разработка собственной торговой системы. Однако для того, чтобы протестировать механическую торговую систему (МТС) нужно где-то раздобыть котировки акций.

Напомню, что программа Wealth Lab позволяет самостоятельно делать  торговые системы и тестировать их, используя исторические котировки акций. В нашем блоге ранее уже был пост, посвященный тому, как делать торговые системы в Wealth Lab с помощью программирования на языке C#.

Сегодня хочу рассказать – где найти исторические котировки акций и как их скачать для последующего анализа в программе Wealth Lab.

Котировки и курсы акций – Investing.com

Вся информация о фондовых рынках в режиме реального времени: текущие котировки акций ведущих компаний.

Как всегда существует несколько вариантов:

Вариант №1: котировки Финам

Самый привычный способ – зайти на сайт Финама по следующей ссылке: http://www.finam.ru/analysis/export/default.asp и там настроить экспорт необходимых Вам котировок. Большинство именно так и делают.

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

Вариант №2: Алор – сервер истории.

Разработчики механических торговых систем могут зайти по ссылке:  http://www.alor-trade.ru/systems/history/ и воспользоваться алоровским сервером истории. Этот вариант появился относительно недавно.

Этот сервер предоставляет возможность по протоколу HTTP получить исторические  котировки акций с основных торговых площадок России. Сервер легко интегрируется с аналитическими системами и МТС.

Большой плюс здесь в том, что теперь те, кто делает торговых роботов под алор (используя COM-объекты ATEAPI 6.x.150.211) могут настроить автоматическое получение истории котировок акций.

  Форекс и золото.

Для этого нужно воспользоваться таблицами HISTORY и HISTORY_DAILY.

Таблица HISTORY содержат информацию по историческим минутным данным (с периодом 1, 5, 10, 15, 20, 30, 60 и 1440 минут) по всем сделкам купли/продажи финансовых инструментов, совершенным в торговой системе.

Поле Тип Назначение

Я БЫ

ДЛИННЫЙ

Идентификатор строки

RecID

INT64

Идентификатор записи

Время

ВРЕМЯ

Время

Бегущая строка

BSTR Бегущая строка

Открыть

ДВОЙНОЙ

Открытие

Высокая

ДВОЙНОЙ

Максимальная цена в периоде

Низкий

ДВОЙНОЙ

Минимальная цена в периоде

Закрывать

ДВОЙНОЙ

Цена последней сделки в периоде

Объем

ДВОЙНОЙ

Объем

Period

ДЛИННЫЙ

Период, в минутах (возможные значения: 1, 5, 10, 15, 20, 30, 60, 1440)

Таблица HISTORY_DAILY содержат информацию по историческим дневным данным  по всем сделкам купли/продажи финансовых инструментов, совершенным в торговой системе.

Поле Тип Назначение

Я БЫ

ДЛИННЫЙ

Идентификатор строки

RecID

INT64

Идентификатор записи

Время

ВРЕМЯ

Время

Бегущая строка

BSTR Бегущая строка

Открыть

ДВОЙНОЙ

Открытие

Высокая

ДВОЙНОЙ

Максимальная цена в периоде

Низкий

ДВОЙНОЙ

Минимальная цена в периоде

Закрывать

ДВОЙНОЙ

Цена последней сделки в периоде

Объем

ДВОЙНОЙ

Объем

На основе данной информации можно настроить автоматическое получение данных. В общем, те, кому интересен этот вариант – заходите сюда: http://www.alorbroker.ru/technologies/at/ скачивайте терминал Алор Трейд с com объектами и вперёд.

Вариант №3: специальная программа для получения котировок акций owp.FDownloader

Этот вариант показался мне наиболее удобным, т.к. программа Fdownloader:

  • Интуитивно понятна, проста в освоении и не требует навыков программирования;
  • позволяет полностью автоматизировать получение котировок акций и затрачивать на эту рутинную работу минимум времени;
  • Процесс получения данных можно настроить даже тогда, когда Вы пользуетесь прокси сервером;
  • Данные можно получать и в формате *.csv и в формате wealth lab
  • Автоматически присоединяет новые котировки акций к уже существующим ведя удобную базу данных

Сразу хочу сказать спасибо разработчикам данной программы.  Почитать про них можно вот здесь:

http://code.google.com/p/open-wealth-project/wiki/FDownloader

Скачать эту программу можно именно по этой ссылке.  Если не получается – пишите [email protected] – поможем.

Теперь по шагам – как организовать процесс получения исторических котировок акций:

Допустим, мы хотим получить часовые данные по наиболее ликвидным российским акциям с ММВБ: Газпром, Лукойл, Сбербанк

Для этого необходимо проделать следующие шаги:

Шаг №1:

Организация места на диске

На диске D: создаём специальный каталог, который называем MarketData

Внутри этого каталога делаем 3 подкаталога:

  • CSV – здесь будут храниться котировки акций в формате CSV
  • Downloader – здесь будет храниться сама программа загрузчик котировок акций и её настройки
  • WL – здесь будут храниться котировки акций в формате Wealth Lab (WL4 Files)

Каталог должен выглядеть вот так:

Шаг №2:

В каталог Downloader копируем полученные при скачивании файлы.

В итоге получится вот такая картина:

Шаг №3:

Запускаем программу и настраиваем все данные

FDownloader

Нажимаем кнопку “Далее”

В появившемся окне нажимаем кнопку “Обновить” – чтобы скачать структуру данных.

После этого ставим галочки напротив тех инструментов, которые хотим получить.

И вновь нажимаем кнопку далее

Как результат – попадаем в 3-е окно, которое уже просто информирует нас о том, что делает программа.

Как результат – в папке D:\MarketData\CSV\1h\

Появятся данные в формате *.scv

А в папке: D:\MarketData\WL\1h\ММВБ Акции\

В формате *.wl

Теперь всё готово для анализа котировок акций в программах для технического анализа.

О том, как использовать эти котировки акций в программе wealth lab – расскажу в следующий раз.

  адекватный оптимизм

Источники:

https://quantrum.me/1571-kak-bystro-skachat-kotirovki-s-iex/

http://finlabportal.ru/2011/04/kotirovki-akcij-gde-najti-i-kak-skachat/

 

Котировки валют онлайн – что это, и какие факторы влияют на них

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

Что такое котировка?

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

Тип котировок

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

Выделяют:

  • прямые котировки – доллар на первом месте. Например, запись вида USDJPY означает, что стоимость доллара выражается в иенах. В торговом мы терминале видим, сколько стоит доллар в иенах;
  • обратные – в этом случае доллар смещается на второе место. Пример – GBPUSD, EURUSD, т.е. стоимость национальной валюты выражается в долларах;
  • кросс-курсы – котировки в этом случае доллара не содержат вовсе. Примеры популярных кроссов – EURGBP, GBPJPY. Ознакомиться с полным списком доступных для торговли инструментов можно в торговом терминале, разделения на прямые, обратные и кросс-курсы нет.

Прямые и обратные курсы легко пересчитываются.

Например, запись вида USDRUR означает, что 1 доллар оценивается в 60 рублей, для получения обратного курса просто делим 1 на 60 и получаем RURUSD = 0,0167, то есть 1 рубль оценивается в 1,67 американских цента. Котировки без использования доллара пересчитываются чуть сложнее, хотя влияние «американца» есть и в случае с ними.

Тут в дело вступает математика, рассмотрим пример расчета. Предположим, вычисляется курс GBPJPY. Для этого понадобится курс GBPUSD (пусть он равен 1,36345) и USDJPY (курс 111,141) теперь получаем искомый кросс:

 

Для расчета кросс курсов берутся 2 пары. В нашем примере доллар в числителе и знаменателе сокращается, а мы получаем искомое значение GBPJPY, на скриншоте выше видно, что его значение рассчитано верно. Небольшое отличие объясняется тем, что за время расчета значения курсов валюты успело измениться.

Что влияет на котировки, как прогнозировать их движение?

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

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

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

Невзирая на кажущийся хаос, предсказывать поведение денежных пар можно. В разделе на нашем веб-сайте, который посвящен торговым стратегиям, собран не один десяток рабочих торговых систем. В некоторых для прогнозирования употребляется лишь графический изучение, в остальных – набор индикаторов. Основное, не нарушать правила ТС, тогда и вы можете держаться в плюсе.

Заключение

Цена валюты зависит от массы причин, здесь и макроэкономическая статистика оказывает влияние, и обращения первых лиц регуляторов, даже на сплетнях денежные пары демонстрируют хорошие движения. Конкретно изменение курса дозволяет участникам биржевых торгов зарабатывать, необходимо лишь научиться брать дешевле и продавать дороже (либо напротив). Данная нехитрая на 1-ый взор схема дозволяет участнику биржевых торгов стать независимым в финансовом плане, потому трейдинг и стал так пользующимся популярностью.

Пролистать наверх