All
กรองโดย:
ฉันจะฝากเงินสดเข้าบัญชีของฉันได้อย่างไร
ฉันต้องการความช่วยเหลือเกี่ยวกับการตรวจสอบยืนยันบัญชี
ทำไมฉันเข้าถึงบัญชีของฉันไม่ได้
มีค่าธรรมเนียมการถอนคริปโตหรือไม่
ฉันต้องการความช่วยเหลือในการเข้าสู่ระบบบัญชีของฉัน
ไคลเอนต์บรรทัดคำสั่ง REST API ใน Python ช่วยให้เข้าถึง Kraken REST API ได้อย่างสมบูรณ์ผ่านบรรทัดคำสั่ง (เช่น Terminal บน macOS) ดังนั้นจึงไม่จำเป็นต้องมีความรู้ด้านการเขียนโปรแกรมหรือประสบการณ์ API
คุณสมบัติ REST API ทั้งหมดสามารถเข้าถึงได้ รวมถึง:
ปลายทางข้อมูลตลาดสาธารณะ
ปลายทางข้อมูลบัญชีส่วนตัว
ปลายทางการซื้อขายส่วนตัว
ปลายทางการระดมทุนส่วนตัว
ปลายทางการรับรายได้ส่วนตัว
ไคลเอนต์บรรทัดคำสั่งสามารถใช้เป็นไคลเอนต์ API แบบสแตนด์อโลน หรือสามารถเรียกใช้จากโปรแกรมอื่น ๆ ได้ (เช่น ภาษาที่ตีความอื่น ๆ เช่น สคริปต์ Bash หรือภาษาที่คอมไพล์แล้ว เช่น C/C++)
1. ติดตั้ง Python 3 (หากจำเป็น)
macOS และ Linux อาจมีการติดตั้ง Python 3 ไว้แล้ว
Windows อาจจะยังไม่มี Python 3 ติดตั้งอยู่ แต่สามารถติดตั้งได้จาก https://www.python.org/
2. ดาวน์โหลดและบันทึกไฟล์ krakenapi.py ลงในคอมพิวเตอร์ของคุณในโฟลเดอร์ (ไดเรกทอรี) ที่คุณเลือก
ตัวอย่าง: Macintosh HD > Users > Satoshi > KrakenAPI
3. เปิดพรอมต์คำสั่ง (เช่น Terminal ของ macOS) และ ไปยังโฟลเดอร์ (ไดเรกทอรี) ที่เลือกในขั้นตอนก่อนหน้า คุณสามารถใช้คำสั่ง UNIX/Linux "cd" (เปลี่ยนไดเรกทอรี) เพื่อนำทางได้
ตัวอย่าง:cd /Users/Satoshi/KrakenAPI
4. ทำให้ไฟล์ krakenapi.py สามารถเรียกใช้งานได้
คุณสามารถใช้คำสั่ง UNIX/Linux "chmod 755" (เปลี่ยนโหมด) ได้
ตัวอย่าง: chmod 755 krakenapi.py
5. เพิ่มคีย์ API ของคุณ ไปยังโฟลเดอร์เดียวกับที่คุณเก็บไฟล์ krakenapi.py
คัดลอก/วางคีย์สาธารณะ API ของคุณจากการจัดการบัญชีลงในไฟล์ข้อความธรรมดาที่ชื่อ "API_Public_Key"
คัดลอก/วางคีย์ส่วนตัว (ลับ) API ของคุณลงในไฟล์ข้อความธรรมดาที่ชื่อ "API_Private_Key"
มีคำแนะนำสำหรับการสร้าง/กำหนดค่าคีย์ API
คีย์ API จำเป็นเฉพาะในกรณีที่คุณวางแผนที่จะใช้ปลายทาง API ส่วนตัวเพื่อเข้าถึงบัญชี Kraken ของคุณ (เช่น การสอบถามยอดคงเหลือ การวาง/ยกเลิกคำสั่งซื้อ การส่งออกประวัติบัญชี ฯลฯ)
การใช้งานไคลเอนต์บรรทัดคำสั่ง REST API มีดังนี้:
./krakenapi.py endpoint [parameters] [-pretty]
ไคลเอนต์บรรทัดคำสั่งรองรับปลายทาง REST API ทั้งหมด ดังนั้นต่อไปนี้เป็นเพียงตัวอย่างคำสั่งบางส่วน:
Python
# Time
./krakenapi.py Time
# Ticker
./krakenapi.py Ticker pair=xbtusd
# Trades
./krakenapi.py Trades pair=etheur since=1574067140000000000
# Balance
./krakenapi.py Balance
# Trade Balance
./krakenapi.py TradeBalance asset=xbt
# Query Orders
./krakenapi.py QueryOrders txid=O7MN22-ZCX7J-TGLQHD
# Add Order
./krakenapi.py AddOrder pair=xbtusd type=buy ordertype=limit price=6500 volume=0.002 leverage=5
# Cancel Order
./krakenapi.py CancelOrder txid=O7MN22-ZCX7J-TGLQHDโดยค่าเริ่มต้น ไคลเอนต์บรรทัดคำสั่งจะแสดงผลการตอบกลับ API ดั้งเดิม (JSON ที่เหมาะสำหรับการตีความผ่านโค้ด) แต่หากใช้พารามิเตอร์บรรทัดคำสั่งเพิ่มเติม -pretty:
./krakenapi.py TradeBalance asset=shib -pretty
ไคลเอนต์จะแสดงผลการตอบกลับ API เดียวกันในรูปแบบ JSON ที่เป็นมิตรต่อผู้ใช้ (พร้อมการขึ้นบรรทัดใหม่/การเยื้อง)
Python
#!/usr/bin/env python3
# Kraken Rest API
#
# Usage: ./krakenapi endpoint [parameters]
# Example: ./krakenapi Time
# Example: ./krakenapi OHLC pair=xbtusd interval=1440
# Example: ./krakenapi Balance
# Example: ./krakenapi TradeBalance asset=xdg
# Example: ./krakenapi OpenPositions
# Example: ./krakenapi AddOrder pair=xxbtzusd type=buy ordertype=market volume=0.003 leverage=5
import sys
import time
import base64
import hashlib
import hmac
import urllib.request
import json
api_public = {"Time", "Assets", "AssetPairs", "Ticker", "OHLC", "Depth", "Trades", "Spread", "SystemStatus"}
api_private = {"Balance", "BalanceEx", "TradeBalance", "OpenOrders", "ClosedOrders", "QueryOrders", "TradesHistory", "QueryTrades", "OpenPositions", "Ledgers", "QueryLedgers", "TradeVolume", "AddExport", "ExportStatus", "RetrieveExport", "RemoveExport", "GetWebSocketsToken", "CreateSubaccount", "AccountTransfer"}
api_trading = {"AddOrder", "AddOrderBatch", "EditOrder", "CancelOrder", "CancelOrderBatch", "CancelAll", "CancelAllOrdersAfter","OrderAmends","AmendOrder","ListSubaccounts"}
api_funding = {"DepositMethods", "DepositAddresses", "DepositStatus", "WithdrawMethods", "WithdrawAddresses", "WithdrawInfo", "Withdraw", "WithdrawStatus", "WithdrawCancel", "WalletTransfer"}
api_staking = {"Earn/Strategies", "Earn/Allocations", "Earn/Allocate", "Earn/Deallocate", "Earn/AllocateStatus", "Earn/DeallocateStatus", "Staking/Assets", "Staking/Balance", "Stake", "Unstake", "Staking/Pending", "Staking/Transactions"}
api_domain = "https://api.kraken.com"
api_data = ""
output_format = 0
if len(sys.argv) < 2:
api_method = "Time"
elif len(sys.argv) == 2:
api_method = sys.argv[1]
else:
api_method = sys.argv[1]
for count in range(2, len(sys.argv)):
if sys.argv[count] == '-pretty':
output_format = 1
continue
if count == 2:
api_data = sys.argv[count]
else:
api_data = api_data + "&" + sys.argv[count]
if api_method in api_private or api_method in api_trading or api_method in api_funding or api_method in api_staking:
api_path = "/0/private/"
api_nonce = str(int(time.time()*1000))
try:
api_key = open("API_Public_Key").read().strip()
api_secret = base64.b64decode(open("API_Private_Key").read().strip())
except:
print("API public key and API private (secret) key must be in plain text files called API_Public_Key and API_Private_Key")
sys.exit(1)
api_postdata = api_data + "&nonce=" + api_nonce
api_postdata = api_postdata.encode('utf-8')
api_sha256 = hashlib.sha256(api_nonce.encode('utf-8') + api_postdata).digest()
api_hmacsha512 = hmac.new(api_secret, api_path.encode('utf-8') + api_method.encode('utf-8') + api_sha256, hashlib.sha512)
api_request = urllib.request.Request(api_domain + api_path + api_method, api_postdata)
api_request.add_header("API-Key", api_key)
api_request.add_header("API-Sign", base64.b64encode(api_hmacsha512.digest()))
api_request.add_header("User-Agent", "Kraken REST API")
elif api_method in api_public:
api_path = "/0/public/"
api_request = urllib.request.Request(api_domain + api_path + api_method + '?' + api_data)
api_request.add_header("User-Agent", "Kraken REST API")
else:
print("Usage: %s method [parameters]" % sys.argv[0])
print("Example: %s OHLC pair=xbtusd interval=1440" % sys.argv[0])
sys.exit(1)
try:
api_reply = urllib.request.urlopen(api_request).read()
except Exception as error:
print("API call failed (%s)" % error)
sys.exit(1)
try:
api_reply = api_reply.decode()
except Exception as error:
if api_method == 'RetrieveExport':
sys.stdout.buffer.write(api_reply)
sys.exit(0)
print("API response invalid (%s)" % error)
sys.exit(1)
if '"error":[]' in api_reply:
print(api_reply if output_format == 0 else json.dumps(json.loads(api_reply), indent = 4))
sys.exit(0)
else:
print(api_reply if output_format == 0 else json.dumps(json.loads(api_reply), indent = 4))
sys.exit(1)