Использование редактора сценариев Google Sheets для доступа к API-интерфейсу Kraken

Я не могу понять, куда идут входы API Kraken. Я использую https://api.kraken.com/0/private/AddOrder в качестве отправной точки. Входные данные включают в себя такие вещи, как: pair = XBTUSD, type = buy, ordertype = limit и т. Д. Я - нуб API, и я понимаю, что это не типичный подход, но я был бы очень признателен за любые рекомендации.

Я успешно использовал API для других целей, таких как получение остатков на счетах. Просто не уверен, где входы подходят. Я не мог понять это из документации здесь https://www.kraken.com/help/api. Я хотел бы использовать конкретный заказ на покупку в качестве учебного примера. т.е. купить 0,003 BTC, пара XBTUSD, лимит 5000 USD...

Соответствующий кусок кода

function buyKraken () {  

  var path = "/0/private/AddOrder";   
  var nonce = new Date () * 1000;  
  var postdata = "nonce=" + nonce;  
  var signature = getKrakenSignature (path, postdata, nonce);  
  var url = 'https://api.kraken.com' + path;  

var options = {  
    method: 'post',  
    headers: {  
      'API-Key': "###########",  
      'API-Sign': signature  
    },      
    payload: postdata  
  };  
  var response = UrlFetchApp.fetch (url, options);  
  Logger.log(response);  
  ;
}

1 ответ

Для новых людей, которые могут прийти в поисках ответа, я использовал небольшую другую функцию:

    function getKrakenSignature (path, postdata, krakenSecretKey, nonce) {
        var sha256obj = new jsSHA ("SHA-256", "BYTES");
        sha256obj.update (nonce + postdata);
        var hash_digest = sha256obj.getHash ("BYTES");

        var sha512obj = new jsSHA ("SHA-512", "BYTES");
        sha512obj.setHMACKey (krakenSecretKey, "B64");
        sha512obj.update (path);
        sha512obj.update (hash_digest);
        return sha512obj.getHMAC ("B64");
     }

Я использовал функцию jsSHA из этого репозитория: https://github.com/Caligatio/jsSHA. Вам просто нужно создать новый файл в скриптах Google и скопировать / вставить исходный текст этого файла: https://raw.githubusercontent.com/Caligatio/jsSHA/master/src/sha.js

Посмотрите этот проект Github для kraken api и перейдите к части примеров.

Часть, которая вам нужна, это одна часть всего кода, пожалуйста, не копируйте и не вставляйте

function QueryPrivate($method, array $request = array())
    {
        if(!isset($request['nonce'])) {
            // generate a 64 bit nonce using a timestamp at microsecond resolution
            // string functions are used to avoid problems on 32 bit systems
            $nonce = explode(' ', microtime());
            $request['nonce'] = $nonce[1] . str_pad(substr($nonce[0], 2, 6), 6, '0');
        }
        // build the POST data string
        $postdata = http_build_query($request, '', '&');
        // set API key and sign the message
        $path = '/' . $this->version . '/private/' . $method;
        $sign = hash_hmac('sha512', $path . hash('sha256', $request['nonce'] . $postdata, true), base64_decode($this->secret), true);
        $headers = array(
            'API-Key: ' . $this->key, // "your key", 
            'API-Sign: ' . base64_encode($sign)//your signature
        );
        // make request
        curl_setopt($this->curl, CURLOPT_URL, $this->url . $path);
        curl_setopt($this->curl, CURLOPT_POSTFIELDS, $postdata);
        curl_setopt($this->curl, CURLOPT_HTTPHEADER, $headers);
        $result = curl_exec($this->curl);
        if($result===false)
            throw new KrakenAPIException('CURL error: ' . curl_error($this->curl));
        // decode results
        $result = json_decode($result, true);
        if(!is_array($result))
            throw new KrakenAPIException('JSON decode error');
        return $result;
    }

// Add a standard order: buy €300 worth of BTC at market at 2013-08-12T09:27:22+0000 
$res = QueryPrivate('AddOrder', array(
    'pair' => 'XBTCZEUR', 
    'type' => 'buy', 
    'ordertype' => 'market', 
    'oflags' => 'viqc',
    'volume' => '300', 
    'starttm' => '1376299642' 
));
print_r($res);
Другие вопросы по тегам