
Python调用Google Bard API 完整指南
Kraken API 是一种允许我们通过代码在 Kraken 上自动交易加密货币的方法。
Kraken 是一个在线加密货币交易平台,允许用户交易 50 多种货币和代币。Kraken 还提供场外交易、法定货币和现货、期货和保证金交易。
作为美国最受欢迎的交易所之一,Kraken 为交易带来了竞争优势。它的 API 受到许多算法交易者的青睐,在本文中,我们将对其进行深入探讨。
创建 Kraken 账户和使用 Kraken API 完全免费,但交易时需要付费。费用取决于各种因素,例如您交易的资产、您使用的平台、每月交易量等。
Kraken 上有 5 种费用表,具体如下:
即时购买费用表允许您通过 iOS 和 Android 上都可以找到的 Kraken 应用程序在 Kraken 上购买、出售或转换比特币或其他加密货币。
如果您使用美元或其他稳定币购买稳定币,则收取 0.9% 的费用。另一方面,使用其他加密货币购买稳定币则收取 1.5% 的费用。
稳定币也可以通过支付卡(3.75% + 0.25 欧元费用)或网上银行(1.7% + 0.10 欧元费用)购买,但这些功能仍在开发中,并非所有用户都可以使用。
Kraken Pro费用表采用做市商-接受者费用系统,并根据您过去 30 天的活动计算交易量奖励。请注意,即时购买功能获得的交易量不计算在内。
默认情况下,费用按交易报价货币量的百分比计算。某些货币对允许根据交易的基础货币计算费用,可在订购时使用费用货币选项指定。
基本上,交易越多,费用越低。请查看下图以更好地了解费用:
稳定币和外汇费用表适用于外汇对(例如 EUR/USD)以及稳定币作为基础货币(例如 USDT/USD)的情况。当稳定币仅作为报价货币(例如 BTC/DAI)时,将使用“交易”选项卡中的费用表。
所有保证金费用均在开仓和平仓时加收交易费。如需全面了解,请访问以下链接:https://www.kraken.com/en-us/features/fee-schedule
图片未包含全部信息。请访问上面的链接。
最后,期货费用表也遵循做市商-接受者费用制度,之前的非期货订单不适用。
以下国家的公民不能使用 Kraken:
您可以使用其他更适合您需求的网站来替代 Kraken。以下是其中一些:
Kraken API 的可用客户端如下:
为了开始使用 Kraken API,我们首先需要获取允许访问私有端点的 API 密钥。这意味着我们需要一个帐户,所以让我们创建一个。
继续以下链接并单击右上角的“创建帐户”按钮:
将出现一个新屏幕,您将在其中输入您的电子邮件、用户名和密码,同时指定居住的国家。
之后,您将被要求通过 Kraken 的电子邮件确认您的帐户激活。请务必这样做。
完成后,您将被带到主网站并受到欢迎。到达那里后,点击右上角的您的姓名,然后转到安全 -> API。
现在点击添加密钥并指定您的 API 密钥可以做什么。您可以在三个类别(即资金、订单和交易以及其他)上管理 API 密钥。您还可以添加到期日期和查询开始/结束日期。
对于本文,我将授予密钥所有权限并生成它。
确保安全存储您的密钥,因为关闭窗口后私钥将不再可见。现在我们有了所需的一切,我们可以开始探索 Kraken API。
为此,我们将使用pykrakenapi库,该库使用低级 krakenex python 包实现 Kraken API 方法。要安装它,请使用以下命令:
pip install pykrakenapi
可以通过利用返回 pandas 数据框的函数通过其 API 获取 Kraken 交易所上的可用资产get_asset_info
。我们这样称呼它:
data = k.get_asset_info()
data
如果你想自己从 Kraken 获取信息(不使用库),你可以按照以下方式编写请求:
import requests
data1 = requests.get('https://api.kraken.com/0/public/Assets').json()
data1['result']
{'AAVE': {Caclass': 'currency',
'altname': 'AAVE',
'decimals': 10,
'display_decimals': 5},
'ADA': {'aclass': 'currency',
'altname': 'ADA',
'decimals': 8,
'display_decimals': 6},
现在让我们获取所有可交易资产对:
pairs = k.get_tradable_asset_pairs()
pairs
可以通过该函数获取 Kraken 股票价格数据get_ticker_information
。它还以 pandas 数据框的形式提供。
ticker = k.get_ticker_information('BTCUSD')
ticker.T
如您所见,一些响应类别以数组的形式出现。因此,我们需要熟悉响应:
索引 = 对名称
a = 询问数组(<价格>,<整手数量>,<手数量>)
b = 出价数组(<价格>,<整手数量>,<手数量>)
c = 最后交易结束数组(<价格>,<手数>)
v = 成交量数组(<今天>,<过去 24 小时>)
p = 成交量加权平均价格数组(<今天>,<过去 24 小时>)
t = 交易数量数组(<今天>,<过去 24 小时>)
l = 低数组(<今天>,<过去 24 小时>)
h = 高数组(<今天>,<过去 24 小时>)
o = 今日开盘价
使用get_ohlc_data
函数可以从 Kraken 获取历史数据。我们将要求以美元表示的 BTC 历史每小时数据。
ohlc = k.get_ohlc_data('BTCUSD', interval=1440, ascending = True)
ohlc[0].head()
但是如果我们想创建一些像 20 SMA 这样的指标怎么办?
Kraken API 不提供指标,但可以通过多种方式创建指标。我们将使用简单的 pandas 滚动功能来创建 20 SMA(简单移动平均线)。
对于更高级的指标(例如 RSI),请务必查看 btalib 库。现在,让我们导入 pandas 并计算 20 SMA:
import pandas as pd
ohlc[0]['20 SMA'] = ohlc[0]['close'].rolling(20).mean()
ohlc[0].tail()
由于我们已经拥有制作漂亮的交互式图表所需的所有数据,因此让我们继续创建一个。为此,我们将使用 plotly 库:
import plotly.graph_objects as go
import plotly.express as px
fig = go.Figure(data=[go.Candlestick(x = ohlc[0].index,
open = ohlc[0]['open'],
high = ohlc[0]['high'],
low = ohlc[0]['low'],
close = ohlc[0]['close'],
),
go.Scatter(x=ohlc[0].index, y=ohlc[0]['20 SMA'], line=dict(color='purple', width=1))])
fig.show()
使用该get_order_book
函数可以从 Kraken 获取订单簿数据。订单簿的深度最高可达 100,由count
参数指定。
book = k.get_order_book('AAVEUSD', count = 20)
print(book[0].head())
print(book[1].head())
如果您希望通过索引值合并两个子数据集(出价和要价),则可以使用 pandas 合并功能,如下所示:
df = pd.merge(book[0], book[1], left_index=True, right_index=True)
df = df.rename({"price_x":"Bid Price","volume_x":"Bid Amount", "time_x":"Bid Time",
"price_y":"Ask Price","volume_y":"Ask Amount", "time_y":"Ask Time"}, axis='columns')
df
在第一个示例中,我将向您展示如何正确安全地启动具有指定要求的订单。我们想要做的是当 BTC 达到特定价格(例如 60,000 美元)时启动 ETH 交易。
为了实现这一点,我们需要设置订单基础,然后创建一个循环来检查价格水平是否被触及。如果价格被触及,我们将执行市价订单。相反,我们将继续循环。
当价格执行后,我们会等待几秒钟并检查订单是否真的已完成。这一额外步骤对于添加到您的交易策略中非常重要,因为交易所服务器可能会遇到一些问题。
现在逻辑已经设置好了,让我们导入相关的库并设置API:
from time import sleep
import krakenex
from pykrakenapi import KrakenAPI
api = krakenex.API()
kraken = KrakenAPI(api)
api.load_key('KrakenPass.txt')
注意这kraken.load_key
部分——它会加载文本文件,您需要将 API 密钥和 API 机密存储在单独的行中。现在是创建完整循环的时候了:
while True:
try:
BTC = kraken.get_ticker_information('BTCUSD')
except exception as e:
print(f'Unable to obtain BTC data: {e}')
if float(BTC['b'][0][0]) >= 57300.00:
try:
ETH = float((kraken.get_ticker_information('ETHUSD'))['a'][0][0]) + 2
response = kraken.add_standard_order(pair='ETHUSD', type='buy', ordertype='limit',
volume='0.007', price=ETH, validate=False)
print(response)
except exception as e:
print(f'Error placing order: {e}')
sleep(3)
check_order = kraken.query_orders_info(response['txid'][0])
if check_order['status'][0] == 'open' or 'closed':
print('Order completed sucessfully')
break
else:
print('Order rejected')
break
else:
print('Requirement not reached')
sleep(30)
如果您遇到困难或者需要任何帮助,只需输入此命令:
help(KrakenAPI)
主要任务是当 BTC 在过去 5 分钟内波动 5% 时执行 ETH 交易。这意味着我们需要创建一个循环来获取两种加密货币的价格并计算两者之间的百分比变化。
如果百分比变化小于 5%,程序将休眠 5 分钟并再次计算百分比变化。如果百分比变化等于或大于 5%,则交易将执行。
交易执行后,我们将休眠几秒钟,然后检查交易是否已完成。请记住,库和 API 设置与上一个示例相同。
现在已经设置了逻辑,是时候编写代码了:
while True:
try:
BTC_old = float((kraken.get_ticker_information('BTCUSD'))['b'][0][0])
except Exception as e:
print(f'Unable to obtain BTC data: {e}')
sleep(60)
try:
BTC_new = float((kraken.get_ticker_information('BTCUSD'))['b'][0][0])
except Exception as e:
print(f'Unable to obtain BTC data: {e}')
percent = ((BTC_new - BTC_old)*100) / BTC_old
if percent >= 5:
try:
ETH = float((kraken.get_ticker_information('ETHUSD'))['a'][0][0]) + 2
response = kraken.add_standard_order(pair='ETHUSD', type='buy', ordertype='limit',
volume='0.007', price=ETH, validate=False)
print(response)
except Exception as e:
print(f'Error placing order: {e}')
sleep(3)
check_order = kraken.query_orders_info(response['txid'][0])
if check_order['status'][0] == 'open' or 'closed':
print('Order completed sucessfully')
break
else:
print('Order rejected')
break
else:
print('Requirement not reached')
如果您想使用 Kraken API 取消特定订单,您将需要使用该cancel_open_order
函数并传入订单 ID 作为txid
参数。
k.cancel_open_order(self, txid, otp=None)
是的!可以使用 API 连接器插件通过 Google Sheets 调用 Kraken API。为此,您需要从此处的 Google Workspace Marketplace 下载插件。
安装插件后,它会为您提供快速使用指南。如果您对该功能持怀疑态度,或者只是想在安装前查看它,我可以帮助您。
打开 Google 电子表格并转到附加组件 -> API 连接器 -> 打开。
在屏幕右侧打开 API 连接器界面后,单击“创建”按钮并在 API URL 路径中写入您的 http 请求。
我将插入 Kraken API 资产 URL,将目标工作表设置为当前工作表,并在输出选项下将报告样式设置为紧凑。让我们给请求命名并单击“运行”以查看输出的样子:
如您所见,我们需要转置此输出,就像我们对 pandas 数据框所做的那样。要在 Excel 中执行此操作,请单击第一个资产,然后运行 Shift + Ctrl + 向右箭头键快捷键以选择所选资产右侧的所有资产。
之后,单击要转置输出的新单元格(在本例中为错误单元格),然后右键单击 -> 选择性粘贴 -> 粘贴转置。
请随意尝试一些其他端点,例如:
Order Book:
https://api.kraken.com/0/public/Depth?pair=xbteur&count=20
Ticker:
https://api.kraken.com/0/public/Ticker?pair=xbtusd