You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中将Dukascopy二进制bi5数据转换为DataFrame

在R中解析Dukascopy的bi5二进制Tick数据

Dukascopy的bi5文件采用固定长度二进制格式存储tick数据,每个tick占14字节,结构如下:

  • 前4字节:小端序32位整数,表示当前tick距离当日该小时起始时刻的毫秒偏移
  • 中间4字节:小端序32位整数,买价(需除以100000转换为实际价格)
  • 接下来4字节:小端序32位整数,卖价(同样除以100000)
  • 最后2字节:小端序16位整数,成交量

完整R实现代码

结合你已有的httr请求代码,添加解析逻辑:

library(httr)

# 1. 获取bi5二进制数据
url <- "https://datafeed.dukascopy.com/datafeed/USA30IDXUSD/2022/07/15/23h_ticks.bi5"
resp <- GET(url,
            add_headers("user-agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"))

# 2. 提取原始字节流
raw_data <- content(resp, "raw")

# 3. 计算tick数量(每个tick占14字节)
tick_count <- length(raw_data) %/% 14

# 4. 初始化存储结果的向量
ms_offset <- integer(tick_count)
bid_price <- numeric(tick_count)
ask_price <- numeric(tick_count)
volume <- integer(tick_count)

# 5. 逐个解析每个tick
for (i in 1:tick_count) {
  # 计算当前tick的字节起始位置
  start_pos <- (i - 1) * 14 + 1
  end_pos <- start_pos + 13
  
  # 提取当前tick的字节块
  tick_bytes <- raw_data[start_pos:end_pos]
  
  # 解析毫秒偏移(小端32位整数)
  ms_offset[i] <- readBin(tick_bytes[1:4], what = integer(), size = 4, endian = "little")
  
  # 解析买价并转换为实际价格
  bid_raw <- readBin(tick_bytes[5:8], what = integer(), size = 4, endian = "little")
  bid_price[i] <- bid_raw / 100000
  
  # 解析卖价并转换为实际价格
  ask_raw <- readBin(tick_bytes[9:12], what = integer(), size = 4, endian = "little")
  ask_price[i] <- ask_raw / 100000
  
  # 解析成交量(小端16位整数)
  volume[i] <- readBin(tick_bytes[13:14], what = integer(), size = 2, endian = "little")
}

# 6. 转换为带完整时间戳的数据框
base_time <- as.POSIXct("2022-07-15 23:00:00", tz = "UTC")
tick_data <- data.frame(
  timestamp = base_time + ms_offset / 1000,
  bid = bid_price,
  ask = ask_price,
  volume = volume
)

# 查看解析结果
head(tick_data)

关键说明

  • 使用readBin处理二进制数据,必须指定endian = "little",这是Dukascopy bi5文件的标准存储格式
  • 价格字段需除以100000,因为数据以整数形式存储微点值
  • 毫秒偏移需与当前小时的基准时间相加,得到UTC标准时间戳
  • 若需批量处理多个bi5文件,可将解析逻辑封装为函数,循环遍历目标URL即可

内容的提问来源于stack exchange,提问作者Mislav Sagovac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:42:24