Емельянов Иван

Читают

User-icon
7

Записи

11

Вопрос: какие рыночные данные бывают?

Вот, допустим, bars он же OHLC(V), его более-менее частный вариант trade (price, size) — конкретная сделка, еще есть quotes (ask, ask size, bid, bid size). Очень часто trade и quote объединяют в некий «tick» (иногда также называемый quote ;)), но английская вики говорит что этот самый «tick» всего-лишь шаг возможной цены, то есть употребление этого термина некорректно.

В связи с этим всем возникает ряд вопросов (PS: в смартлабовский «Задать вопрос» не уложился):
  1. Какие данные используете для торговли?
  2. Какие данные используете для бэктеста?
  3. Как это все систематизировать? Вот мое предложение:
    struct Bar {
        open: f64,
        high: f64,
        low: f64,
        close: f64,
        volume: Option<u32>,
    }
    
    struct Trade {
        price: f64,
        size: u32,
    }
    
    struct Quote {
        ask: f64,
        ask_size: u32,
        bid: f64,
        bid_size: u32,
    }
    
    enum Price {
        Bar(Bar),
        Trade(Trade),
        Quote(Quote),
    }
    
    trait MarketData {
        fn prices(&self) -> &HashMap<&'static str, Price>;
        fn timestamp(&self) -> &OffsetDateTime;
    }

    То-есть создать объединение из bar, trade, quote и назвать его price (это законно?).


( Читать дальше )

Качаем исторические данные с MOEX! (продолжение)

Итак, сразу к делу (подробности в конце). Я написал програмку для парсинга данных MOEX с помощью их API, вот, собственно она:
Качаем исторические данные с MOEX! (продолжение)

Скачать ее можно по адресу: drive.google.com/drive/folders/1SnxKojpiXD2or6begSZTkzDyDoCBla_d?usp=sharing. Т.к. компиляция производилась при помощи pyinstaller, то, скорее всего винда пожалуется на exe-шник (решение проблемы нетрудно гуглится), поэтому, и потому что люди могут сидеть не из под винды, в папке с exe-шником лежит питонячий проект. Замечание: Если хотите скачать только exe-шник, то не забудьте скачать db.json и поместить его в ту же директорию, иначе программа не запустится!

Программа качает котировки в csv файл (считайте аналог Финама) с разделителем ";".

Некоторые замечания по разработке: Изначально планировалось что все разделы (Торговая система, Рынок и т.д.) будут парсится с API, такая идея даже была осуществлена, но показала свою неэффективность, поэтому в настоящей версии парсится только период времени для которого возможно скачивание, а остальные данные берутся из db.json, которую вы можте сами дополнить (если понадабится).
При возникновении проблем связанных с интернетом (его отсутствие, отказ сервера и т.д.) в окошках «Начало периода» и «Конец периода» будут стоять даты 01.01.0001.
По любым вопросам можете писать в коментарии или ЛС. Всем добра!
Если хотите поддержать автора: Сбер — 4817 7602 2175 5865 (Емельянов Иван Д.)


Подскажите модуль python для получения текущих котировок

Всех приветствую, так получилось, что для одного дельца нужны текущие (ну или с небольшой задержкой) котировки, которые желательно бы получать с помощью некоего модуля в python. Чем больше спектр рынков и инструментов тем лучше. Буду очень признателен.

Какую информацию по активам вы бы хотели наблюдать?

Я не много балуюсь программированием и решил написать что то вроде интерактивного портфеля, но, в силу неопытности, плохо знаю спецификацию финансовых инструментов. Вообщем вопрос такой, какие инструменты (акции, облигации, пифы/etf и тд.) и какую информацию о них вы используете? А также какую информацию (для каждого инструмента свой набор) хотели бы наблюдать?

Качаем исторические данные с MOEX!

Итак, передо мной, уверен, как и перед многими, встал вопрос поиска исторической информации с Мосбиржи. Немного зная python, я написал вот такой парсер:
import requests
import datetime
import pathlib

SECIDs = ["GAZP", "BANEP", "LKOH"]
DISK = "E"
for SECID in SECIDs:
    from_date = "2020-05-04"
    to_date = "2005-01-03"
    while str(to_date) != from_date:
        to_date = str(to_date)
        to_date = to_date.split('-')
        a = datetime.date(int(to_date[0]), int(to_date[1]), int(to_date[2]))
        b = datetime.timedelta(days=140)
        to_date = a + b
        pathlib.Path("{}:/{}/{}".format(DISK, "Database_MOEX", SECID)).mkdir(parents=True, exist_ok=True)
        filename = SECID + "_" + str(to_date) + ".csv"
        with requests.get("http://iss.moex.com/iss/history/engines/stock/markets/shares/boards/tqbr/securities/{}.csv?date={}".format(SECID, to_date)) as response:
            with open("{}:/Database_MOEX/{}/{}".format(DISK, SECID, filename), 'wb') as f:
                for chunk in response.iter_content():
                    f.write(chunk)
Для начала пройдемся по его плюсам и минусам. Самый главный минус, что этот парсер качает только определенный период, который уникален для каждой акции, судя по всему для увеличения этого периода надо кинуть бирже на лапу:), и то что информация предоставляется за день, теперь перейдем к плюсам: можно выкачивать историю за определенный период для нескольких инструментов сразу (их количество ограничивается лишь количеством инструментов на мосбиржи), есть возможность назначать диск для сохранения информации, быстрота выгрузки данных.

( Читать дальше )

теги блога Емельянов Иван

....все тэги



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