All
Filtrar por:
Como faço para depositar dinheiro na minha conta?
Eu preciso de ajuda com a verificação da conta
Por que não consigo acessar minha conta?
Há taxas de retirada de criptomoedas?
Eu preciso de ajuda para entrar na minha conta
O cliente de linha de comando da API REST em NodeJS permite acesso total à API REST da Kraken via linha de comando (como o Terminal no macOS), portanto, nenhum conhecimento de programação ou experiência com API é necessário.
Todos os recursos da API REST estão acessíveis, incluindo:
endpoints de dados de mercado públicos
endpoints de gerenciamento de conta privados
endpoints de negociação
endpoints de financiamento privados
endpoints de staking privados*
O cliente de linha de comando pode ser usado como um cliente de API autônomo ou pode ser chamado de outros programas (como outras linguagens interpretadas como scripts Bash, ou linguagens compiladas como C/C++).
1. Instale o NodeJS (se necessário).
macOS e Linux provavelmente já têm o NodeJS instalado.
O Windows provavelmente não tem o NodeJS instalado, mas ele pode ser instalado em https://www.nodejs.org/.
2. Baixe e salve o arquivo krakenapi.js em seu computador na pasta (diretório) de sua escolha. Por exemplo:
Macintosh HD > Users > Satoshi > KrakenAPI
3. Abra um prompt de comando (como o Terminal do macOS) e navegue até a pasta (diretório) escolhida na etapa anterior.
Você pode usar o comando "cd" (change directory) para navegar. Por exemplo:
cd /Users/Satoshi/KrakenAPI
4. Adicione suas chaves de API à mesma pasta onde você está mantendo o arquivo krakenapi.js.
Copie/cole sua chave pública de API do gerenciamento de conta em um arquivo de texto simples chamado "API_PUBLIC_KEY".
Copie/cole sua chave privada (secreta) de API em um arquivo de texto simples chamado "API_PRIVATE_KEY".
Uma chave de API só é necessária se você planeja usar os endpoints de API privados para acessar sua conta Kraken (como consultas de saldo, colocação/cancelamento de ordens, exportações de histórico de conta, etc).
Consulte Como gerar um par de chaves de API? para obter instruções adicionais.
O uso do cliente de linha de comando da API REST é o seguinte:
Bash
nodejs krakenapi.js endpoint [parameters]
The command line client supports all of the REST API endpoints. Here are a few example commands:
nodejs krakenapi.js Time
nodejs krakenapi.js Ticker pair=xbtusd
nodejs krakenapi.js Trades pair=etheur since=1574067140000000000
nodejs krakenapi.js Balance
nodejs krakenapi.js TradeBalance asset=xbt
nodejs krakenapi.js QueryOrders txid=O7MN22-ZCX7J-TGLQHD
nodejs krakenapi.js AddOrder pair=xbtusd type=buy ordertype=limit price=6500 volume=0.002 leverage=5
nodejs krakenapi.js CancelOrder txid=O7MN22-ZCX7J-TGLQHDBash
const axios = require("axios");
const { clear } = require("console");
const crypto = require("crypto");
const fs = require("fs");
const main = async () => {
let response = "";
let apiMethod = "";
let inputParameters = "";
const api_private = [
"Balance",
"BalanceEx",
"TradeBalance",
"OpenOrders",
"ClosedOrders",
"QueryOrders",
"TradesHistory",
"QueryTrades",
"OpenPositions",
"Ledgers",
"QueryLedgers",
"TradeVolume",
"AddExport",
"ExportStatus",
"RetrieveExport",
"RemoveExport",
"GetWebSocketsToken",
"AddOrder",
"AddOrderBatch",
"EditOrder",
"CancelOrder",
"CancelAll",
"CancelAllOrdersAfter",
"DepositMethods",
"DepositAddresses",
"DepositStatus",
"WithdrawInfo",
"Withdraw",
"WithdrawStatus",
"WithdrawCancel",
"WalletTransfer",
"Staking/Assets",
"Stake",
"Unstake",
"Staking/Pending",
"Staking/Transactions",
];
const api_public = [
"Time",
"Assets",
"AssetPairs",
"Ticker",
"OHLC",
"Depth",
"Trades",
"Spread",
"SystemStatus",
];
// Destructuring the input command
if (process.argv.length < 3) {
apiMethod = "Time";
} else if (process.argv.length == 3) {
apiMethod = process.argv[2];
} else {
apiMethod = process.argv[2];
for (count = 3; count < process.argv.length; count++) {
if (count == 3) {
inputParameters = process.argv[count];
} else {
inputParameters = inputParameters + "&" + process.argv[count];
}
}
}
// Condition to check the private or public endpoints
if (api_private.includes(apiMethod)) {
response = await QueryPrivateEndpoint(apiMethod, inputParameters);
if (apiMethod == "RetrieveExport") {
try {
fs.writeFileSync("Report.zip", response); // write the zip file response
console.log("Report.zip file successfully received");
} catch (err) {
console.log(err);
}
} else {
console.log(response.toString());
}
} else if (api_public.includes(apiMethod)) {
response = await QueryPublicEndpoint(apiMethod, inputParameters);
console.log(JSON.stringify(response));
} else {
console.log("Usage: app method [parameters]");
console.log("Example: app OHLC pair=xbtusd interval=1440");
}
};
// Public API Endpoint
async function QueryPublicEndpoint(endPointName, inputParameters) {
let jsonData;
const baseDomain = "https://api.kraken.com";
const publicPath = "/0/public/";
const apiEndpointFullURL = baseDomain + publicPath + endPointName + "?" + inputParameters;
await axios
.get(apiEndpointFullURL)
.then((res) => {
jsonData = res;
})
.catch((err) => {
jsonData = err;
});
return jsonData.data;
}
// Private API Endpoint
async function QueryPrivateEndpoint(endPointName, inputParameters) {
const baseDomain = "https://api.kraken.com";
const privatePath = "/0/private/";
const apiPublicKey = fs.readFileSync("API_PUBLIC_KEY").toString().trim(); // get data from API_PUBLIC_KEY text file
const apiPrivateKey = fs.readFileSync("API_PRIVATE_KEY").toString().trim(); // get data from API_PRIVATE_KEY text file
const apiEndpointFullURL = baseDomain + privatePath + endPointName;
const nonce = Date.now().toString();
const apiPostBodyData = "nonce=" + nonce + "&" + inputParameters;
const signature = CreateAuthenticationSignature(
apiPrivateKey,
privatePath,
endPointName,
nonce,
apiPostBodyData
);
const httpOptions = {
headers: { "API-Key": apiPublicKey, "API-Sign": signature },
responseType: "arraybuffer",
};
let jsonData;
await axios
.post(apiEndpointFullURL, apiPostBodyData, httpOptions)
.then((res) => {
jsonData = res;
})
.catch((err) => {
jsonData = err;
});
return jsonData.data;
}
// Authentication algorithm
function CreateAuthenticationSignature(
apiPrivateKey,
apiPath,
endPointName,
nonce,
apiPostBodyData
) {
const apiPost = nonce + apiPostBodyData;
const secret = Buffer.from(apiPrivateKey, "base64");
const sha256 = crypto.createHash("sha256");
const hash256 = sha256.update(apiPost).digest("binary");
const hmac512 = crypto.createHmac("sha512", secret);
const signatureString = hmac512
.update(apiPath + endPointName + hash256, "binary")
.digest("base64");
return signatureString;
}
main();*Uma visão geral dos critérios de elegibilidade (incluindo restrições geográficas) para staking pode ser encontrada aqui.