Как прочитать кадр данных в .bi5 - алгоритм сжатия LZMA - в R? - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь прочитать файл Ducascopy .bi5.

Это можно загрузить вручную с веб-сайта ниже как csv, но это распакованная версия ряда файлов.См .: https://www.dukascopy.com/swiss/english/marketwatch/historical/

Вот прямая ссылка на один из сжатых файлов.

https://datafeed.dukascopy.com/datafeed/AUSUSD/2018/08/24/BID_candles_min_1.bi5

Файлы, которые я скачал, называются как «00h_ticks.bi5».Эти файлы 'bi5' представляют собой сжатые файлы двоичных данных LZMA.Файл двоичных данных форматируется в 20-байтовые строки.

32-разрядное целое число: минуты с начала 32-разрядного плавания: цена предложения 32-разрядное плавание: цена предложения 32-разрядное плавание: объем предложения 32-разрядноеfloat: Bid volume Цена спроса и предложения должна быть умножена на значение пункта для пары символ / валюта.

Каждый файл имеет 1440 записей + заголовок.Есть 5 столбцов + метка времени.

Эпоха извлекается из URL (и структура папок используется для хранения файлов на диске).Он представляет момент времени, когда файл начинается с, например, 2018/08/24 / BID_candles_min_1.bi5 эпохи полуночи 24 августа 2018 года.

Вывод выглядит следующим образом: enter image description here

См. Связанный питон: Распаковать и прочитать Dickascopy .bi5 файлы тиков

См. Связанные в C: https://github.com/ninety47/dukascopy/blob/master/README.md

Необходимо запуститьв R. Согласно статье здесь это возможно как в Python, так и в c.Я нашел довольно мало информации об этом, но никакого реального решения!

Я пытался использовать пакет brotli, но это совершенно неправильно:

install.packages('brotli')
library(brotli)


myfile <- file.path(getwd(), "BID_candles_min_1.bi5")
x <- readBin(myfile, raw(), file.info(myfile)$size)

myfile
getwd()


x

из руководства:

Декомпрессия Brotli, по крайней мере, так же быстро, как и для gzip, значительно улучшая степень сжатия.Мы платим за то, что сжатие намного медленнее, чем gzip.Поэтому Brotli наиболее эффективен для показа статического содержимого, такого как шрифты и HTML-страницы.Для двоичных (нетекстовых) данных степень сжатия Brotli обычно не превышает bz2 или xz (lzma), однако декомпрессия для этих алгоритмов слишком медленная для браузеров, например, на мобильных устройствах.

Он читает, новывод странный.я только что нашел ссылку на lzma

Также попробовал базовую версию:

txt <- readLines(file.path(getwd(), "BID_candles_min_1.bi5"))

txt2 <- strsplit(memDecompress(txt, "xz", asChar = T), "\n")[[1]]

из справки:

Сжатие с type = "xz" эквивалентно сжатию файла сxz -9e (включая добавление заголовка 'magic'): декомпрессия должна справляться с содержимым любого файла, сжатого с помощью xz версии 4.999 и некоторых версий lzma.Существуют и другие версии, в частности «необработанные» потоки, которые в настоящее время не обрабатываются.

В поисках реального решения R!

В качестве альтернативы R должен иметь возможность загружать CSV изсеанс браузера.

Заранее спасибо

...