Блог им. nxt

Бесплатная тиковая база данных (CME)

    • 15 февраля 2016, 18:22
    • |
    • nxt
  • Еще

Всем привет.

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

FTP доступ: 

85.25.211.62
login: smartlab
pass: smartlabpass

Ссылки на торрент: http://ge.tt/1Ql8j3Y2

№2: app.box.com/s/h0dhmkif0fhnvlpzdp8ma89c1ysv876t

Формат данных:


seconds (int32) — кол-во секунд с начала суток по Чикаго.
milliseconds (int32)
price (int32)
volume (int32)
bestBidPrice (sbyte) — расстояние в тиках между price и реальной ценой BidPrice
bestAskPrice (sbyte) - расстояние в тиках между price и реальной ценой AskPrice
bestBidSize (int32) — доступно с июня 2015
bestAskSize (int32) - доступно с июня 2015

Ниже код для чтения бинарных файлов (На C#).

Создаем класс Tick:

  1. public class Tick
  2. {
  3. public DateTime Time { get; set; }
  4. public int Price { get; set; }
  5. public int Volume { get; set; }
  6. public int BidPrice { get; set; }
  7. public int AskPrice { get; set; }
  8. public int BidSize { get; set; }
  9. public int AskSize { get; set; }
  10. public TickSide TickSide { get; set; } //Enum — TickSide.Ask, TickSide.Bid
  11. }


Далее читаем файл через BinaryReader:

  1. using(BinaryReader reader = new BinaryReader(File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.Read)))
  2. {
  3.  
  4. while (reader.BaseStream.Position != reader.BaseStream.Length)
  5. {
  6. int seconds = reader.ReadInt32();
  7. DateTime tickTime = currentDate.Date.AddSeconds(seconds);
  8.  
  9. if (tickTime.Date != currentDate.Date)
  10. break;
  11.  
  12. int milliseconds = reader.ReadInt32();
  13. int price = reader.ReadInt32();
  14. int volume = reader.ReadInt32();
  15. sbyte bid = reader.ReadSByte();
  16. sbyte ask = reader.ReadSByte();
  17. int bidSize = reader.ReadInt32();
  18. int askSize = reader.ReadInt32();
  19. tickTime = tickTime.AddMilliseconds(milliseconds);
  20.  
  21. Tick tick = new Tick
  22. {
  23. Time = tickTime,
  24. Price = price,
  25. Volume = volume,
  26. BidPrice = bid,
  27. AskPrice = ask,
  28. BidSize = bidSize,
  29. AskSize = askSize,
  30. };
  31.  
  32. GetTickSide(tick);
  33. }
  34. }


Метод GetTickSide:

  1. private void GetTickSide(Tick tick)
  2. {
  3. if (tick.BidPrice <= 0)
  4. tick.TickSide = TickSide.Bid;
  5. else if (tick.AskPrice <= 0)
  6. tick.TickSide = TickSide.Ask;
  7. }

Чтобы получить читабельные цены bestBidPrice и bestAskPrice:

  1. int readableAskPrice = tick.price + (tick.AskPrice * priceStep);
  2. int readableBidPrice = tick.price — (tick.BidPrice * priceStep);

… где priceStep это шаг цены. Например шаг цены для ES = 25 (а не 0.25), Для GC/CL = 1 (а не 0.1/0.01) и так далее.

Все цены хранятся в int32, так как меньше весят, поэтому, чтобы получить цены с точкой, необходимо tick.price / (10 * кол-во знаков после точки).

P/s:
Просьба Тимофею Мартынову — сделайте пожалуйста подсветку кода на смартлабе.

Поставьте пожалуйста плюс чтобы вышло на главную! 

★92
83 комментария
Спасибо
avatar
Спасибо)
Спасибо!
avatar
Спасибо
avatar
Мне не надо, но все равно большое спасибо! Так как знаю как тяжело достать подобные данные.  
avatar
А можно выложить в обычном формате?
avatar
Идущий по воде, другого формата нет, можно прочитать как показано, и дальше хранить в любом другом виде.
avatar
nxt, жаль. У меня нет компилятора С. И я не — программист 
avatar
Идущий по воде, не C, а C#. Вот годная IDEшечка https://sourceforge.net/projects/sharpdevelop/?source=directory
avatar
а откуда данные — кто провайдер и чем писали
надо понимать степень доверия к выложенным данным 
в любом случае спасибо 
avatar
rutrader, данные записывались с IQFeed.
avatar
avatar
Ага, где вы это находите...((
avatar
nxt, «Ссылка на торрент: http://ge.tt/1Ql8j3Y2»
avatar
Ага, у меня браузер тоже хром, последнее версии. Такого не выдает.
avatar
nxt, ХЗ )
avatar
Ага, ну а если включить голову и подумать?
это относится к сайту ge.tt, куда выкладывают все кто что ни попадя и хром проявляет чудеса тупости. впрочем, скачать торрент хром не даст. при том, что сам .torrent файл в принципе никакого вреда причинить не может. короче, не ведитесь на бредни хрома.
avatar
Пробуйте тут скачать: https://app.box.com/s/h0dhmkif0fhnvlpzdp8ma89c1ysv876t
avatar
nxt, 403 forbidden. Залейте пожалуйста еще куданибудь.
avatar
AnCh, по двум ссылкам не работает?
avatar
тиковая база данных хорошо звучит :)
avatar
спасибо. Редко когда кто-то столь щедр.

Вижу, что была попытка сделать формат хранения эффективным)

К стати, если хотите сделать реально эффективный бинарный формат, то или смотрите в сторону ФАСТ, и реализуйте упрощенную реализацию с дельтами, или сравнивайте две последовательных структуры, как массивы байт, и передавайте дельты + обязательное использование битовых масок)
avatar

Lafert, спасибо. Идей масса, руки не доходят пока.

Вроде и так быстро читается, хотя можно сделать в 40-60 раз быстрее.

avatar

nxt, спасибо за данные. 

Это разовая раздача или постоянная и будет обновляться?

Есть ли пропуски в данных? 

Тоже храню данные в бинарном формате, используя struct[].

При этом можно запись и загрузку cделать одной операцией, читая/записывая целиком файл как byte[] и преобразуя его в/из struct[]. Очень быстро получается.

 

avatar
Пожалуй, поддержу раздачу :)
Прям бигдата какая-то
avatar
Молодчина!!!
avatar
Красава!
avatar
Спасибо. Tozhe kachal kazhdyi den' napryamuyu s CME web site. Ne vsegda udavalos' poluchit' polnye  dannye — sboi s vykladyvaniem dannyh na web site
nxt, Спасибо БОЛЬШОЕ.
Посмотри пожалуйста, архивы  начиная  с  6A\03-15\20150317.zip и до 6A\03-15\20150321.zip имеют нулевой размер.  Их действительно нет? 
avatar
ALEKKO, если нулевой, значит данных нет.
avatar
torrent stuck at 53.7% — no seeds
Самый лучший трейдер смартлаба, у меня торрент запущен всегда.
avatar
Спасибо. Плюсанул бы, если мог.
avatar
спасибо огромное!
 по фтп кста сильно было бы быстрее если б все зипы в один архив потом еще завернуть. фтп в силу своей сущности тормозит на тысячах файлов
avatar
Vitty, TotalCommander или FileZilla в помощь… ;-)
avatar
ch5oh, причем тут FileZilla?  суть древнего как говно мамонта протокола FTP ущербна, он открывает новое соединение на каждый файл; десятки тысяч файлов в любой программе будут качаться на порядок медленнее чем если б это был монолитный архив.
avatar
Vitty, =) хотел бы подчеркнуть, что лучше не ворчать "почему формат файлов лично мне неудобный", а поблагодарить господина nxt за то, что он выложил в паблик архив данных  рыночной стоимостью порядка $1-3k (или даже больше).
avatar
ch5oh, во1ых, поблагодарил сразу. во2ых, неудобный всем, в том числе и ему (нагрузка на его сервер лишняя, если начнут качать массово, натуральный DDOS получится)

если вы в чем-то не разбираетесь, лучше помолчите.
avatar

Vitty, а как ему делать «ежедневное обновление» потом?

Весь зип перепаковывать?

К вечеру у Вас весь архив выкачается — вот возьмите и перепакуйте.

Заодно можете в нормальный CSV конвертнуть (с указнием времени по MSK желательно).

Вам люди тоже плюсов наставят.

avatar

Vitty, поэтому залил торрент. FTP согласен, что фигня полная.

avatar

Плюс в профиль однозначно!

Напишите, пожалуйста, сразу в тексте новости с какой даты собраны данные?

Хотя бы по основным фьючерсам ES, YM...

avatar
ch5oh, это можно посмотрите через ftp или торрент, там все видно.
avatar
Всё! Теперь придется писать утилиту, чтобы автоматически скачивала каждый день обновления. ;-)
avatar
ch5oh, могу дать код для скачивания файлов по Tcp с помощью запроса.
avatar
nxt, подскажите тикеры rs* это с московской биржи?
avatar
Тунеядец, да, но там нет цен bid/ask и bidsize/asksize
avatar

А расскажите, пожалуйста, ещё про логику именования директорий?

Я что-то не улавливаю системы… =(

Ну, кроме разбиения по тикерам, естетственно.

avatar
ch5oh, судя по всему тикер\дата экспирации\дата торгов.зип
avatar
автору мегареспект!
avatar
Тунеядец, спасибо! Похоже, так и есть. =)
avatar
ch5oh, Instrument/Contract/Date
avatar
Автору спасибо от души.
Люди добрые, кто уже скачал торрент, встаньте на раздачу, пожалуйста. Всего-то три с половиной гига, всякой муры раздают, а тут реально ценная инфа — и никого!

Инструкция для тех, у кого браузеры выкаблучиваются и блокируют торрент:
есть такая штука… Блин, забыл… Вертится на языке… А! Вспомнил! Майкрасофт интернет эксплорер! Во! Из него можно скачать =)
Fry (Антон)



автору спасибо, но никогда я столько не ругался — 2 ссылки не скачивают ни одним браузером мира
может кто тупо выложит торрент-файл на файлообменник да и все?
avatar

Remarka, может стоит поставить google chrome?

ge.tt и есть файлообменник.

avatar

nxt, даже самая последняя версия хрома дает красный экран

ну не сложно же на мейл-облако кому-нибудь выложить?)

avatar
Remarka, https://yadi.sk/d/PDjXBjlyovjgL
avatar
nxt, спасибо!
avatar
Remarka, у вас какой-то древний браузер
avatar
и обновляется по итогу дня.
Вы будете выкладывать обновления?
avatar
destr, очевидно если на ftp логин сохранится, то можно будет там скачивать.
Только вот я до сих пор ничего не получил. Торент не качается. К ftp подключение идёт неадекватное (что-то от меня утекает, ко мне ничего). Лень смотреть что же там не так, но по факту нет никаких котировок пока.
Жду раздачу на торренте.
Fry (Антон), у меня тоже торрент всё ещё  не качается
avatar
destr, только что попробовал на разные PC — все качается нормально, торрент онлайн. Почему у вас не получается я не знаю
avatar
Ничего не поняла, но альтруизм — это круто. 
avatar

В идеале ссылку на торрент надо бы на РуТрекер кинуть...

Без трекера насколько понимаю юзерам довольно сложно друг про друга узнать...

ПС Ещё раз респект и благодарность.

Особенно если будут обновления регулярные...

 

ППС Утилитку для скачивания по TCP можно по идее на тот же FTP Сервер кинуть для полноты картины...

avatar
nxt, Спасибо )
avatar
Большое спасибо, а можно расшифровку по продуктам? Файлик или здесь выложить.
avatar
OlegPypkin, какую расшифровку? Не понимаю
avatar
nxt, ну что значит каждое сокращение, какой продукт подразумевается под сокращением, спасибо!
avatar

уже два дня как застыл, может кто виноват, а главное что делать?

 

avatar

Самый лучший трейдер смартлаба, да. это успокаивает

avatar
Кто-то смог докачать до 100 %?
avatar
Кто смог докачать до 100 %?
я с FTP все за раз забрал.
Выложите пожалуйста расшифровку по инструментам, спасибо!
avatar


Подскажите, плз, как разобрать данные, беру этот файл \85.25.211.62_CME\CL\09-16\20160811.zip, далее:
while (reader.BaseStream.Position != reader.BaseStream.Length)
{
  var seconds = reader.ReadInt32(); // кол — во секунд с начала суток по Чикаго.
  var milliseconds = reader.ReadInt32();
  var price = reader.ReadInt32();
  var volume = reader.ReadInt32();
  var bestBidPrice = reader.ReadSByte(); // расстояние в тиках между price и реальной ценой BidPrice
  var bestAskPrice = reader.ReadSByte(); // расстояние в тиках между price и реальной ценой AskPrice
  var bestBidSize = reader.ReadInt32(); // доступно с июня 2015
  var bestAskSize = reader.ReadInt32(); // доступно с июня 2015

...,

результат:
seconds: 559903
milliseconds: 0
price: -571736060
volume: -1256416249
bestBidPrice: -43
bestAskPrice: 0
bestBidSize: -882470416
bestAskSize: -1680396875

seconds: 1813515707
milliseconds: 1662566810
price: 135300620
volume: 793540541
bestBidPrice: -90
bestAskPrice: -124
bestBidSize: 134494738
bestAskSize: -1869111003

seconds: 635984848
milliseconds: 658657460
price: -2078014960
volume: -197326826
bestBidPrice: 26
bestAskPrice: 122
bestBidSize: 2130969167
bestAskSize: 1319022063

seconds: -288566662
milliseconds: -1646338850
price: -541122783
volume: -134513891
bestBidPrice: -45
bestAskPrice: 104
bestBidSize: -750349772
bestAskSize: 1090969396

Что-то тут не то, секунды, цены прыгают на порядок.

Формат данных действительно указан верно?
Кто-то разбирал эти бинарники?
avatar
eliteclub, нужно сначала zip распаковать.
avatar
Блин, вот я дурень — спасибо!
avatar
я так понимаю тема умерла, может кто подскажет где историю  e-mini sp500 найти?
avatar

теги блога nxt

....все тэги



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