All
Filtern nach:
Wie zahle ich Cash auf mein Konto ein?
Ich brauche Hilfe bei der Kontoverifizierung
Warum kann ich nicht auf mein Konto zugreifen?
Gibt es Gebühren für das Auszahlen von Krypto?
Ich brauche Hilfe bei der Anmeldung bei meinem Konto
Der REST API-Befehlszeilen-Client in NodeJS ermöglicht den vollständigen Zugriff auf die Kraken REST API über die Befehlszeile (z. B. Terminal unter macOS), sodass keine Programmierkenntnisse oder API-Erfahrung erforderlich sind.
Alle REST API-Funktionen sind zugänglich, einschließlich:
öffentliche Marktdaten-Endpunkte
private Kontoverwaltungs-Endpunkte
Handels-Endpunkte
private Funding-Endpunkte
private Staking-Endpunkte*
Der Befehlszeilen-Client kann als eigenständiger API-Client verwendet oder von anderen Programmen (wie anderen interpretierten Sprachen wie Bash-Skripten oder kompilierten Sprachen wie C/C++) aufgerufen werden.
1. NodeJS installieren (falls erforderlich).
macOS und Linux haben NodeJS wahrscheinlich bereits installiert.
Windows hat NodeJS wahrscheinlich nicht installiert, aber es kann von https://www.nodejs.org/ installiert werden.
2. Laden Sie die krakenapi.js Datei auf Ihren Computer in den Ordner (Verzeichnis) Ihrer Wahl herunter und speichern Sie sie. Zum Beispiel:
Macintosh HD > Users > Satoshi > KrakenAPI
3. Öffnen Sie eine Eingabeaufforderung (z. B. das Terminal von macOS), und navigieren Sie zu dem Ordner (Verzeichnis), das im vorherigen Schritt ausgewählt wurde.
Sie können den Befehl „cd“ (change directory) verwenden, um zu navigieren. Zum Beispiel:
cd /Users/Satoshi/KrakenAPI
4. Fügen Sie Ihre API-Schlüssel in denselben Ordner, in dem Sie die krakenapi.js Datei aufbewahren.
Kopieren/fügen Sie Ihren öffentlichen API-Schlüssel aus der Kontoverwaltung in eine einfache Textdatei namens „API_PUBLIC_KEY“.
Kopieren/fügen Sie Ihren privaten (geheimen) API-Schlüssel in eine einfache Textdatei namens „API_PRIVATE_KEY“.
Ein API-Schlüssel wird nur benötigt, wenn Sie die privaten API-Endpunkte verwenden möchten, um auf Ihr Kraken-Konto zuzugreifen (z. B. Saldoabfragen, Platzieren/Stornieren von Aufträgen, Export von Kontoverläufen usw.).
Siehe Wie generiere ich ein API-Schlüsselpaar? für weitere Anweisungen.
Die Verwendung des REST API-Befehlszeilen-Clients ist wie folgt:
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();*Eine Übersicht über die Zulassungskriterien (einschließlich geografischer Beschränkungen) für Staking finden Sie hier.