All
กรองโดย:
ฉันจะฝากเงินสดเข้าบัญชีของฉันได้อย่างไร
ฉันต้องการความช่วยเหลือเกี่ยวกับการตรวจสอบยืนยันบัญชี
ทำไมฉันเข้าถึงบัญชีของฉันไม่ได้
มีค่าธรรมเนียมการถอนคริปโตหรือไม่
ฉันต้องการความช่วยเหลือในการเข้าสู่ระบบบัญชีของฉัน
ปลายทาง REST API ที่ต้องมีการยืนยันตัวตนของเราสามารถเข้าถึงได้ผ่านคำขอ HTTP แบบง่าย (เช่นเดียวกับการร้องขอหน้าเว็บผ่านเว็บเบราว์เซอร์) ดังนั้นไคลเอนต์ API สำหรับนำเข้าข้อมูลตลาดไปยัง Google Sheet สามารถนำไปใช้ได้ด้วยโค้ด Google Script เพียงไม่กี่บรรทัด
สร้าง Google Sheet ใหม่ หรือเปิดชีตที่มีอยู่แล้ว
เปิดตัวแก้ไขสคริปต์ผ่านเมนู ส่วนขยาย -> Apps Script
ลบรหัสเริ่มต้นที่แสดงอยู่ (เช่น เลือกทั้งหมด แล้ว ลบ/Backspace)
คัดลอก/วางโค้ด Google Script API (ที่แสดงด้านล่าง) ลงในตัวแก้ไขสคริปต์
อัปเดตคีย์ API ตัวอย่างเพื่อใช้ คีย์ API จากบัญชี Kraken ของคุณ
ไม่บังคับ - เพิ่มฟังก์ชันที่กำหนดเองเพิ่มเติมที่คุณต้องการ (เช่น เพื่อเรียกใช้ปลายทางที่แตกต่างกัน หรือส่งคืนฟิลด์ JSON ที่แตกต่างกัน)
บันทึกโค้ด Google Script ผ่าน
ไอคอน (บันทึกโปรเจกต์)


ฟังก์ชัน KAPI_Private() มีหน้าที่สร้าง URL ที่เหมาะสม คำนวณ ลายเซ็นการยืนยันตัวตน และทำการร้องขอ HTTP ไปยัง API ฟังก์ชัน KAPI_Private() สามารถเรียกใช้ได้โดยตรงโดยการป้อนข้อมูลต่อไปนี้ (หรือคล้ายกันขึ้นอยู่กับ ID บัญชี ปลายทาง และพารามิเตอร์) ลงในเซลล์ Google Sheet:
Bash
=KAPI_Private("TEST", "Balance", "")
=KAPI_Private("TEST", "TradeBalance", "asset=xdg")
=KAPI_Private("TEST", "OpenOrders", "userref=886794735")ฟังก์ชัน KAPI_Private() จะส่งคืนการตอบกลับ JSON ดั้งเดิมจาก API เช่นเดียวกับตัวอย่างปลายทาง Balance ด้านบน:
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"}}ในการวางฟิลด์/ค่าแต่ละรายการลงในเซลล์แยกกันภายใน Google Sheet สามารถเรียกใช้ฟังก์ชันที่กำหนดเองเพิ่มเติมเพื่อแยกวิเคราะห์การตอบกลับ JSON ได้ เช่น ฟังก์ชัน KAPI_Balance() และ KAPI_OpenOrders() ตัวอย่าง:
=KAPI_Balance("TEST")
=KAPI_OpenOrders("TEST")
Bash
=KAPI_Balance("TEST")
=KAPI_OpenOrders("TEST")สิ่งนี้จะแสดงผลลัพธ์ที่คล้ายกับต่อไปนี้ โดยที่ข้อมูลจะสามารถเข้าถึงได้โดยฟังก์ชัน Google Sheets มาตรฐานใดๆ (SUM, AVERAGE, COUNT ฯลฯ):

อัลกอริทึมการยืนยันตัวตน:
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
}หากต้องการใช้สคริปต์ต่อไปนี้กับอัลกอริทึมการยืนยันตัวตนด้านบน เพียงแค่เพิ่มฟังก์ชันลงในสคริปต์ด้านบน
*โปรดทราบว่าปลายทางส่วนตัวทั้งหมดจำเป็นต้องมีการใช้งานอัลกอริทึมการยืนยันตัวตน*
ยอดคงเหลือ:
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
}ยอดคงเหลือแบบขยาย:
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
}ยอดคงเหลือการเทรด:
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
}คำสั่งซื้อที่เปิดอยู่:
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
}คำสั่งซื้อที่ปิดแล้ว:
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
}ประวัติการเทรด:
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
}สถานะที่เปิดอยู่:
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
}บัญชีแยกประเภท:
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
}สอบถามข้อมูลคำสั่งซื้อ:
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
}ตัวอย่างฟังก์ชัน Google Script แบบเต็มที่เรียกใช้ปลายทาง TradesHistory:
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
}ตัวคั่นทศนิยมและหลักพันที่แสดงในบทความนี้อาจแตกต่างจากรูปแบบที่แสดงบนแพลตฟอร์มการเทรดของเรา โปรดอ่านบทความของเราเกี่ยวกับวิธีที่เราใช้ จุดและจุลภาค สำหรับข้อมูลเพิ่มเติม
