def calculate_capital(): # Connect to API: con = krakenex.API() con.load_key(kraken_key_filepath) api = KrakenAPI(con) volume = api.get_account_balance() crypto_on_hand = volume.loc[CRYPTO][0] open_position = check_openPosition(crypto_on_hand) if open_position: current_price = float( api.get_ticker_information(CRYPTO + FIAT)['c'][0][0]) return round(current_price * crypto_on_hand, 2) else: return round(float(volume.loc[FIAT][0]), 2)
def __balance(self, exchange): nonce = str(int(time.time() * 1e6)) d = dict() if exchange == "trt": url = "https://api.therocktrading.com/v1/balances" signature = hmac.new(self.secret_trt.encode(), msg=(str(nonce) + url).encode(), digestmod=hashlib.sha512).hexdigest() _headers = { "Content-Type": "application/json", "X-TRT-KEY": self.apikey_trt, "X-TRT-SIGN": signature, "X-TRT-NONCE": nonce } resp = requests.get(url, headers=_headers) d["trtbtc"] = json.loads(resp.text)["balances"][0]["balance"] d["trteur"] = json.loads(resp.text)["balances"][8]["balance"] return d elif exchange == "krk": api = krakenex.API(self.apikey_krk, self.secret_krk) k = KrakenAPI(api) resp = k.get_account_balance() d["krkbtc"] = resp["vol"]["XXBT"] d["krkbch"] = resp["vol"]["BCH"] return d elif exchange == "bnb": is_fine = True while is_fine: try: is_fine = False except ConnectionError: print( f"{Fore.RED}[ERR] CHECK INTERNET CONNECTION{Style.RESET_ALL}" ) try: d["bnbtrx"] = float( self.client.get_asset_balance(asset="TRX")["free"]) d["bnbbnb"] = float( self.client.get_asset_balance(asset="BNB")["free"]) except Exception: d["bnbtrx"] = float( self.client.get_asset_balance(asset="TRX")["free"]) d["bnbbnb"] = float( self.client.get_asset_balance(asset="BNB")["free"]) return d
@author: austin """ import krakenex from pykrakenapi import KrakenAPI #import os api = krakenex.API() key = "ignored/new_key.key" api.load_key(key) api.query_private(method="Balance") k = KrakenAPI(api) k.get_account_balance() k.get_trades_history() ohlc, last = k.get_ohlc_data("BCHUSD") print(ohlc) print(last) # open trade descr = k.add_standard_order(pair="XBTEUR", type="buy", ordertype="market", volume=0.002) descr k.get_open_orders(trades=True) k.get_tradable_asset_pairs()
class Kraken(ExchangeBase, ABC): def __init__(self): super().__init__() args = json.load(open('krakenKey.json')) api = krakenex.API(**args) self.kraken = KrakenAPI(api) accounts = self.kraken.get_account_balance() print(accounts) return # for account in accounts: # currency = account['currency'] # balance = float(account['available']) # self.wallets[currency] = Wallet(currency, balance) # print(currency, balance) # if balance > self.valueWallet.amount: # self.valueWallet = self.wallets[currency] # self.fee = 0.0025 def get_last_trade_price(self, symbol): ticker = self.kraken.get_product_ticker(symbol) return float(ticker['price']) def buy(self, key): buy_symbol = (key + "-" + self.arbitrar.currency).replace( "BTC", "XBT").replace("-", "") amount = str(self.arbitrar.amount // 0.01 / 100) order = self.kraken.buy(product_id=buy_symbol, type='market', funds=amount) if 'message' in order.keys(): raise InsufficientFundsError(order['message']) settled = order['settled'] while not settled: order = self.kraken.get_order(order['id']) settled = order['settled'] time.sleep(0.12) self.wallets[key].amount = float(order['filled_size']) self.arbitrar.amount = 0 self.valueWallet = self.wallets[key] # NOTE: This includes the fee! rate = float(order['executed_value']) / float(order['filled_size']) return buy_symbol, rate def sell(self): sell_symbol = (self.valueWallet.currency + "-" + self.arbitrar.currency).replace("BTC", "XBT").replace("-", "") amount = str(self.valueWallet.amount) order = self.kraken.sell(product_id=sell_symbol, type='market', size=amount) if 'message' in order.keys(): raise InsufficientFundsError(order['message']) settled = order['settled'] while not settled: order = self.kraken.get_order(order['id']) settled = order['settled'] time.sleep(0.12) self.arbitrar.amount = float(order['executed_value']) self.valueWallet.amount = 0 self.valueWallet = self.arbitrar # NOTE: This includes the fee! rate = float(order['executed_value']) / float(order['filled_size']) return sell_symbol, rate def get_name(self): return "kraken"
return else: return r def df_col_to_double(df, *l): for v in l: df[v] = df[v].astype('double') return df kraken_key, kraken_secret = open('kraken.key').read().split('\n')[0:2] k = krakenex.API(key=kraken_key, secret=kraken_secret) kapi = KrakenAPI(k) abal = kapi.get_account_balance() ab = abal[abal['vol'] != 0].index ap = get_asset_pairs(k) get_name = lambda n: list( filter(lambda x: ap[x]['base'] == n and ap[x]['quote'] == 'ZEUR', ap)) pairs = list(map(get_name, ab)) pairs = list(filter(lambda x: '.d' not in x, [x for l in pairs for x in l])) get_ohlc = lambda x: list(map(lambda x: kapi.get_ohlc_data(x)[0], x)) r = retry(get_ohlc, pairs) r = {k: v for k, v in zip(pairs, r)} conv = { k: v for k, v in zip( pairs,
def __balance(self, exchange): nonce = str(int(time.time() * 1e6)) d = dict() if exchange == "TRT": url = "https://api.therocktrading.com/v1/balances" signature = hmac.new(self.secret_TRT.encode(), msg=(str(nonce) + url).encode(), digestmod=hashlib.sha512).hexdigest() _headers = { "Content-Type": "application/json", "X-TRT-KEY": self.apikey_TRT, "X-TRT-SIGN": signature, "X-TRT-NONCE": nonce } resp = requests.get(url, headers=_headers) try: therock_table_response = { "BTC": 0, "LTC": 1, "ETH": 7, "EUR": 8 } d["TRT" + self.dotpair.split(".")[0]] = json.loads( resp.text)["balances"][therock_table_response[ self.dotpair.split('.')[0]]]["balance"] d["TRT" + self.dotpair.split(".")[1]] = json.loads( resp.text)["balances"][therock_table_response[ self.dotpair.split('.')[1]]]["balance"] except json.decoder.JSONDecodeError: d["TRT" + self.dotpair.split(".")[0]] = 0 d["TRT" + self.dotpair.split(".")[1]] = 0 return d elif exchange == "krk": api = krakenex.API(self.apikey_krk, self.secret_krk) k = KrakenAPI(api) resp = k.get_account_balance() d["krk" + self.dotpair.split(".")[0]] = resp["vol"]["XXBT"] d["krkbch"] = resp["vol"]["BCH"] return d elif exchange == "BNB": is_fine = True while is_fine: try: is_fine = False except ConnectionError: print( f"{Fore.RED}[ERR] CHECK INTERNET CONNECTION{Style.RESET_ALL}" ) try: d["BNBBNB"] = float( self.client.get_asset_balance(asset="BNB")["free"]) d["BNB" + self.dotpair.split(".")[0]] = float( self.client.get_asset_balance( asset=self.dotpair.split(".")[0])["free"]) d["BNB" + self.dotpair.split(".")[1]] = float( self.client.get_asset_balance( asset=self.dotpair.split(".")[1])["free"]) self.requests_used = self.client.response.headers[ 'x-mbx-used-weight-1m'] except Exception: d["BNBBNB"] = float( self.client.get_asset_balance(asset="BNB")["free"]) d["BNB" + self.dotpair.split(".")[0]] = float( self.client.get_asset_balance( asset=self.dotpair.split(".")[0])["free"]) d["BNB" + self.dotpair.split(".")[1]] = float( self.client.get_asset_balance( asset=self.dotpair.split(".")[1])["free"]) return d