kraken-bot/app.py
2024-08-26 16:05:15 -04:00

82 lines
3.2 KiB
Python

import numpy
from dotenv import load_dotenv
from Kraken import Kraken
from scipy import stats
load_dotenv()
kraken = Kraken()
raw = {
asset: {
asset_pair: kraken.ohlc(asset_pair) for asset_pair in kraken.ASSET_PAIRS[asset]
} for asset in kraken.ASSETS
}
processed = {
asset: {
asset_pair: {
'time': numpy.array(
[int(each[0]) for each in raw[asset][asset_pair]['result'][kraken.ASSET_PAIRS[asset][asset_pair]]]
),
'open': numpy.array(
[float(each[1]) for each in raw[asset][asset_pair]['result'][kraken.ASSET_PAIRS[asset][asset_pair]]]
),
'high': numpy.array(
[float(each[2]) for each in raw[asset][asset_pair]['result'][kraken.ASSET_PAIRS[asset][asset_pair]]]
),
'low': numpy.array(
[float(each[3]) for each in raw[asset][asset_pair]['result'][kraken.ASSET_PAIRS[asset][asset_pair]]]
),
'close': numpy.array(
[float(each[4]) for each in raw[asset][asset_pair]['result'][kraken.ASSET_PAIRS[asset][asset_pair]]]
),
'volume': numpy.array(
[float(each[5]) for each in raw[asset][asset_pair]['result'][kraken.ASSET_PAIRS[asset][asset_pair]]]
),
'count': numpy.array(
[float(each[6]) for each in raw[asset][asset_pair]['result'][kraken.ASSET_PAIRS[asset][asset_pair]]]
)
} for asset_pair in kraken.ASSET_PAIRS[asset]
} for asset in kraken.ASSETS
}
linregresses = {
asset: {
asset_pair: {
'open': stats.linregress(
processed[asset][asset_pair]['time'],
processed[asset][asset_pair]['open']
),
'high': stats.linregress(
processed[asset][asset_pair]['time'],
processed[asset][asset_pair]['high']
),
'low': stats.linregress(
processed[asset][asset_pair]['time'],
processed[asset][asset_pair]['low']
),
'close': stats.linregress(
processed[asset][asset_pair]['time'],
processed[asset][asset_pair]['close']
)
} for asset_pair in kraken.ASSET_PAIRS[asset]
} for asset in kraken.ASSETS
}
slopes = {
asset: {
asset_pair: {
'open': linregresses[asset][asset_pair]['open'].slope,
'high': linregresses[asset][asset_pair]['high'].slope,
'low': linregresses[asset][asset_pair]['low'].slope,
'close': linregresses[asset][asset_pair]['close'].slope
} for asset_pair in kraken.ASSET_PAIRS[asset]
} for asset in kraken.ASSETS
}
averages = {
asset: {
asset_pair: sum(
[slopes[asset][asset_pair][each] for each in slopes[asset][asset_pair]]
)/4 for asset_pair in kraken.ASSET_PAIRS[asset]
} for asset in kraken.ASSETS
}
print(averages)