All
Filtrer efter:
Hvordan indbetaler jeg kontanter på min konto?
Jeg har brug for hjælp til kontoverificering
Hvorfor kan jeg ikke få adgang til min konto?
Er der gebyrer for kryptoudbetaling?
Jeg har brug for hjælp til at logge ind på min konto
Vores REST API-autentificerede endepunkter er tilgængelige via en simpel HTTP-anmodning (ligesom en webside anmodes via en webbrowser), så en API-klient til at importere markedsdata til et Google Sheet kan implementeres med blot et par linjer Google Script-kode.
Opret et nyt Google Sheet eller åbn et eksisterende ark.
Åbn scripteditoren via menuen Udvidelser -> Apps Script.
Slet den standardkode, der vises (f.eks. Vælg alt og derefter Slet/Tilbage).
Kopiér/indsæt Google Script API-koden (vist nedenfor) i scripteditoren.
Opdater eksempel-API-nøglen til at bruge en API-nøgle fra din Kraken-konto.
Valgfrit - Tilføj eventuelle yderligere brugerdefinerede funktioner, du har brug for (f.eks. for at kalde forskellige endepunkter eller returnere forskellige JSON-felter).
Gem Google Script-koden via
(Gem projekt)-ikonet.


Funktionen KAPI_Private() er ansvarlig for at oprette den passende URL, beregning af autentificeringssignaturen og foretage HTTP-anmodningen til API'en. Funktionen KAPI_Private() kan kaldes direkte ved at indtaste følgende (eller lignende afhængigt af konto-ID, endepunkt og parametre) i en Google Sheet-celle:
Bash
=KAPI_Private("TEST", "Balance", "")
=KAPI_Private("TEST", "TradeBalance", "asset=xdg")
=KAPI_Private("TEST", "OpenOrders", "userref=886794735")Funktionen KAPI_Private() returnerer det originale JSON-svar fra API'en, såsom følgende for ovenstående Balance-endepunktseksempel:
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 at placere de individuelle felter/værdier i separate celler i Google Sheet kan yderligere brugerdefinerede funktioner kaldes for at parse JSON-svaret, såsom eksemplerne KAPI_Balance()- og KAPI_OpenOrders()-funktionerne:
=KAPI_Balance("TEST")
=KAPI_OpenOrders("TEST")
Bash
=KAPI_Balance("TEST")
=KAPI_OpenOrders("TEST")Dette ville vise resultaterne svarende til følgende, hvor dataene ville være tilgængelige for enhver af de standard Google Sheets-funktioner (SUM, AVERAGE, COUNT osv.):

Authentication Algorithm:
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 at bruge følgende scripts med ovenstående Authentication Algorithm skal du blot tilføje funktionen til scriptet ovenfor.
*Bemærk venligst, at alle Private Endpoints kræver implementering af Authentication Algorithm.*
Balance:
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
}Extended Balance:
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
}Trade Balance:
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
}Open Orders:
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
}Closed Orders:
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
}TradesHistory:
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
}Open Positions:
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
}Ledgers:
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
}Query Order Info:
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 komplet Google Script-funktion, der kalder 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
}Decimal- og tusindtalsseparatorerne vist i denne artikel kan afvige fra de formater, der vises på vores handelsplatforme. Læs vores artikel om, hvordan vi bruger punkter og kommaer for mere information.
