R语言quantmod包EURUSD数据与Boursorama在线图表差异求助
解决quantmod绘制EURUSD蜡烛图与Boursorama图表差异的问题
出现这种差异通常是以下几个原因导致的,对应解决方法如下:
1. 报价方向颠倒
Yahoo Finance的EURUSD=X标的实际是美元兑欧元(USDEUR)的汇率(即1美元兑换多少欧元),而Boursorama上的EURUSD是欧元兑美元(EURUSD)(1欧元兑换多少美元),两者互为倒数,这是图表走势完全相反的核心原因。
解决代码:
library(quantmod) getSymbols("EURUSD=X", src='yahoo') # 反转报价方向,得到欧元兑美元汇率 EURUSD <- 1/`EURUSD=X` # 重新绘制蜡烛图 chartSeries(EURUSD, type="candlesticks", subset='2024-01::2024-03', theme=chartTheme('black'))
2. 时区差异导致日期对齐偏差
Yahoo Finance的外汇数据默认使用纽约时区(America/New_York),而Boursorama作为欧洲平台,使用的是中欧时区(Europe/Paris)。不同时区的交易日划分会导致日线数据的起始/结束时间不一致,部分日期的数据会出现偏移。
解决代码:
# 转换数据时区到中欧时间 index(EURUSD) <- with_tz(index(EURUSD), tz = "Europe/Paris") # 再次绘图 chartSeries(EURUSD, type="candlesticks", subset='2024-01::2024-03', theme=chartTheme('black'))
3. 数据源底层差异
如果上述调整后仍有细微差异,可能是因为不同平台使用的数据源不同(比如Yahoo用的是某家美国交易所数据,Boursorama用的是欧洲交易所或ECB官方数据)。可以尝试更换数据源获取更匹配的数据:
方法:使用ECB官方汇率数据
library(ecb) library(quantmod) # 从欧洲央行获取欧元兑美元的每日官方汇率 eurusd_data <- get_data(key = "EXR.D.EUR.USD.SP00.A", start_date = "2024-01-01", end_date = "2024-03-31") # 转换为quantmod兼容的xts对象 eurusd_xts <- xts(eurusd_data$obs_value, order.by = eurusd_data$date) colnames(eurusd_xts) <- "EURUSD" # 绘制折线图(ECB官方数据仅提供收盘价,若需蜡烛图需更换支持OHLC的专业外汇数据源) chartSeries(eurusd_xts, type="line", theme=chartTheme('black'))
如果需要完整的OHLC蜡烛图数据,可以考虑使用专业外汇数据源的API(如OANDA),quantmod也支持通过getSymbols("EUR/USD", src="oanda")获取,但需要提前配置API密钥。
内容的提问来源于stack exchange,提问作者Lancelotb
相关产品推荐
相关产品推荐

