All
กรองโดย:
ฉันจะฝากเงินสดเข้าบัญชีของฉันได้อย่างไร
ฉันต้องการความช่วยเหลือเกี่ยวกับการตรวจสอบยืนยันบัญชี
ทำไมฉันเข้าถึงบัญชีของฉันไม่ได้
มีค่าธรรมเนียมการถอนคริปโตหรือไม่
ฉันต้องการความช่วยเหลือในการเข้าสู่ระบบบัญชีของฉัน
ไคลเอนต์บรรทัดคำสั่ง REST API ใน NodeJS ช่วยให้เข้าถึง Kraken REST API ได้อย่างเต็มที่ผ่านบรรทัดคำสั่ง (เช่น Terminal บน macOS) ดังนั้นจึงไม่จำเป็นต้องมีความรู้ด้านการเขียนโปรแกรมหรือประสบการณ์ API
คุณสมบัติ REST API ทั้งหมดสามารถเข้าถึงได้ รวมถึง:
ปลายทางข้อมูลตลาดสาธารณะ
ปลายทางการจัดการบัญชีส่วนตัว
ปลายทางการซื้อขาย
ปลายทางการระดมทุนส่วนตัว
ปลายทางการ Staking ส่วนตัว*
ไคลเอนต์บรรทัดคำสั่งสามารถใช้เป็นไคลเอนต์ API แบบสแตนด์อโลน หรือสามารถเรียกใช้จากโปรแกรมอื่น ๆ ได้ (เช่น ภาษาที่ตีความอื่น ๆ เช่น สคริปต์ Bash หรือภาษาที่คอมไพล์แล้ว เช่น C/C++)
1. ติดตั้ง NodeJS (หากจำเป็น)
macOS และ Linux อาจมีการติดตั้ง NodeJS ไว้แล้ว
Windows อาจจะยังไม่มีการติดตั้ง NodeJS แต่สามารถติดตั้งได้จาก https://www.nodejs.org/
2. ดาวน์โหลดและบันทึกไฟล์ krakenapi.js ลงในคอมพิวเตอร์ของคุณในโฟลเดอร์ (ไดเรกทอรี) ที่คุณเลือก ตัวอย่างเช่น:
Macintosh HD > Users > Satoshi > KrakenAPI
3. เปิดพรอมต์คำสั่ง (เช่น Terminal ของ macOS) และ ไปยังโฟลเดอร์ (ไดเรกทอรี) ที่เลือกในขั้นตอนก่อนหน้า
คุณสามารถใช้คำสั่ง "cd" (เปลี่ยนไดเรกทอรี) เพื่อนำทาง ตัวอย่างเช่น:
cd /Users/Satoshi/KrakenAPI
4. เพิ่มคีย์ API ของคุณ ไปยังโฟลเดอร์เดียวกับที่คุณเก็บไฟล์ krakenapi.js
คัดลอก/วางคีย์สาธารณะ API ของคุณจากการจัดการบัญชีลงในไฟล์ข้อความธรรมดาที่ชื่อว่า "API_PUBLIC_KEY"
คัดลอก/วางคีย์ส่วนตัว (ลับ) API ของคุณลงในไฟล์ข้อความธรรมดาที่ชื่อว่า "API_PRIVATE_KEY"
คีย์ API จำเป็นเฉพาะในกรณีที่คุณวางแผนที่จะใช้ปลายทาง API ส่วนตัวเพื่อเข้าถึงบัญชี Kraken ของคุณ (เช่น การสอบถามยอดคงเหลือ การวาง/ยกเลิกคำสั่งซื้อ การส่งออกประวัติบัญชี ฯลฯ)
ดู วิธีสร้างคู่คีย์ API? สำหรับคำแนะนำเพิ่มเติม
การใช้งานไคลเอนต์บรรทัดคำสั่ง REST API มีดังนี้:
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();*ภาพรวมของเกณฑ์คุณสมบัติ (รวมถึงข้อจำกัดทางภูมิศาสตร์) สำหรับการ Staking สามารถ ดูได้ที่นี่