def _get_backcast_data(self):
     
     api = krakenex.API()
     k = KrakenAPI(api)
     api.load_key('kraken_keys.py')
     df, last = k.get_ohlc_data(self.pair, interval=self.data_agg, ascending=True)
     df.index = df.index.tz_localize(tz='UTC').tz_convert('US/Central')
     return df
Ejemplo n.º 2
0
class KrakenData(Data):
    def __init__(self, interval=1, waitInterval=1, **params):
        self.KAPI = KrakenAPI(krakenex.API())
        self.ohlc, self.since = self.KAPI.get_ohlc_data(
            "BTCUSD",
            interval=interval,
            since=None,
            ascending=True,
        )
        self.interval = interval
        self.waitInterval = waitInterval
        super().__init__(**params)

    async def dataGenerator(self):
        wait = 60
        maxRows = 2880
        blockSize = 1440
        retry = 0
        timer = None
        while retry < 10:
            if timer is not None:
                await timer
            try:
                ohlcnew, self.since = self.KAPI.get_ohlc_data(
                    "BTCUSD",
                    interval=self.interval,
                    since=self.since,
                    ascending=True,
                )
            except Exception:
                await asyncio.sleep(wait)
                retry += 1
                continue
            # Remove the last enty as it is unconfirmed
            retry = 0
            self.ohlc.drop(self.ohlc.tail(1).index, inplace=True)
            self.ohlc = self.ohlc.append(ohlcnew)
            if len(self.ohlc) >= maxRows:
                self.ohlc.drop(self.ohlc.head(blockSize).index, inplace=True)
            timer = asyncio.create_task(asyncio.sleep(self.waitInterval *
                                                      wait))
            yield self.ohlc
        raise ConnectionError("Retry Exceeded 10")
Ejemplo n.º 3
0
def get_data(monnaie='XXBTZEUR', interval=60, since=None):
    """Renvoie une DataFrame de max 720 valeurs selon :
        - la paire de monnaie (monnaie) choisie sous forme de string. Par
        defaut elle vaut 'XXBTZEUR' et renvoie donc la valeur du Bitcoin en Euros.
        Si la paire pose problème, tenter de rajouter un X devant la cryptomonaie et
        un Z devant la monnaie "classique", comme pour la valeur par défaut. (se référer
        aux monnaies disponibles sur la plateforme Kraken)
        - l'intervalle (interval) en minutes, qui représente l'intervalle temporel
        entre deux entrées de la DataFrame. Par défaut elle vaut 60.
        - la date de début (since). Par défaut la fonction renvoie
        les 720 dernières valeurs selon l'intervalle choisi.
    """
    api = krakenex.API()
    k = KrakenAPI(api)
    ohlc = k.get_ohlc_data(monnaie, interval, since)
    return ohlc[0]
Ejemplo n.º 4
0
import krakenex
from pykrakenapi import KrakenAPI
api = krakenex.API()
k = KrakenAPI(api)
ohlc, last = k.get_ohlc_data(pair="BCHUSD", interval=30)
print('Fetching from Kraken API:\n', ohlc.head(1), '\n')

import numpy as np
import talib

close = np.array(ohlc.close.to_list())
high = np.array(ohlc.high.to_list())
low = np.array(ohlc.low.to_list())
print("Candlestick information:")
print("Candle Close\n", close[-10:], "\n")
print("Candle High\n", high[-10:], "\n")
print("Candle Low\n", low[-10:], "\n")

simple_moving_average = talib.SMA(close)
print("simple_moving_average:\n", simple_moving_average[-10:], "\n")

macd, macdsignal, macdhist = talib.MACD(close,
                                        fastperiod=12,
                                        slowperiod=26,
                                        signalperiod=9)
print("MACD:\n", macd[-10:], "\n")

parbolic_sar = talib.SAR(high, low, acceleration=1, maximum=1)
print("parbolic_sar:\n", parbolic_sar[-10:], "\n")
Ejemplo n.º 5
0
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()

response = api.query_private('AddOrder', {
    'pair': 'XXBTZEUR',
    'type': 'buy',
Ejemplo n.º 6
0
    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,
        list(map(lambda x: (r[x]['high'].mean() + r[x]['low'].mean()) / 2, r)))
}
nn = {ap[k]['base']: k for k in conv}
for k, v in nn.items():
    abal.loc[k, 'usd'] = abal.loc[k, 'vol'] * conv[v]
print('Portfolio overview')
print(abal)
co = retry(kapi.get_closed_orders)[0]
Ejemplo n.º 7
0
def fetch_data():
    api = krakenex.API()
    k = KrakenAPI(api)
    ohlc, last = k.get_ohlc_data("BCHUSD")
    return ohlc, last