Crypto.com
Crypto(现货):Crypto.com Exchange现货交易(Exchange v1接口https://api.crypto.com/exchange/v1),以API Key与Secret Key接入,支持现货杠杆下单(exchange.IO("trade_margin"))。余额来自Crypto.com的统一账户;Crypto.com衍生品是另一个交易所对象Futures_Crypto。
Futures_Crypto(期货):Crypto.com Exchange衍生品:永续合约与交割合约(Exchange v1接口https://api.crypto.com/exchange/v1),以API Key与Secret Key接入。账户中的代币可以折算为USD计价的额度,用作合约保证金;持仓查询与杠杆设置作用于主账户,可用exchange.IO("accountId", ...)指定其它账户。Crypto.com现货是另一个交易所对象Crypto。
名称与配置
exchange.GetName() | 类型 | 别名 |
|---|---|---|
Crypto | 现货 | — |
Futures_Crypto | 期货 | Crypto.com期货、Crypto.com Futures |
| 配置项 | 必填 | |
| - | - | |
| Access Key | 是 | |
| Secret Key | 是 |
交易对与合约代码
Crypto(现货)
交易对示例:BTC_USDT、CRO_USD
交易对写作BASE_QUOTE,与Crypto.com的交易对名称一致。
Futures_Crypto(期货)
交易对示例:BTC_USD、ETH_USD
交易对如BTC_USD,对应Crypto.com的BTCUSD-PERP(永续)、BTCUSD-YYMMDD(交割)。
| 合约代码 | 说明 |
|---|---|
swap | 永续合约。 |
January | 一月到期的交割合约。 |
February | 二月到期的交割合约。 |
March | 三月到期的交割合约。 |
April | 四月到期的交割合约。 |
May | 五月到期的交割合约。 |
June | 六月到期的交割合约。 |
July | 七月到期的交割合约。 |
August | 八月到期的交割合约。 |
September | 九月到期的交割合约。 |
October | 十月到期的交割合约。 |
November | 十一月到期的交割合约。 |
December | 十二月到期的交割合约。 |
this_week | 最近到期的交割合约。 |
next_week | 次近到期的交割合约。 |
quarter | 最近一个在3、6、9、12月到期的交割合约。 |
next_quarter | 次近一个在3、6、9、12月到期的交割合约。 |
交割合约以到期月份的英文名为合约代码,例如交易对BTC_USD、合约代码October,指最近一个该月份里到期最晚的交割合约(月度合约)。同月如果还有其它交割合约(例如周度合约),它们以原生合约代码为合约代码,例如BTC_USD.BTCUSD-261009。exchange.GetMarkets中的交割合约也按这一规则命名,每张合约只出现一次。
原生合约代码示例:BTCUSD-261030
也可以直接使用Crypto.com的交割合约代码,形如BTCUSD-YYMMDD。
专属IO指令
Crypto(现货)
| 指令 | 参数 | 说明 | 返回值 |
|---|---|---|---|
api | httpMethod, method[, params[, raw]] | 直接调用Crypto.com接口:资源写RPC方法名,如private/user-balance、public/get-tickers(也可以写/exchange/v1/开头的路径或完整URL)。(详见表下) | 交易所的完整应答(code为0);业务错误时返回空值。 |
trade_margin | — | 切换为现货杠杆:之后的普通订单带spot_margin=MARGIN下单,条件单带exec_inst的MARGIN_ORDER下单。只影响下单,不向交易所发请求。 | 指令名本身。 |
trade_normal | — | 切换回普通现货下单(默认)。 | 指令名本身。 |
表中长说明的其余部分:
api:默认签名,按JSON-RPC请求体发送,params对象保留JSON类型(嵌套对象、数组原样发送);raw为JSON对象字符串时整体替换params。签名参数传false时不签名,GET的参数放进查询串。
通用指令base、currency见exchange.IO。
Futures_Crypto(期货)
| 指令 | 参数 | 说明 | 返回值 |
|---|---|---|---|
api | httpMethod, method[, params[, raw]] | 直接调用Crypto.com接口:资源写RPC方法名,如private/get-positions、public/get-tickers(也可以写/exchange/v1/开头的路径或完整URL)。(详见表下) | 交易所的完整应答(code为0);业务错误时返回空值。 |
accountId | string | 设置交易账户ID(账户uuid),用于查询持仓和设置杠杆;不设置时自动使用主账户。 | 形如{"accountId": "..."}的对象。 |
表中长说明的其余部分:
api:默认签名,按JSON-RPC请求体发送,params对象保留JSON类型(嵌套对象、数组原样发送);raw为JSON对象字符串时整体替换params。签名参数传false时不签名,GET的参数放进查询串。
通用指令base、currency见exchange.IO。
常用用法
按JSON-RPC方法名调用接口
javascript
function main() {
// 私有方法:默认签名,按JSON-RPC请求体发送,返回完整应答(code为0)
var r = exchange.IO("api", "POST", "private/user-balance")
Log(r.result.data[0].position_balances)
// 公开方法:最后一个参数传false时不签名,GET的参数放进查询串
var t = exchange.IO("api", "GET", "public/get-tickers", "instrument_name=BTC_USDT", false)
Log(t.result.data[0]) // {"i": "BTC_USDT", "a": "...", "b": "...", "k": "...", ...}
}
查询账户uuid,指定查询持仓、设置杠杆使用的账户(仅Futures_Crypto)
javascript
function main() {
var r = exchange.IO("api", "POST", "private/get-accounts")
var uuid = r.result.master_account.uuid
Log("主账户:", uuid, "子账户:", r.result.sub_account_list)
// 之后查询持仓、设置杠杆使用该账户(不设置时自动使用主账户)
Log(exchange.IO("accountId", uuid)) // {"accountId": "..."}
Log(exchange.GetPositions())
}
函数支持差异
没有不支持的标准函数。
以回退方式支持:
exchange.GetRecords:原生周期为1分钟、5分钟、15分钟、30分钟、1小时、2小时、4小时、6小时、12小时、1天、1周、14天、1月;其它周期由托管者合成。
保证金、账户与模拟盘
Futures_Crypto(期货)
保证金模式:统一账户全仓,没有逐仓切换,exchange.GetPositions()的保证金模式恒为全仓;exchange.IO("cross", ...)报错。
持仓模式:单向持仓:每个合约一个净持仓,Crypto.com以数量的正负表示多空;exchange.IO("dual", ...)报错。
账户:exchange.SetMarginLevel()设置的是整个交易账户的杠杆(Crypto.com的账户级杠杆),必须是1到100的整数。
注意事项
Crypto(现货)
- 市价买单的下单量是交易币数(Crypto.com的
quantity),不是计价币金额;触发后为市价的条件买单同样按交易币数下单。 - 条件单只支持止盈、止损单,不支持OCO;以最新成交价触发。条件单使用Crypto.com的Advanced Order Management接口下单、改单、撤单与查询。
- 限价单支持
tif的IOC、FOK与只做Maker(postOnly),只做Maker不能与IOC、FOK同时使用;市价单传入tif或postOnly时报错。条件单中带委托价的(触发后挂限价单)同样支持tif与postOnly,触发后市价成交的条件单传入时报错。 - 支持
exchange.ModifyOrder()与exchange.ModifyConditionOrder()(Crypto.com原地改单,订单ID不变),条件单可改触发价、委托价与数量;执行价格传-1可把触发后限价的条件单改成触发后市价,传正数则反过来。不能修改tif与postOnly(传入时报错)。 exchange.GetOrders()、exchange.GetConditionOrders()不传参数时返回全部交易对的挂单。exchange.GetHistoryOrders()、exchange.GetHistoryConditionOrders()不传limit时返回最近100条,传更大的limit时自动翻页取满。条件单历史不传since时,Crypto.com只返回最近一天内的记录,要查更早的请传since。exchange.GetAssets()的冻结数量取Crypto.com的reserved_qty(挂单与保证金占用之和),可用数量为持有量减去它。
Futures_Crypto(期货)
exchange.GetFundings不支持批量查询,不传参数或传入范围(如USD.swap)时报错并返回空值,需要传入具体的永续合约品种代码,例如BTC_USD.swap。- 资金费率每小时结算一次,取Crypto.com的
funding_rate估值。 - 下单量直接作为Crypto.com的
quantity发送,合约面值见exchange.GetMarkets的CtVal(面值币种CtValCcy为标的币)。 - 条件单只支持止盈、止损单,不支持OCO;以标记价格触发。
- 限价单支持
tif的IOC、FOK与只做Maker(postOnly),只做Maker不能与IOC、FOK同时使用;市价单传入tif或postOnly时报错。条件单中带委托价的(触发后挂限价单)同样支持tif与postOnly,触发后市价成交的条件单传入时报错。普通单与条件单都支持只减仓(reduceOnly)。 - 支持
exchange.ModifyOrder()与exchange.ModifyConditionOrder()(Crypto.com原地改单),条件单可改触发价、委托价与数量;执行价格传-1可把触发后限价的条件单改成触发后市价,传正数则反过来。不能修改tif与postOnly(传入时报错)。 exchange.GetHistoryConditionOrders()不传since时,Crypto.com只返回最近一天内的条件单历史;要查更早的记录请传since。