Aevo
USDC永续合约与USDC期权。查询、撤单、设置杠杆使用API Key签名;下单、改单、条件单还要用注册在Aevo账户上的签名密钥(配置项「Signing Key」)对订单做EIP-712签名。
名称与配置
exchange.GetName():Futures_Aevo(期货)。
| 配置项 | 必填 | 说明 |
|---|---|---|
| Access Key | 是 | Aevo的API Key,作为私有接口的AEVO-KEY请求头。 |
| Secret Key | 是 | Aevo的API Secret,用于私有接口的HMAC-SHA256签名。 |
| Signing Key | 是 | Aevo账户上注册的EIP-712签名私钥(0x加64位十六进制),用于下单、改单和条件单。(详见表下) |
表中长说明的其余部分:
- Signing Key:在Aevo的设置页(
https://app.aevo.xyz/settings,不是API Keys页)生成,生成1周后自动失效,失效后需要重新生成并更新这一项。没有填写时下单、改单、创建条件单报错,查询、撤单、设置杠杆不受影响;也可以运行时用exchange.IO("signingKey", key)设置。
交易对与合约代码
交易对示例:BTC_USDC、ETH_USDC
Aevo以USDC计价和结算,交易对写作ETH_USDC;计价币写成USDC以外的币会报错。
| 合约代码 | 说明 |
|---|---|
swap | 永续合约(交易所代码ETH-PERP),完整品种代码形如ETH_USDC.swap。 |
Aevo没有交割合约,除swap与期权代码外的合约代码都会报错。
专属IO指令
| 指令 | 参数 | 说明 | 返回值 |
|---|---|---|---|
signingKey | string | 设置本交易所对象下单用的EIP-712签名私钥(0x加64位十六进制),覆盖配置项「Signing Key」,只在本次运行中有效。签名密钥在Aevo网页创建API Key时生成并注册到账户,有有效期,过期后需要重新生成。 | 该私钥对应的钱包地址,可以与Aevo网页上的签名密钥列表核对;私钥格式不对时报错。调用时不检查是否已注册,未注册的密钥在下单时报错。 |
api | method, path[, params[, raw[, sign]]] | 直接调用Aevo接口。(详见表下) | 交易所的原始应答;应答带error时报错。 |
表中长说明的其余部分:
api:公开路径(/markets、/statistics、/orderbook、/instrument/...、/funding、/coingecko-statistics,path是完整URL时按其中的路径判断)默认不签名,其它路径默认用API Key签名(AEVO-KEY、AEVO-SIGNATURE等请求头);sign传true/false(也可以直接作为第4个参数)强制签名或不签名。GET的参数编入查询串,其它方法以JSON请求体发送(保留数字、布尔类型)。raw不是请求体而是参数表(JSON对象、JSON字符串或a=1&b=2),非空时整体替换params。不会替调用方对订单做EIP-712签名。
通用指令base、currency见exchange.IO。
常用用法
用api查询行情与账户,并换用另一个签名密钥
javascript
function main() {
// 公开路径默认不签名
var q = {asset: "ETH", instrument_type: "PERPETUAL"}
var markets = exchange.IO("api", "GET", "/markets", q)
Log(markets[0].instrument_name, "标记价格:", markets[0].mark_price)
// 其它路径默认用API Key签名
var account = exchange.IO("api", "GET", "/account")
Log("可用余额:", account.available_balance, "持仓数:", account.positions.length)
// 换用另一个已注册的签名密钥,只在本次运行中有效;返回该密钥对应的钱包地址,
// 可以与Aevo网页上的签名密钥列表核对
var addr = exchange.IO("signingKey", "0x...") // 换成签名密钥私钥
Log("签名密钥地址:", addr)
}
函数支持差异
不支持(调用时报错并返回空值):exchange.GetTickers。
以回退方式支持:
exchange.GetRecords:交易所没有K线接口,由托管者用成交记录合成:首次调用只有最近成交覆盖的少量K线,随调用逐步累积。合约没有成交时为空。
保证金、账户与模拟盘
保证金模式:Aevo是统一保证金账户,没有全仓/逐仓切换指令;exchange.GetPositions()的保证金模式按交易所返回(持仓的margin_type,缺省时取账户里该合约的设置),没有逐合约设置的期权持仓为全仓。exchange.SetMarginLevel()按永续合约设置杠杆,期权不支持。持仓的MarginLevel为该合约的杠杆倍数(持仓的leverage,缺省时取账户里该合约的设置;期权为0),Margin为持仓占用的初始保证金(initial_margin)。
持仓模式:只有单向(净)持仓,没有双向持仓。平仓单(closebuy、closesell)以只减仓(reduce-only)方式下单。
账户:exchange.GetAccount()的Balance为USDC可用余额,FrozenBalance为占用的初始保证金,Equity为账户权益;USDC以外的抵押品在exchange.GetAssets()中逐币列出。
期权
支持Aevo的USDC期权,下单、撤单、查询与永续走同一套接口。限制:
exchange.GetMarkets()的结果包含期权合约(只列出交易中的合约),exchange.SetContractType()按其中的代码校验。exchange.GetTicker()的Last为标记价格;无人报价时Buy、Sell为0;Open、High、Low为0。- 不支持
exchange.SetMarginLevel()、exchange.GetFundings()。 - 价格和数量按6位小数定点签名,小于0.000001的非零价格或数量会报错。
期权代码示例:ETH-30JUN23-1600-C、ETH-24SEP27-2800-P
期权代码为Aevo原生代码:标的-到期日(DDMMMYY)-行权价-C/P,C为看涨、P为看跌。期权以USDC结算,交易对设置为标的币加_USDC(标的必须与交易对的交易币一致),完整品种代码形如ETH_USDC.ETH-30JUN23-1600-C。
注意事项
- 只支持限价单,市价单报错;条件单(止盈、止损)的委托价必须是限价,不支持市价止盈止损和OCO。
- 下单选项放在最后一个对象参数里:
{tif: "ioc"}、{tif: "fok"}、{postOnly: true}分别对应交易所的IOC、FOK和只做Maker;其它键原样并入下单请求体(同名覆盖连接器生成的字段)。 exchange.ModifyOrder()、exchange.ModifyConditionOrder()由交易所重新签发订单,返回新的订单号,此后应使用新订单号;exchange.ModifyOrder()沿用原订单的只减仓(reduce-only)属性。交易所对被exchange.ModifyConditionOrder()替换掉的原条件单仍返回挂单状态(实际已不在挂单列表中,撤销会报ORDER_DOES_NOT_EXIST);同一个托管者进程里修改过的条件单,exchange.GetConditionOrder(原订单号)会核对挂单列表并返回已撤销,重启后或在其它进程修改的则按交易所原样返回。- 订单查询结果没有成交均价时,
exchange.GetOrder()、exchange.GetConditionOrder()对已有成交的订单按交易所成交记录计算AvgPrice(成交量加权,多一次或几次请求),已结束订单的结果会缓存;成交记录尚未生成时AvgPrice为0。 - 永续合约
exchange.GetTicker()的Last为标记价格、Open为24小时前的标记价格,没有最高价、最低价(High、Low为0),Volume为24小时成交张数。 - 资金费率每小时结算一次;
exchange.GetFundings()只返回永续合约。 exchange.GetHistoryOrders()、exchange.GetHistoryConditionOrders()只能按单个品种查询,传空字符串(查询全部品种)会报错。