Logan Gartner
9e6368cf2f
The Kraken wrapper can now get the trading fee for a crypto pair The bot uses this when making decisions to buy or sell The bot on startup will now not initially do anything, it will instead wait until the state changes between buy and sell to do anything in order to prevent regrettable trades.
53 lines
2.3 KiB
Python
53 lines
2.3 KiB
Python
from pykrakenapi import KrakenAPI
|
|
import pandas, krakenex, time, numpy
|
|
|
|
class Kraken:
|
|
def __init__(self):
|
|
self.kraken_api = krakenex.API()
|
|
self.kraken_api.load_key("kraken.key")
|
|
self.kraken_wrapper = KrakenAPI(self.kraken_api)
|
|
self.get_balances()
|
|
|
|
|
|
# Updates the current wallet prices from the internet
|
|
def get_balances(self):
|
|
self.balances = self.kraken_wrapper.get_account_balance()
|
|
|
|
|
|
# Gets a table of the price history of the pair since time at intervals of interval minutes
|
|
def get_ohlc_prices(self, pair, time=round(time.time())-(30*24*3600), interval=60):
|
|
self.prices = self.kraken_wrapper.get_ohlc_data(pair, interval=interval, since=time)[0].close.iloc[::-1]
|
|
|
|
|
|
# Gets the current trading price of the currency pair
|
|
def get_current_price(self, pair):
|
|
current_price = numpy.float64(self.kraken_wrapper.get_ticker_information(pair)["c"][0][0])
|
|
new_row = pandas.DataFrame([[current_price]], index=[pandas.to_datetime(time.time(), unit = "s")])
|
|
|
|
self.prices = pandas.concat([self.prices, pandas.DataFrame(new_row)], ignore_index=False)
|
|
|
|
def get_fee(self, pair):
|
|
self.fee = k.kraken_wrapper.get_tradable_asset_pairs(pair=currency_pair)["fees"][0][0][1]
|
|
|
|
# Calculates the exponential moving average by grabbing data from Kraken on the conversion rate every interval minutes.
|
|
def calculate_ema(self, short_time=5, long_time=30):
|
|
self.long_ema = self.prices.ewm(span=long_time).mean()
|
|
self.short_ema = self.prices.ewm(span=short_time).mean()
|
|
|
|
|
|
# Buys crypto
|
|
def buy_order(self, pair, currency_buy, currency_sell, amount, order_type="market"):
|
|
self.kraken_wrapper.add_standard_order(pair, "buy", order_type, volume=amount, validate=True)
|
|
#self.balances["vol"][currency_buy] += amount
|
|
#self.balances["vol"][currency_sell] -= amount * self.prices.tail(1)[0]
|
|
time.sleep(1)
|
|
self.get_balances()
|
|
|
|
# Sells crypto
|
|
def sell_order(self, pair, currency_buy, currency_sell, amount, order_type="market"):
|
|
self.kraken_wrapper.add_standard_order(pair, "sell", order_type, volume=amount, validate=True)
|
|
#self.balances["vol"][currency_buy] -= amount
|
|
#self.balances["vol"][currency_sell] += amount * self.prices.tail(1)[0]
|
|
time.sleep(1)
|
|
self.get_balances()
|
|
|