Kraken
Kraken(现货):Kraken现货交易(Kraken REST接口https://api.kraken.com),使用Kraken的API Key与Secret Key接入。账户为Kraken现货余额,可用数量为余额减去挂单冻结;Kraken期货是另一个交易所对象Futures_Kraken。
Futures_Kraken(期货):Kraken期货(Kraken Futures接口https://futures.kraken.com):反向(币本位)永续与交割合约、多币种抵押(线性)永续与交割合约,以及Kraken期货的期权。使用Kraken期货的API Key与Secret Key接入;Kraken现货是另一个交易所对象Kraken。
名称与配置
exchange.GetName() | 类型 | 别名 |
|---|---|---|
Kraken | 现货 | — |
Futures_Kraken | 期货 | Kraken期货、Kraken Futures |
| 配置项 | 必填 | |
| - | - | |
| Access Key | 是 | |
| Secret Key | 是 |
交易对与合约代码
Kraken(现货)
交易对示例:BTC_USD、ETH_USDT、BTC_EUR
交易对写作BASE_QUOTE。Kraken把BTC写作XBT、DOGE写作XDG,交易对用BTC、DOGE即可(写XBT_USD也可以),返回的品种代码统一用BTC、DOGE。
Futures_Kraken(期货)
交易对示例:BTC_USD、ETH_USD
交易对如BTC_USD,合约代码决定合约类型:不带后缀的合约代码为反向合约(Kraken的PI_、FI_),带_pf、_ff后缀的为多币种抵押合约(PF_、FF_)。合约代码里BTC写作XBT,交易对用BTC即可,返回的品种代码统一用BTC。
| 合约代码 | 说明 |
|---|---|
swap | 反向永续合约(默认)。 |
month | 最近到期的反向交割合约。 |
this_week | 同month;exchange.GetMarkets与查询结果中写作month。 |
quarter | 反向季度合约(3、6、9、12月到期中最近的一个)。 |
next_quarter | 反向次季合约。 |
third_quarter | 反向第三季度合约。 |
swap_pf | 多币种抵押永续合约。 |
month_ff | 最近到期的多币种抵押交割合约。 |
this_week_ff | 同month_ff;exchange.GetMarkets与查询结果中写作month_ff。 |
quarter_ff | 多币种抵押季度合约。 |
next_quarter_ff | 多币种抵押次季合约。 |
third_quarter_ff | 多币种抵押第三季度合约。 |
Kraken只挂月度和季度交割合约,this_week、month都指最近到期的那个。交割合约按交易所合约列表中的到期时间选取。同一张合约同时属于几个档位时(例如最近到期的季度合约也是month),exchange.GetMarkets以及行情、持仓、订单的品种代码只用其中一个,季度档优先于month;不属于任何档位的交割合约以原生代码为合约代码(如BTC_USD.FF_XBTUSD_261030)。每张合约在exchange.GetMarkets中只出现一次。查询持仓、挂单时可以用范围USD.swap_pf(多币种抵押永续)、USD.futures_ff(多币种抵押交割)。
原生合约代码示例:FF_ETHUSD_250307、PF_XBTUSD
合约可以直接使用Kraken的原生合约代码:交割合约(FI_、FF_前缀)如ETH_USD.FF_ETHUSD_250307,永续合约(PI_、PF_前缀)如BTC_USD.PF_XBTUSD。exchange.SetContractType()也接受当前交易对的原生代码(包括属于某个档位、在exchange.GetMarkets中以档位代码出现的交割合约),例如交易对BTC_USD时exchange.SetContractType("PF_XBTUSD")。
专属IO指令
Kraken(现货)
没有专属指令,通用指令见exchange.IO。
Futures_Kraken(期货)
| 指令 | 参数 | 说明 | 返回值 |
|---|---|---|---|
cross | bool[, symbol] | 全仓(true)/逐仓(false),只支持多币种抵押合约。切换为逐仓时杠杆上限设为10倍,之后可用exchange.SetMarginLevel()修改。 | 成功也返回空值,需要确认时调用后读取GetLastError()。 |
通用指令api、base、currency见exchange.IO。
函数支持差异
全部交易所对象
没有不支持的标准函数。
Kraken(现货)
以回退方式支持:
exchange.GetRecords:原生周期为1分钟、5分钟、15分钟、30分钟、1小时、4小时、1天、1周、15天;其它周期由托管者合成。
Futures_Kraken(期货)
以回退方式支持:
exchange.GetRecords:原生周期为1分钟、5分钟、15分钟、30分钟、1小时、4小时、12小时、1天、1周;其它周期由托管者合成。
保证金、账户与模拟盘
Futures_Kraken(期货)
保证金模式:只有多币种抵押合约(swap_pf、*_ff)可以切换全仓/逐仓和设置杠杆,反向合约与期权调用exchange.IO("cross", ...)、exchange.SetMarginLevel()报错。Kraken以杠杆偏好表达保证金模式:exchange.SetMarginLevel()设置杠杆上限的同时会把该合约切换为逐仓,exchange.IO("cross", true)取消杠杆上限、恢复全仓。
持仓模式:连接器没有持仓模式设置,exchange.IO("dual", ...)报错。
账户:反向合约使用各自的单币种钱包,exchange.GetAccount()的Stocks为该钱包的可用币数;多币种抵押合约与期权使用多币种抵押钱包,Balance为以USD计价的可用保证金。
期权
Futures_Kraken(期货)
支持Kraken期货的期权。限制:
- Kraken没有期权合约列表接口,
exchange.GetMarkets()不包含期权合约,期权代码需要从Kraken网页获取。 exchange.GetTicker()在合约没有成交价时Last取标记价格;无人报价时Buy、Sell、High、Low为0;原始数据Info中有隐含波动率、希腊值等字段。- 期权没有资金费率,不支持
exchange.SetMarginLevel()与保证金模式切换。
期权代码示例:OF_ETHUSD_261225_4000_C、OF_XBTUSD_261225_100000_P
期权代码为Kraken原生代码:OF_、标的与计价币、到期日(YYMMDD)、行权价、C/P,C为看涨、P为看跌。代码中的标的与计价币必须与交易对一致,BTC写作XBT,完整品种代码形如ETH_USD.OF_ETHUSD_261225_4000_C。
注意事项
Kraken(现货)
- 现货市价买单的下单量是交易币数(Kraken的
volume),不是计价币金额。 - 条件单只支持止盈、止损单,不支持OCO。
- 下单支持
tif的IOC与只做Maker(postOnly,仅限价委托),不支持FOK,传入时报错。 - 支持
exchange.ModifyOrder()与exchange.ModifyConditionOrder():都是Kraken原地改单,订单ID不变;普通单可改价格、数量,条件单可改触发价、委托价与数量。 exchange.GetOrders()、exchange.GetConditionOrders()不传参数时返回全部交易对的挂单。exchange.GetHistoryOrders()、exchange.GetHistoryConditionOrders()不传limit时返回最近50条,传更大的limit时自动翻页取满。
Futures_Kraken(期货)
- 下单量为Kraken的合约数量:反向合约每张1 USD,多币种抵押合约以标的币数计(见
exchange.GetMarkets的CtVal、CtValCcy)。 - Kraken的资金费率原始值是每张合约的绝对金额,
exchange.GetFundings()已换算为相对费率;永续合约每小时结算一次。 - 条件单只支持止盈、止损单,不支持OCO;条件单以最新成交价触发。
- 限价单支持
tif的IOC与只做Maker(postOnly),不支持FOK;市价单不支持FOK与只做Maker,条件单不支持tif与只做Maker,传入时报错。 - 支持
exchange.ModifyOrder()与exchange.ModifyConditionOrder()(Kraken的改单接口),条件单可改触发价、委托价与数量。