import matplotlib.pyplot as plt
import boto
import schedule
import time
from logger import logging
import requests
session = requests.Session()
session.verify = False

import krakenex
from pykrakenapi import KrakenAPI
api = krakenex.API()
k = KrakenAPI(api)
api.load_key('kraken_keys.py')

df = k.get_trades_history(start=1558587601)[0]
df.index = df.index.tz_localize(tz='UTC').tz_convert('US/Central')

cols = ['ordertxid','cost', 'fee', 'margin', 'price', 'vol', 'type', 'ordertype']
df2 = df[cols].reset_index().groupby('ordertxid', as_index=False).agg({'dtime':'first', 'cost':'sum', 'fee':'sum', 'margin':'sum', 'price':'sum','vol':'sum', 'type':'first', 'ordertype':'first' })
df3 = df2.set_index('dtime').sort_values('dtime')
df3['is_closing'] = ['open' if x=='limit' else 'close' for x in df3['ordertype']]

def is_long(row):
    order_type = row[0]
    is_closing = row[1]
    if ((order_type=='buy') & (is_closing=='open')) | ((order_type=='sell') & (is_closing=='close')):
        return 'long'
    else:
        return 'short'
示例#2
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', {
示例#3
0
def load_data(start):

    # Connect to API:
    con = krakenex.API()
    con.load_key(kraken_key_filepath)
    api = KrakenAPI(con)

    # Load past trading data:
    count = 0
    total_count = 1
    df_list = []
    unix_start = api.datetime_to_unixtime(pd.to_datetime(start))
    while count < total_count:
        df, all_count = api.get_trades_history(start=unix_start, ofs=count)
        df = df[df['pair'] == CRYPTO + FIAT]
        df_list.append(df)
        total_count = all_count
        count += len(df)
        time.sleep(1)
    df = pd.concat(df_list).reset_index()
    df = df.drop_duplicates()

    # Convert to Central time:
    df['dtime'] = pd.to_datetime(
        pd.to_datetime(df['dtime']).dt.tz_localize('UTC').dt.tz_convert(
            'US/Central').dt.strftime('%Y-%m-%d %H:%M:%S'))

    # Merge trades with the same order id:
    df_wrangled = df.reset_index().groupby('ordertxid', as_index=False).agg({
        'dtime':
        'min',
        'type':
        'min',
        'ordertype':
        'min',
        'price':
        'min',
        'cost':
        'sum',
        'fee':
        'sum',
        'vol':
        'sum'
    }).sort_values('dtime').reset_index(drop=True)
    # Build buy/sell matching ids:
    df_wrangled['trade_matchID'] = 0
    buy = False
    matchID = 1
    for i, row in df_wrangled.iterrows():
        # Skip the first trade if it's a sell
        if row['type'] == 'sell':
            if buy:
                df_wrangled['trade_matchID'][i] = matchID
                matchID += 1
                buy = False
            else:
                continue
        elif row['type'] == 'buy':
            df_wrangled['trade_matchID'][i] = matchID
            buy = True

    # Put the buy and the sell on the same line:
    df_sell = df_wrangled[df_wrangled['type'] == 'sell'].set_index(
        'trade_matchID')
    df_buy = df_wrangled[df_wrangled['type'] == 'buy'].set_index(
        'trade_matchID')
    df_trade = df_buy.merge(df_sell,
                            how='left',
                            left_index=True,
                            right_index=True,
                            suffixes=['_buy', '_sell'])

    # Build new fields:
    df_trade['time_held'] = df_trade['dtime_sell'] - df_trade['dtime_buy']
    df_trade['time_held'] = [str(x) for x in df_trade['time_held']]
    df_trade['fee_total'] = df_trade['fee_buy'] + df_trade['fee_sell']
    df_trade['abs_return'] = df_trade['cost_sell'] - df_trade['cost_buy']
    df_trade['feeAdjusted_abs_return'] = df_trade['cost_sell'] - df_trade[
        'fee_total'] - df_trade['cost_buy']
    df_trade['pct_return'] = df_trade['abs_return'] / df_trade['cost_buy']
    df_trade['feeAdjusted_pct_return'] = df_trade[
        'feeAdjusted_abs_return'] / df_trade['cost_buy']
    df_trade['winning_trade'] = [
        1 if x > 0 else 0 for x in df_trade['feeAdjusted_pct_return']
    ]
    return df_trade