All
ফিল্টার দ্বারা:
আমি কিভাবে আমার অ্যাকাউন্টে নগদ জমা করব?
আমার অ্যাকাউন্ট যাচাইকরণের জন্য সাহায্য দরকার।
আমি কেন আমার অ্যাকাউন্টে প্রবেশ করতে পারছি না?
কোনো ক্রিপ্টো তোলার ফি আছে কি?
আমি আমার অ্যাকাউন্টে সাইন ইন করতে সাহায্য চাই।
আমাদের REST API-এর একটি উদ্দেশ্যমূলক ব্যবহার হল স্বয়ংক্রিয় ট্রেডিং বট তৈরি করা যা আমাদের বাজার এবং অ্যাকাউন্টগুলির সাথে ইন্টারঅ্যাক্ট করে।
যদিও ট্রেডিং বটগুলি প্রায় অন্তহীন বৈচিত্র্যে আসে, তবে সেগুলির সবগুলিরই একই ধরনের API ইন্টিগ্রেশন বৈশিষ্ট্য রয়েছে এবং সেগুলির সবগুলিই নিম্নলিখিত সাধারণ কাজগুলি সম্পাদন করে:
বাজারের ডেটা পুনরুদ্ধার করা (টিকর, অর্ডার বুক, ইত্যাদি)
ট্রেডিংয়ের সিদ্ধান্ত নেওয়া (বাজারের ডেটা বা বাজারের ডেটা থেকে প্রাপ্ত ইন্ডিকেটরের উপর ভিত্তি করে)
অর্ডার দেওয়া/বাতিল করা
আমাদের REST API একটি সম্পূর্ণ বৈশিষ্ট্যযুক্ত ট্রেডিং বট বাস্তবায়নের জন্য প্রয়োজনীয় সমস্ত কার্যকারিতা সরবরাহ করে, তবে আমাদের API-এর বিভিন্ন দিকগুলিকে কীভাবে একত্রিত করতে হয় তা জানা কঠিন হতে পারে, তাই নিম্নলিখিত ট্রেডিং বট কোডটি একটি উদাহরণ হিসাবে সরবরাহ করা হয়েছে।
উদাহরণ কোডটি একটি ইন্ডিকেটর ভিত্তিক ট্রেডিং বট (বিশেষত একটি 20 SMA, 1 মিনিটের ঢাল পরিবর্তনের উপর ভিত্তি করে ট্রেডিংয়ের সিদ্ধান্ত সহ) বাস্তবায়ন করে এবং দেখায় যে কীভাবে বাজারের ডেটা, সিদ্ধান্ত গ্রহণ এবং একটি ট্রেডিং বটের ট্রেডিংয়ের দিকগুলিকে সফলভাবে একত্রিত করা যায়।
ট্রেডিং বট কোডটি একটি একক পাইথন ফাইল, এবং এটি সরাসরি আমাদের API-এর সাথে একত্রিত হয় (কোনও তৃতীয় পক্ষের API লাইব্রেরি নেই)। সমস্ত কনফিগারেশন (API কী, কারেন্সি পেয়ার, ইন্ডিকেটর, অর্ডারের ধরন, লিভারেজ, ইত্যাদি) রেফারেন্সের সুবিধার জন্য কোডের মধ্যে অন্তর্ভুক্ত করা হয়েছে।
উদাহরণ কোডটি নিচে দেখা যেতে পারে, এবং এটি একটি .py ফাইল হিসাবেও ডাউনলোড করা যেতে পারে (REST_Indicator_Bot_Example.py)।
Python
#!/usr/bin/env python3
# Import required libraries (Python not API)
import time
import sys
import json
import base64
import hashlib
import hmac
import urllib.request
# Configure API key (copy/paste from account management)
api_key_public = 'COPY/PASTE API PUBLIC KEY HERE'
api_key_private = 'COPY/PASTE API PRIVATE KEY HERE'
# Configure market/orders/trades
trade_symbol = 'XXBTZUSD'
trade_interval = 1 # OHLC interval in minutes
trade_size = 0.0001 # Trade volume in base currency
trade_leverage = 2
# Initial indicator/trade variables
trade_direction = 0
sma_values = [0.0, 0.0, 0.0]
# Infinite loop (can be exited via keyboard interrupt)
try:
while True:
# Retrieve OHLC data at specified interval
print('Retrieving OHLC data ... ', end='')
try:
api_request = urllib.request.Request(
'https://api.kraken.com/0/public/OHLC?pair=%(symbol)s&interval=%(interval)d' % {
'symbol': trade_symbol, 'interval': trade_interval}
)
api_request.add_header('User-Agent', 'Kraken trading bot example')
api_response = urllib.request.urlopen(api_request).read().decode()
api_data = json.loads(api_response)
except Exception as error:
print('Failed (%s)' % error)
else:
print('Done' if len(api_data['error']) == 0 else 'Error (%s)' % api_data['error'])
# Calculate SMA (20 candles / closing price)
print('Calculating SMA 20 ... ', end='')
api_ohlc = api_data['result'][trade_symbol]
api_ohlc_length = len(api_ohlc) - 1
sma_temp = 0.0
for count in range(1, 21):
sma_temp += float(api_ohlc[api_ohlc_length - count][4])
sma_temp = sma_temp / 20
print('Done')
# Update SMA values
sma_values[2] = sma_values[1]
sma_values[1] = sma_values[0]
sma_values[0] = sma_temp
if sma_values[2] == 0.0:
print('Waiting %d seconds ... ' % (trade_interval * 60))
time.sleep(trade_interval * 60)
continue
else:
print('SMA 20 values ... %(sma2)f / %(sma1)f / %(sma0)f' % {
'sma2': sma_values[2], 'sma1': sma_values[1], 'sma0': sma_values[0]})
# Trading decision (change in slope of SMA)
print('Trading decision ... ', end='')
if (sma_values[0] > sma_values[1]) and (sma_values[1] < sma_values[2]):
make_trade = 1
print('Long')
elif (sma_values[0] < sma_values[1]) and (sma_values[1] > sma_values[2]):
make_trade = -1
print('Short')
else:
make_trade = 0
print('No trade')
# Place order/trade (if applicable)
if make_trade != 0:
print('Placing order/trade ... ', end='')
try:
api_path = '/0/private/AddOrder'
api_nonce = str(int(time.time() * 1000))
api_post = 'nonce=%(api_nonce)s&pair=%(symbol)s&type=%(direction)s&ordertype=market&volume=%(volume)f&leverage=%(leverage)s' % {
'api_nonce': api_nonce,
'symbol': trade_symbol,
'direction': 'buy' if make_trade == 1 else 'sell',
'volume': trade_size if trade_direction == 0 else trade_size * 2,
'leverage': str(trade_leverage) if trade_leverage > 0 else 'none'
}
api_sha256 = hashlib.sha256(api_nonce.encode('utf8') + api_post.encode('utf8'))
api_hmac = hmac.new(
base64.b64decode(api_key_private),
api_path.encode('utf8') + api_sha256.digest(),
hashlib.sha512
)
api_signature = base64.b64encode(api_hmac.digest())
api_request = urllib.request.Request(
'https://api.kraken.com/0/private/AddOrder', api_post.encode('utf8')
)
api_request.add_header('API-Key', api_key_public)
api_request.add_header('API-Sign', api_signature)
api_request.add_header('User-Agent', 'Kraken trading bot example')
api_response = urllib.request.urlopen(api_request).read().decode()
api_data = json.loads(api_response)
except Exception as error:
print('Failed (%s)' % error)
else:
trade_direction = make_trade
print('Done (%s)' % api_response if len(api_data['error']) == 0 else 'Error (%s)' % api_data['error'])
# Wait until next OHLC interval
print('Waiting %d seconds ... ' % (trade_interval * 60))
time.sleep(trade_interval * 60)
except KeyboardInterrupt:
sys.exit(0)
except Exception as error:
print('Error (%s)' % error)
sys.exit(1)মনে রাখবেন যে ট্রেডিং বটটি শুধুমাত্র একটি উদাহরণ হিসাবে তৈরি করা হয়েছে, এবং তাই এতে কিছু কাঙ্ক্ষিত বৈশিষ্ট্য এবং প্রয়োজনীয় ত্রুটি পরীক্ষা করার অভাব রয়েছে, তাই এটি প্রোডাকশন ট্রেডিংয়ের জন্য ব্যবহার করা উচিত নয় (বটটি লাভ করবে এমন কোনও গ্যারান্টি নেই)।