Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

112 Commits

Repository files navigation

Исторические данные брокера OlympTrade

Описание

РЕПОЗИТОРИЙ БОЛЬШЕ НЕ ОБНОВЛЯЕТСЯ!

Данный репозиторий содержит исторические данные котировок и процентов выплат брокера OlympTrade

  • Файлы обновляются в репозитории каждый торговый день в 00:00 GMT
  • Один файл соответствует одному дню, название файла формируется из даты
  • Файлы содержат информацию о следующих валютных парах или индексов (см. parameters.json)

Структура файлов исторических данных по процентам выплат брокера

Папка proposal_data содержит файлы с процентами выплат для нескольких валютных пар. Однин сэмпл файла соответствует одной секунде. Один файл соответствует одному дню, название файла формируется из даты. Проценты выплат хранятся в двоичном формате для уменьшения размера файлов. В начале файла есть заголовок-строка, оканчивающееся символом \n и содержащая в формате JSON информацию. Пример заголовка:

{"sample_len":84,"symbols":["EURRUB","CHFJPY","HG","GBPCHF","GBPAUD","USDRUB","AUDUSD","TSLA","ETCUSD","BTGUSD","CADCHF","FCE","TF","DASHUSD","EURCAD","ES","XAGUSD","LTCUSD","CADJPY","BMW","NZDJPY","USDTRY","AUDJPY","Z","USDNOK","EURUSD","LTCBTC","ZECUSD","USDCAD","XMRUSD","MSFT","NINTENDO_JP","BA","USDCHF","NZDUSD","FB","USDJPY","AUDCHF","EURCHF","V","ETHUSD","NKD","GBPNZD","GBPUSD","FDAX","_BRN","AUDNZD","HSI","MCD","SBUX","USDMXN","EURJPY","EURAUD","NZDCHF","Bitcoin","KO","XAUUSD","IBM","NG","AAPL","FESX","EURGBP","ETHBTC","BCHUSD","XRPUSD","GBPCAD","NQ","USDCLP","PL","EURNZD","GBPJPY","NZDCAD","GOOGL","YM","USDSGD","AUDCAD"]}
  • sample_len - длина одного сэмпла соответствующего одной секунде дня, в байтах
  • symbols - массив валютных пар

После заголовка идет массив бинарных данных, состоящий из сэмплов. Каждый сэмпл содержит значения процентов выплат для всех валютных пар в порядке их чередования, указанном в заголовке, а также содержит timestamp длиной 8 байт в конце сэмпла. Для сокращения данных проценты выплат хранятся в виде одного байта данных. Чтобы получить значение типа float или double, необходимо разделить считанное из файла значение на 100. Пример:

unsignedchar raw_proposal;
// читаем данные в raw_proposal
file.read(reinterpret_cast<char *>(&raw_proposal), sizeof (raw_proposal));
//...// восстанавливаем данныеfloat proposal = (float)raw_proposal / 100.0f;

Пример кода, который читает файл целиком:

// загружаем настройки
std::ifstream fin(file_name);
std::string _s;
std::getline(fin, _s);
// парсим JSON строку
json j_pp = json::parse(_s);
// запоминаем смещение в файле (нужно так как бинарные данные расположены после заголовка)unsignedlong start_pos = _s.size();
fin.close();
unsignedlong sample_size = j_pp["sample_len"]; // длина одного сэмпла// читаем бинарные данные
std::ifstream i(file_name, std::ios_base::binary);
i.seekg (0, std::ios::end); // смещаемся в конец файлаunsignedlong data_size = i.tellg(); // получаем размер файла// 2- это магическое число появляется из-за символов переноса строки
data_size = data_size - start_pos - 2; // получаем размер файла без заголовка
i.seekg (start_pos + 2, std::ios::beg); // смещаемся в начало бинарных данных
i.clear(); // очищаем флаги, навсякий случай// проверяем кратность размера данных размеру сэмплаif(data_size % sample_size != 0) {
// если кратности нет, то дела плохиreturnfalse;
}
// получаем количество эсмпловunsignedlong sample_num = data_size / sample_size;
// получаем количество валютных парunsignedlong symbols_size = j_pp["symbols"].size();
for(unsignedlong n = 0; n < sample_num; ++n) { // читаем все сэмплыfor(unsignedlong s = 0; s < symbols_size; ++s) { // в каждом сэмпле читаем все валютные парыunsignedchar temp = 0;
i.read(reinterpret_cast<char *>(&temp), sizeof (temp));
double proposal_data = (double)temp / 100.0d;
/* делаем что хотим с данными процентов выплат (proposal_data) * данные представлены от 0.0 (0%) до 1.0 (100%)*/
}
unsignedlonglong timestamp = 0;
// читаем временную метку
i.read(reinterpret_cast<char *>(&timestamp), sizeof (timestamp));
// в переменной timestamp находится время, когда данные процентов выплат были актуальны
}
i.close();
// конец

About

Данный репозиторий содержит исторические данные котировок и процентов выплат брокера OlympTrade

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors