1

使用从 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 交叉/黄金的特例 - 但这只是一个骗局,我确信这没有必要。

在格式或字节序转换方面我有什么问题吗?

谢谢

4

1 回答 1

1

如果您的数据在 10.0 时关闭,则字节序是正确的。一次又一次地检查他们的文档(原始的 Dukas 文档)。我假设他们对不同的代码使用不同的比例因子。

于 2015-04-05T18:43:46.987 回答