1

mt gox API (mtgox.com) を介してデータを要求しようとしていますが、基本的に R にコピーしたい Python のサンプル コードがいくつかあります。

import hmac, base64, hashlib, urllib2
base = 'https://data.mtgox.com/api/2/'

def makereq(key, secret, path, data):
hash_data = path + chr(0) + data
secret = base64.b64decode(secret)
sha512 = hashlib.sha512
hmac = str(hmac.new(secret, hash_data, sha512))

header = {
    'User-Agent': 'My-First-Trade-Bot',
    'Rest-Key': key,
    'Rest-Sign': base64.b64encode(hmac),
    'Accept-encoding': 'GZIP',
}

return urllib2.Request(base + path, data, header)

私はすでにいくつかのRコードを持っています

install.packages("base64")
install.packages("caTools")
install.packages("digest")
install.packages("RCurl")
library(RCurl)
library(caTools)
library(base64)
base<- "https://data.mtgox.com/api/2"
path<- "BTCUSD/money/ticker"
APIkey<-"******" #this is private but its a long hex number
secretAPIkey<-"*****" #this too, but this is in base64


makeReq<-function(key, secret, path, post_data)
{
  browser()
  message <- paste(path,  NULL, post_data)
  secret<-base64decode(secret,"character")
  theHmac <-hmac(secret,message,"sha512")
  header <- 
  {
    c(
    User.Agent = "My Bot",
    Rest.Key = key,
    Rest.Sign = base64encode(theHmac),
    Acccept.encoding = "GZIP"
    )
  }
  return (getURL(paste(base,path), post_data, header) )
}

ただし、「ヘッダー」を機能させる方法がわかりません。getURL() を間違って使用している可能性があります。問題全体を確認したい場合は、手順がhttps://bitbucket.org/nitrous/mtgox-api/overviewにあります。コードの最初のブロックまで下にスクロールしてください。

しかし、おそらくRヘッダー構文で基本的な間違いを犯しているだけです...

4

1 に答える 1

0

getURL の代わりに (RCurl からの) postForm を使用してみてください:

postForm(paste(base,path),
  .opts = list(postfields = post_data,
              useragent   = 'R',
              httpheader  = c('Rest-Key'  = key,
                              'Rest-Sign' = base64encode(theHmac)),
              timeout = 4,
              ssl.verifypeer = FALSE)
         )
于 2013-05-27T23:01:14.037 に答える