如何从Binance在R中获取加密货币烛台市场数据?

n53p2ov0  于 2024-01-03  发布在  其他
关注(0)|答案(2)|浏览(174)

我一直试图获取加密货币市场数据,事实是,我花了很长时间才找到一种方法,用R语言清晰地导入它们。
经过研究,我想我找到了一个相当简单的方法来做这件事,对于我们这些谁使用这种语言,并希望分享它。因此,下一个人有同样的问题将不必处理太多。我也认为这将是好的,如果其他人分享他们的方式做,如果有一个更容易或更快的方法,这将有助于我们谁使用R。
对于此任务,我们必须使用BinanceAPI,请参阅文档以及如何获取其他市场数据here

q3qa4bjr

q3qa4bjr1#

GET烛台数据,我们可以使用RJSONIO包中的函数fromJSON
假设我们希望以1小时的间隔查看BTC/USDT对,我们在一次请求中可以请求的最大观察量是1000,所以我们这样做:
Candlestick.data <- fromJSON("https://api.binance.com/api/v3/klines?symbol=BTCUSDT&interval=1h&limit=1000")
看到View(Candlestick.data)的数据,我们可以看到这是一个list的列表,其中每个子列表包含对应于1小时间隔的所有烛台数据(收盘价,最高价,成交量,交易数量等)。
要将列表转换为一个框架,我们可以这样做:

i <- 1:length(Candlestick.data)
df <- sapply(i, function(i){as.numeric(unlist(Candlestick.data[i]))})

字符串
通过这样做,df的每一列对应于周期(1小时前,2小时前,等等)和每一行到不同的烛台数据。因此,假设我们想要查看过去1000小时的所有收盘价,正如我们在文档中看到的那样,这是每个列表的第5个元素,所以我们可以用df[5,]来表示。
如果我们希望行是周期,列是烛台数据,我们可以用t()转置矩阵,就像这样df_t <- t(df),现在得到收盘价df_t[,5]
最后,为了使请求更容易,我们可以使用函数paste0(),现在,概括地说,我们可以这样做:

library(RJSONIO)

crypto_A <- "ETH"       # the spot market crypto_A vs crypto_B must exist in Binance 
crypto_B <- "BTC"
interval <- "15m"       # see all the possible intervals in the documentation
observations <- "1000"  # remember that the maximum is 1000

Candlestick.data <- fromJSON(paste0("https://api.binance.com/api/v3/klines?symbol=",crypto_A,crypto_B,"&interval=",interval,"&limit=",observations))

i <- 1:length(Candlestick.data)
df <- sapply(i, function(i){as.numeric(unlist(Candlestick.data[i]))})

df_t <- t(df)


希望这可以帮助,并记住阅读documentation的更多细节。

ikfrs5lh

ikfrs5lh2#

这个问题已经得到了一些关注,所以我想使用现有的R包来提供一个答案。
其中之一是cryptoQuotes,它使用高级函数从Binance中提取OHLC数据。

## 1) get BTCUSDT pair 
## from Binance spot market
## for 15m intervals
btc <- cryptoQuotes::getQuote(
  ticker   = 'BTCUSDT',
  interval = '15m',
  source   = 'binance',
  futures  = FALSE
)

字符串
btc可以传递到quantmodTTR中的所有相关函数中。下面是一个带有MACD和布林线的蜡烛图的例子。

## 1) chart using
## quantmod
quantmod::chartSeries(
  x =    tail(btc, 100),
  name = 'BTCUSDT',
  theme = quantmod::chartTheme('white')
)

## 2) add MACD
## and Bollinger BAnds
quantmod::addMACD()
quantmod::addBBands()


的数据
该软件包可以通过CRAN安装,如下所示:

## install package
install.packages('cryptoQuotes')

相关问题