使用从 Dukascopy 刻度二进制文件中读取数据中的信息,我在 C# 中实现了我自己的 Dukas 刻度数据提要下载库。
以上链接确认数据以大端格式存储,必须进行转换。上面链接的最终答案也表明文件的格式如下:
int1 是这个小时内的秒数(这实际上应该是毫秒)
int2 是问 * 10000
int3 是出价 * 10000
float1 是卖出量
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 交叉/黄金的特例 - 但这只是一个骗局,我确信这没有必要。
在格式或字节序转换方面我有什么问题吗?
谢谢