コード例 #1
0
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)
コード例 #2
0
    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
コード例 #3
0
@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()
コード例 #4
0
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"
コード例 #5
0
            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,
コード例 #6
0
ファイル: trade.py プロジェクト: 701789262a/arbobotti
    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