All
Filtrer etter:
Hvordan setter jeg inn penger på kontoen min?
Jeg trenger hjelp med kontobekreftelse
Hvorfor kan jeg ikke få tilgang til kontoen min?
Finnes det noen gebyrer for uttak av krypto?
Jeg trenger hjelp med å logge på kontoen min
Våre autentiserte REST API-endepunkter er tilgjengelige via en enkel HTTP-forespørsel (akkurat som en nettside forespørres via en nettleser), slik at en API-klient for å importere markedsdata til et Google Sheet kan implementeres med bare noen få linjer med Google Script-kode.
Opprett et nytt Google Sheet eller åpne et eksisterende ark.
Åpne skriptredigeringsprogrammet via menyen Utvidelser -> Apps Script.
Slett standardkoden som vises (for eksempel Velg alt, deretter Slett/Tilbake).
Kopier/lim inn Google Script API-koden (vist nedenfor) i skriptredigeringsprogrammet.
Oppdater eksempel-API-nøkkelen til å bruke en API-nøkkel fra din Kraken-konto.
Valgfritt – Legg til eventuelle ytterligere tilpassede funksjoner du trenger (for eksempel for å kalle forskjellige endepunkter, eller returnere forskjellige JSON-felt).
Lagre Google Script-koden via
ikonet (Lagre prosjekt).


Funksjonen KAPI_Private() er ansvarlig for å opprette den passende URL-en, beregne autentiseringssignaturen, og utføre HTTP-forespørselen til API-en. Funksjonen KAPI_Private() kan kalles direkte ved å skrive inn følgende (eller lignende, avhengig av konto-ID, endepunkt og parametere) i en Google Sheet-celle:
Bash
=KAPI_Private("TEST", "Balance", "")
=KAPI_Private("TEST", "TradeBalance", "asset=xdg")
=KAPI_Private("TEST", "OpenOrders", "userref=886794735")Funksjonen KAPI_Private() returnerer den originale JSON-responsen fra API-en, slik som følgende for eksempelet med Balance-endepunktet ovenfor:
Bash
{"error":[],"result":{"ZUSD":"16.4272","ZEUR":"0.3880","ZJPY":"0.45","KFEE":"10368.39","XXBT":"0.0000000072","XXRP":"0.00000000","XLTC":"0.0000000100","XXDG":"13997.00000000","XXLM":"100.00000000"}}For å plassere de individuelle feltene/verdiene i separate celler i Google Sheet, kan ytterligere tilpassede funksjoner kalles for å parse JSON-responsen, slik som eksempel KAPI_Balance()- og KAPI_OpenOrders()-funksjonene:
=KAPI_Balance("TEST")
=KAPI_OpenOrders("TEST")
Bash
=KAPI_Balance("TEST")
=KAPI_OpenOrders("TEST")Dette vil vise resultatene lignende følgende, hvor dataene vil være tilgjengelige for alle standard Google Sheets-funksjoner (SUM, AVERAGE, COUNT, osv.):

Autentiseringsalgoritme:
Bash
API_Public_Key = {
'TEST': 'INSERT YOUR API PUBLIC KEY'
}
API_Private_Key = {
'TEST': 'INSERT YOUR API PRIVATE KEY'
}
function KAPI_Private(acc_id, endpoint, parameters) {
Utilities.sleep(Math.random() * 100)
api_key = API_Public_Key[acc_id]
api_secret = Utilities.base64Decode(API_Private_Key[acc_id])
api_path = Utilities.newBlob('/0/private/' + endpoint).getBytes()
api_nonce = Date.now().toString()
api_post = 'nonce=' + api_nonce + '&' + parameters
api_sha256 = Utilities.computeDigest(
Utilities.DigestAlgorithm.SHA_256,
api_nonce + api_post
)
api_hmac = Utilities.computeHmacSignature(
Utilities.MacAlgorithm.HMAC_SHA_512,
api_path.concat(api_sha256),
api_secret
)
api_signature = Utilities.base64Encode(api_hmac)
http_options = {
'method': 'post',
'payload': api_post,
'headers': {
'API-Key': api_key,
'API-Sign': api_signature
}
}
http_response = UrlFetchApp.fetch(
'https://api.kraken.com/0/private/' + endpoint,
http_options
)
api_data = http_response.getContentText()
return api_data
}For å bruke følgende skript med autentiseringsalgoritmen ovenfor, legg ganske enkelt funksjonen til skriptet ovenfor.
*Vær oppmerksom på at alle private endepunkter krever implementering av autentiseringsalgoritmen.*
Saldo:
Bash
// Formula to use in Excel cell: '=KAPI_Balance("TEST")
function KAPI_Balance(acc_id) {
acc_balances_json = JSON.parse(
KAPI_Private(acc_id, 'Balance', '')
)
acc_balances = new Array()
for (name in acc_balances_json['result']) {
acc_balances.push([
name,
parseFloat(acc_balances_json['result'][name])
])
}
return acc_balances
}Utvidet saldo:
Bash
// Formula to use in Excel cell: '=KAPI_BalanceEx("TEST")
function KAPI_BalanceEx(acc_id) {
acc_balances_json = JSON.parse(KAPI_Private(acc_id, 'BalanceEx', ''))
acc_balances = new Array
for (name in acc_balances_json['result']) {
acc_balances.push([
name,
parseFloat(acc_balances_json['result'][name]['balance']),
parseFloat(acc_balances_json['result'][name]['hold_trade']),
parseFloat(acc_balances_json['result'][name]['credit'] ? acc_balances_json['result'][name]['credit'] : '') || 0,
parseFloat(acc_balances_json['result'][name]['credit_used'] ? acc_balances_json['result'][name]['credit_used'] : '') || 0
]);
}
return acc_balances
}Handelssaldo:
Bash
// Formula to use in Excel cell: '=KAPI_TradeBalance("TEST", "ASSET")'
function KAPI_TradeBalance(acc_id, currency) {
acc_balances_json = JSON.parse(
KAPI_Private(acc_id, 'TradeBalance', 'asset=' + currency)
)
acc_balances = new Array()
for (name in acc_balances_json['result']) {
acc_balances.push([
name,
parseFloat(acc_balances_json['result'][name])
])
}
return acc_balances
}Åpne ordrer:
Bash
// Formula to use in Excel cell: '=KAPI_Private("TEST","OpenOrders","")'
function KAPI_OpenOrders(acc_id) {
acc_orders_json = JSON.parse(
KAPI_Private(acc_id, 'OpenOrders', '')
)
acc_orders = new Array()
for (name in acc_orders_json['result']['open']) {
acc_orders.push([
name,
acc_orders_json['result']['open'][name]['descr']['pair'],
acc_orders_json['result']['open'][name]['descr']['type'],
parseFloat(acc_orders_json['result']['open'][name]['descr']['price']),
parseFloat(acc_orders_json['result']['open'][name]['vol']),
parseFloat(acc_orders_json['result']['open'][name]['vol_exec']),
parseFloat(acc_orders_json['result']['open'][name]['opentm'])
])
}
return acc_orders
}Lukkede ordrer:
Bash
// Formula to use in Excel cell: '=KAPI_ClosedOrders("TEST","0")'
// Or =KAPI_PRIVATE("TEST","ClosedOrders","0")
function KAPI_ClosedOrders(acc_id, offset) {
acc_orders_json = JSON.parse(
KAPI_Private(acc_id, 'ClosedOrders', 'ofs=' + offset)
)
acc_orders = new Array()
for (name in acc_orders_json['result']['closed']) {
acc_orders.push([
name,
acc_orders_json['result']['closed'][name]['descr']['pair'],
acc_orders_json['result']['closed'][name]['descr']['type'],
acc_orders_json['result']['closed'][name]['descr']['ordertype'],
acc_orders_json['result']['closed'][name]['descr']['price'],
acc_orders_json['result']['closed'][name]['descr']['order'],
acc_orders_json['result']['closed'][name]['price'],
acc_orders_json['result']['closed'][name]['vol'],
acc_orders_json['result']['closed'][name]['vol_exec'],
acc_orders_json['result']['closed'][name]['cost'],
acc_orders_json['result']['closed'][name]['fee'],
acc_orders_json['result']['closed'][name]['status']
])
}
return acc_orders
}Handelshistorikk:
Bash
// Formula to be used in Excel cell '=KAPI_TradesHistory("TEST","0")'
function KAPI_TradesHistory(acc_id, offset) {
acc_trades_json = JSON.parse(KAPI_Private(acc_id, 'TradesHistory', 'ofs=' + offset))
acc_trades = new Array
for (name in acc_trades_json['result']['trades']) {
acc_trades.push([
name,
acc_trades_json['result']['trades'][name]['ordertxid'],
acc_trades_json['result']['trades'][name]['postxid'],
acc_trades_json['result']['trades'][name]['pair'],
acc_trades_json['result']['trades'][name]['time'],
acc_trades_json['result']['trades'][name]['type'],
acc_trades_json['result']['trades'][name]['ordertype'],
acc_trades_json['result']['trades'][name]['price'],
acc_trades_json['result']['trades'][name]['cost'],
acc_trades_json['result']['trades'][name]['fee'],
acc_trades_json['result']['trades'][name]['vol'],
acc_trades_json['result']['trades'][name]['margin'],
acc_trades_json['result']['trades'][name]['leverage'],
acc_trades_json['result']['trades'][name]['misc'],
acc_trades_json['result']['trades'][name]['trade_id'],
acc_trades_json['result']['trades'][name]['maker']
])
}
return acc_trades
}Åpne posisjoner:
Bash
//Formula to use in Excel Cell '=KAPI_Private("TEST", "OpenPositions", "docalcs=true")'
function KAPI_OpenPositions(acc_id) {
acc_positions_json = JSON.parse(
KAPI_Private(acc_id, 'OpenPositions', 'docalcs=true')
)
acc_positions = new Array()
for (name in acc_positions_json['result']) {
acc_positions.push([
name,
acc_positions_json['result'][name]['ordertxid'],
acc_positions_json['result'][name]['posstatus'],
acc_positions_json['result'][name]['pair'],
acc_positions_json['result'][name]['type'],
acc_positions_json['result'][name]['ordertype'],
acc_positions_json['result'][name]['cost'],
acc_positions_json['result'][name]['fee'],
acc_positions_json['result'][name]['vol'],
acc_positions_json['result'][name]['vol_closed'],
acc_positions_json['result'][name]['margin'],
acc_positions_json['result'][name]['value'],
acc_positions_json['result'][name]['net'],
acc_positions_json['result'][name]['time']
])
}
return acc_positions
}Hovedbøker:
Bash
//Formula to use in Excel Cell '=KAPI_Ledgers("TEST", "0")'
function KAPI_Ledgers(acc_id, offset) {
acc_ledgers_json = JSON.parse(KAPI_Private(acc_id, 'Ledgers', 'ofs=' + offset))
acc_ledgers = new Array
for ( name in acc_ledgers_json['result']['ledger'] ) {
acc_ledgers.push([name, acc_ledgers_json['result']['ledger'][name]['refid'], acc_ledgers_json['result']['ledger'][name]['time'], acc_ledgers_json['result']['ledger'][name]['type'], acc_ledgers_json['result']['ledger'][name]['subtype'], acc_ledgers_json['result']['ledger'][name]['asset'], acc_ledgers_json['result']['ledger'][name]['amount'], acc_ledgers_json['result']['ledger'][name]['fee'], acc_ledgers_json['result']['ledger'][name]['balance']])
}
return acc_ledgers
}Spørring ordreinfo:
Bash
// Formula to use in Excel cell '=KAPI_QueryOrders("TEST","Order ID")'
function KAPI_QueryOrders(acc_id, order_id) {
acc_orders_json = JSON.parse(
KAPI_Private(acc_id, 'QueryOrders', 'txid=' + order_id)
)
acc_orders = new Array()
for (name in acc_orders_json['result']) {
acc_orders.push([
name,
acc_orders_json['result'][name]['descr']['pair'],
acc_orders_json['result'][name]['descr']['type'],
acc_orders_json['result'][name]['descr']['ordertype'],
acc_orders_json['result'][name]['descr']['price'],
acc_orders_json['result'][name]['descr']['order'],
acc_orders_json['result'][name]['price'],
acc_orders_json['result'][name]['vol'],
acc_orders_json['result'][name]['vol_exec'],
acc_orders_json['result'][name]['cost'],
acc_orders_json['result'][name]['fee'],
acc_orders_json['result'][name]['status']
])
}
return acc_orders
}Eksempel på en full Google Script-funksjon som kaller TradesHistory-endepunktet:
Bash
const API_Public_Key = { 'TEST':'API PUBLIC KEY'}
const API_Private_Key = { 'TEST':'API PRIVATe KEY' }
function KAPI_Private(acc_id, endpoint, parameters) {
Utilities.sleep(Math.random() * 100)
api_key = API_Public_Key[acc_id]
api_secret = Utilities.base64Decode(API_Private_Key[acc_id])
api_path = Utilities.newBlob('/0/private/' + endpoint).getBytes()
api_nonce = Date.now().toString()
api_post = 'nonce=' + api_nonce + '&' + parameters
api_sha256 = Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256, api_nonce + api_post)
api_hmac = Utilities.computeHmacSignature(Utilities.MacAlgorithm.HMAC_SHA_512, api_path.concat(api_sha256), api_secret)
api_signature = Utilities.base64Encode(api_hmac)
http_options = {'method':'post', 'payload':api_post, 'headers':{'API-Key':api_key, 'API-Sign':api_signature}}
http_response = UrlFetchApp.fetch('https://api.kraken.com/0/private/' + endpoint, http_options)
api_data = http_response.getContentText()
return api_data
}
function KAPI_TradesHistory(acc_id, offset) {
acc_trades_json = JSON.parse(KAPI_Private(acc_id, 'TradesHistory', 'ofs=' + offset))
acc_trades = new Array
for (name in acc_trades_json['result']['trades']) {
acc_trades.push([
name,
acc_trades_json['result']['trades'][name]['ordertxid'],
acc_trades_json['result']['trades'][name]['postxid'],
acc_trades_json['result']['trades'][name]['pair'],
acc_trades_json['result']['trades'][name]['time'],
acc_trades_json['result']['trades'][name]['type'],
acc_trades_json['result']['trades'][name]['ordertype'],
acc_trades_json['result']['trades'][name]['price'],
acc_trades_json['result']['trades'][name]['cost'],
acc_trades_json['result']['trades'][name]['fee'],
acc_trades_json['result']['trades'][name]['vol'],
acc_trades_json['result']['trades'][name]['margin'],
acc_trades_json['result']['trades'][name]['leverage'],
acc_trades_json['result']['trades'][name]['misc'],
acc_trades_json['result']['trades'][name]['trade_id'],
acc_trades_json['result']['trades'][name]['maker']
])
}
return acc_trades
}Desimal- og tusenskilletegnene som vises i denne artikkelen, kan avvike fra formatene som vises på våre handelsplattformer. Se vår artikkel om hvordan vi bruker punktum og komma for mer informasjon.
