Использование информации от Reading data from Dukascopy tick binary file Я внедрил свою собственную библиотеку загрузки каналов данных Dukas в C#.Dukas Tick Данные - Разница по величине разницы по котировкам
Приведенная выше ссылка подтверждает, что данные хранятся в формате большого конца и должны быть преобразованы. Окончательный ответ на ссылку выше, также указывает формат файла выглядит следующим образом:
int1 в секундах в течение этого часа (это должно быть на самом деле миллисекунды)
int2 является Ask * 10000
int3 является Bid * 10000
float1 является Ask Volume
float2 является Bid Объем
Я использую следующий фрагмент кода для считывания значения из загруженного и несжатого двоичных данных:
int hourMs = IPAddress.HostToNetworkOrder(br.ReadInt32());
double ask = IPAddress.HostToNetworkOrder(br.ReadInt32())/10000.0;
double bid = IPAddress.HostToNetworkOrder(br.ReadInt32())/10000.0;
br.ReadSingle(); // ask vol - don't need
br.ReadSingle(); // bid vol - don't need
Использование TickStory, я скачал тиковые данные для эквивалентных символов и даты, и подтвердили правильность значений миллисекунды тика.
Тем не менее, цены bid/ask неправильны на порядок. Из некоторых быстрых проверок цены на кросс-пары (а также золото) JPY на порядок ниже, а любые другие пары на порядок выше. При исправлении вручную они отлично соответствуют ценам, которые я скачал из TickStory.
Теперь я мог бы просто изменить дивизор выше 100 000 и использовать 1000 вместо этого в качестве специального случая для кросс/золота JPY - но это всего лишь лозунг, и я уверен, что это необязательно.
Есть ли что-то, что я получаю не так, как в формате, так и в кодировке endian?
Благодаря
Спасибо за комментарий - я, к сожалению, рисую полный пробел, обнаружив их документацию после нескольких часов поиска, мне повезло, что я нашел другой ответ StackOverflow. Я продолжу смотреть. – Hoodlum