Dukas Tick Data - 引号上的数量级差异问题

时间:2015-04-05 18:35:29

标签: c# mt4

使用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转换中,我出错了吗?

由于

1 个答案:

答案 0 :(得分:1)

如果您的数据关闭10.0,那么Endianness是正确的。一次又一次地检查他们的文档(原始Dukas文档)。我假设他们对不同的代码使用不同的缩放因子。