使用Reading data from Dukascopy tick binary file中的信息我已在C#中实现了我自己的Dukas tick数据Feed下载库。
上述链接确认数据以大端格式存储,必须进行转换。上述链接的最终答案也表明该文件的格式如下:
int1是这个小时内的秒(实际应该是这个 毫秒)
int2是Ask * 10000
int3是Bid * 10000
float1是Ask Volume
float2是出价量
我使用以下代码段从已下载和未压缩的二进制数据中读取值:
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,我已经下载了等效符号和日期的刻度数据,并确认刻度毫秒值是正确的。
然而,买/卖价格错误一个数量级。从一些快速检查来看,任何日元交叉对(以及黄金)价格都是一个数量级太低,而且任何其他对都是一个数量级太高。手动更正时,它们与我从TickStory下载的价格完全匹配。
现在,我可以简单地将除数更改为100,000并使用1,000作为JPY十字架/金币的特殊情况 - 但这只是一个躲避,我确定它没有必要。
在格式转换或endian转换中,我出错了吗?
由于
答案 0 :(得分:1)
如果您的数据仅关闭10.0,那么Endianness是正确的。一次又一次地检查他们的文档(原始Dukas文档)。我假设他们对不同的代码使用不同的缩放因子。