量化喵是独立第三方信息站,与任何交易所都没有隶属关系。本页不含推广链接与邀请码。 完整披露 →

欧易 · API 实操

怎么用欧易 API 创建、查询和停止网格策略

欧易的网格策略有自己的一组接口,路径都在 /api/v5/tradingBot/grid/ 下面,和普通下单的 /api/v5/trade/order 分开。创建网格发 POST /api/v5/tradingBot/grid/order-algo:algoOrdType 填 grid(现货网格)或 contract_grid(合约网格),再给区间最高价 maxPx、最低价 minPx、网格数量 gridNum 和投入数量。请求成功会拿回一个 algoId(策略订单 ID),后面查状态、改参数、停止,全靠这个 ID。

停止发 POST /api/v5/tradingBot/grid/stop-order-algo,stopType 必填:现货网格 1 是卖出交易币、2 是不卖;合约网格 1 是市价全平、2 是停止不平仓。网格是在启动中、运行中、等信号还是已经停了,看未完成列表、历史列表和详情这三个 GET 接口返回的 state。

欧易网格交易 API 有哪些接口,限速多少

这组接口在 API 文档左侧目录「撮合交易 → 网格交易」下。创建、查询、修改、停止要用到的是下表 13 个,限速都是 20 次/2s。创建和立即触发两个接口按「User ID + Instrument ID」计数,同一个账户换一个交易对就是新的一份额度;其余 11 个只按 User ID 计,账户里所有网格共用。目录里这一节往下还有「调整保证金计算」「调整保证金」「加仓」等接口。

接口做什么适用限速规则
POST /api/v5/tradingBot/grid/order-algo创建网格现货、合约User ID + Instrument ID
POST /api/v5/tradingBot/grid/amend-algo-basic-param改区间和网格数现货、合约User ID
POST /api/v5/tradingBot/grid/amend-order-algo改止盈止损、停止条件现货、合约User ID
POST /api/v5/tradingBot/grid/stop-order-algo停止网格,每次最多 10 个现货、合约User ID
POST /api/v5/tradingBot/grid/close-position给已停止未平仓的网格平仓合约User ID
POST /api/v5/tradingBot/grid/cancel-close-order撤销网格平仓单合约User ID
POST /api/v5/tradingBot/grid/order-instant-trigger网格策略立即触发现货、合约User ID + Instrument ID
GET /api/v5/tradingBot/grid/orders-algo-pending未完成网格列表现货、合约User ID
GET /api/v5/tradingBot/grid/orders-algo-history历史网格列表现货、合约User ID
GET /api/v5/tradingBot/grid/orders-algo-details单个网格详情现货、合约User ID
GET /api/v5/tradingBot/grid/sub-orders网格挂出的子订单现货、合约User ID
GET /api/v5/tradingBot/grid/positions网格持仓合约User ID
POST /api/v5/tradingBot/grid/withdraw-income提取利润现货User ID

这些都是要带 API Key 签名的私有接口,请求头怎么拼按官方 API 文档的签名说明来。还没用 API 下过一笔普通单的,从 欧易 API 量化入门:创建模拟盘 Key、下单与撤单核验 开始;脚本里同时还有普通下单在跑的,那部分额度见 欧易 API 限速是多少?下单频率怎么算、报 50061 怎么办。

创建网格策略的请求参数怎么填

现货网格和合约网格共用下面这些参数:

参数必填含义与取值
instId是产品 ID,文档的现货示例用 BTC-USDT,合约示例用 BTC-USDT-SWAP
algoOrdType是grid:现货网格;contract_grid:合约网格
maxPx / minPx是区间最高价 / 区间最低价
gridNum是网格数量
runType否网格类型,1:等差,2:等比;不传按等差
tpTriggerPx / slTriggerPx否止盈触发价 / 止损触发价
algoClOrdId否自定义策略 ID,字母与数字组合,区分大小写,长度 1 到 32 位
tag否订单标签
triggerParams否启动、停止条件,下一节单独讲

现货、合约再各自多出几项:

参数用在含义与取值
quoteSz现货计价币投入数量,和 baseSz 至少给一个
baseSz现货交易币投入数量,和 quoteSz 至少给一个
tradeQuoteCcy现货用于交易的计价币种,不填就用 instId 的计价币
sz合约,必填投入保证金,单位 USDT
direction合约,必填long:做多;short:做空;neutral:中性
lever合约,必填杠杆倍数
basePos合约是否开底仓,默认 false,中性网格忽略这一项
tpRatio / slRatio合约止盈比率 / 止损比率,0.1 代表 10%

文档给这些参数标的类型,除了 basePos 是 Boolean、triggerParams 是对象数组,其余全是 String。所以请求体里写的是 "gridNum": "10",价格、数量、杠杆也一样加引号。带单员另有一个 profitSharingRatio(分润比例),只能填 0、0.1、0.2、0.3。

欧易 API v5 中文文档「POST / 网格策略委托下单」一节:限速 20 次/2s、接口路径、请求参数表前几行和现货网格请求示例
截图 2026-09 · 「POST / 网格策略委托下单」标题下的「限速」「限速规则」两行,能核到 20 次/2s 和 User ID + Instrument ID。

把文档的现货示例去掉触发条件,就是一笔最简单的现货网格:

POST /api/v5/tradingBot/grid/order-algo
{
    "instId": "BTC-USDT",
    "algoOrdType": "grid",
    "maxPx": "5000",
    "minPx": "400",
    "gridNum": "10",
    "runType": "1",
    "quoteSz": "25"
}

合约网格把 quoteSz 换成 sz,再补上方向和杠杆两个必填项。下面同样照文档示例改写:

POST /api/v5/tradingBot/grid/order-algo
{
    "instId": "BTC-USDT-SWAP",
    "algoOrdType": "contract_grid",
    "maxPx": "5000",
    "minPx": "400",
    "gridNum": "10",
    "runType": "1",
    "sz": "200",
    "direction": "long",
    "lever": "2"
}

两个示例的 runType 都照文档传 1,也就是等差网格。5000、400、25、200 都是文档里的演示值,不是参数建议,真发请求前换成你按当前行情定的区间和金额。区间、网格数怎么定,见 欧易网格机器人怎么设置:区间、格数、每格资金怎么定。

拿到响应,外层 code 看完再看 data 里每一项的 sCode:0 代表成功,同一项里的 algoId 就是这个网格的策略订单 ID,马上存下来;sCode 不是 0,失败原因写在 sMsg。请求里传过 algoClOrdId 的,响应里有同名字段,可以拿它和本地记录对账。

triggerParams 怎么设置网格的启动和停止条件

triggerParams 是一个数组,每一项是一条条件。triggerAction 填 start(网格启动)或 stop(网格停止);triggerStrategy 填 instant(立即触发,默认值)、price(价格触发)或 rsi(RSI 指标触发)。每条都可以加 delaySeconds,单位秒,默认 0。

triggerStrategy要一起传的字段取值
instant无—
pricetriggerPx触发价格
rsitimeframeK 线种类:3m、5m、15m、30m、1H、4H、1D
rsithold阈值,1 到 100 的整数
rsitriggerCondcross_up 上穿、cross_down 下穿、above 上方、below 下方、cross 交叉
rsitimePeriod周期,文档给的取值是 14

停止条件里还能放 stopType,只在 triggerAction 为 stop 时生效:现货 1 卖出交易币、2 不卖出交易币;合约 1 停止平仓、2 停止不平仓。

文档的合约示例用了两条:一条 start,30 分钟 K 线、周期 14 的 RSI 与阈值 10 交叉时启动;一条 stop,价格到 1000 时停止,stopType 为 2,停下后不平仓。

"triggerParams":[
  {
     "triggerAction":"start",
     "triggerStrategy":"rsi",
     "timeframe":"30m",
     "thold":"10",
     "triggerCond":"cross",
     "timePeriod":"14"
  },
  {
     "triggerAction":"stop",
     "triggerStrategy":"price",
     "triggerPx":"1000",
     "stopType":"2"
  }
]

未完成列表的状态里专门有一档 pending_signal(等待触发)。要让策略立即触发,调 POST /api/v5/tradingBot/grid/order-instant-trigger,传 algoId 即可;现货网格还能顺带传 topUpAmt,增加投资额。

用 API 查网格策略的运行状态和停止原因

查状态用三个接口,algoOrdType 都是必填,一次只能查一种:grid 或 contract_grid。现货、合约网格都开着的账户,要各发一次。

  • 未完成列表 GET /api/v5/tradingBot/grid/orders-algo-pending?algoOrdType=grid:能按 algoId、instId、instType(SPOT、MARGIN、FUTURES、SWAP)过滤;limit 最大 100,默认也是 100;翻页用 after / before,传的是 algoId。
  • 历史列表 GET /api/v5/tradingBot/grid/orders-algo-history:参数同上,返回的 state 只有 stopped。
  • 详情 GET /api/v5/tradingBot/grid/orders-algo-details?algoId=…&algoOrdType=grid:两个参数都必填,字段比列表多。
state意思出现在
starting启动中未完成列表、详情
running运行中未完成列表、详情
stopping终止中未完成列表、详情
pending_signal等待触发未完成列表
no_close_position已停止未平仓,仅合约网格未完成列表、详情
stopped已停止历史列表、详情

停掉的网格,原因看 cancelType:0 无,1 手动停止,2 止盈停止,3 止损停止,4 风控停止,5 交割停止,6 信号停止。现货网格另有 stopResult:0 默认,1 市价卖币成功,-1 市价卖币失败。App 里看到网格停了、想对照界面上的说法,读 欧易网格机器人自己停了,是不挂单还是策略终止?。

详情接口多出来的字段里,脚本用得上的有:runPx 启动时价格、singleAmt 单网格买卖量、activeOrdNum 子订单挂单数量、tradeNum 挂单成交次数。现货网格还有 curBaseSz / curQuoteSz(当前持有的交易币和计价币)与 profit(当前可提取利润,单位是计价币)。arbitrageNum 网格套利次数,以及合约网格的 liqPx 预估强平价格、actualLever 实际杠杆倍数、availEq 可用保证金,详情里有,列表接口里也有。时间字段 cTime、uTime 都是毫秒时间戳。未完成列表、历史列表和详情接口都会返回 runType,取值和创建时是同一套,查出来是 1 或 2 也照那张参数表读。

要看网格具体挂了哪些单,用 GET /api/v5/tradingBot/grid/sub-orders,algoId、algoOrdType 和 type 三个必填,type 传 live 查未成交、filled 查已成交,翻页传的是子订单的 ordId。合约网格的持仓用 GET /api/v5/tradingBot/grid/positions,algoOrdType 只能填 contract_grid。

停止网格策略时 stopType 该传 1 还是 2

停止接口的请求体是数组,一次最多停 10 个网格,每一项的 algoId、instId、algoOrdType、stopType 四个字段都必填。文档示例:

POST /api/v5/tradingBot/grid/stop-order-algo
[
    {
        "algoId":"448965992920907776",
        "instId":"BTC-USDT",
        "stopType":"1",
        "algoOrdType":"grid"
    }
]
网格类型stopType = 1stopType = 2
现货网格 grid卖出交易币不卖出交易币
合约网格 contract_grid市价全平停止不平仓

现货网格传 1,交易币按市价卖出,事后到历史列表或详情里看 stopResult。如果是 -1(市价卖币失败),去交易账户看交易币还在不在,再决定自己怎么卖。只想停掉挂单、币先留着,传 2。

合约网格传 2 要多走一步。两处说明对起来看,传 2 停下的合约网格就处在 no_close_position(已停止未平仓):它还会出现在未完成列表里,而 POST /api/v5/tradingBot/grid/close-position 也只接受这个状态的网格。平仓时 mktClose 传 true 是市价全平;传 false 是部分平仓,这时 sz(单位是张)和 px 都要传。部分平仓会返回一个平仓单 ordId(市价全平时为空),挂出去不想要了,用 POST /api/v5/tradingBot/grid/cancel-close-order 带上 algoId 和 ordId 撤掉。

《合约网格策略常见问答》里还写明,已经停止的策略无法重新运行,也无法加仓;想接着跑,平仓后重新创建一个。帮助中心的现货、合约两篇问答都提到,带单交易员手动停止时只能选按市价卖出(现货)或市价全平(合约)。

网格跑起来以后怎么改区间、加投资、提利润

改区间和网格数用 POST /api/v5/tradingBot/grid/amend-algo-basic-param,algoId、minPx、maxPx、gridNum 四项都必填,只想改网格数也得把区间原样再传一遍。合约网格可以另给 topupAmount;不填或填 "0",修改所需的追加投资会自动追加。返回里的 requiredTopupAmount 是这次修改要补的金额,合约网格还有 maxTopupAmount(最大追加投资金额)。

帮助中心现货、合约两篇问答对「运行中修改参数」的说明一致:修改核心参数后,策略撤掉现有挂单,按新参数和当前资产重新挂单,不用先停止,过程中可能按市价买卖;订单组重置,还没提取的网格利润会被再投资。合约网格修改时如果行情波动剧烈、策略里资产又少,单网格买卖量可能算成 0,策略会自动停止。

这个接口在文档里列了几个报错码:

错误码HTTP 状态文档里的提示
51000400{param} 参数错误
51346400最高价格应高于最低价格
55123400交易账户余额不足,向交易账户转入资金后再试
55124200由于行情波动,投入金额不足,修改后的参数无法生效
55186200由于行情波动,投入金额过大,修改后的参数无法生效

55124 和 55186 返回的 HTTP 状态是 200,脚本只判断状态码的话会当成改成功了,一定要读响应体里的 code。

止盈止损和停止条件用 POST /api/v5/tradingBot/grid/amend-order-algo 改,algoId、instId 必填。参数表写着 slTriggerPx、tpTriggerPx 至少传一个,传空字符串 "" 就是取消对应的触发价;tpRatio、slRatio 只对合约网格有效,传 "" 同样是取消。这个接口里还有 topUpAmt(增加的投资额),只适用于现货网格。要换停止条件,在同一个请求里带新的 triggerParams,写法和创建时一样。

现货网格的利润用 POST /api/v5/tradingBot/grid/withdraw-income 提取,只传 algoId,返回的 profit 是这次提出来的数。提之前可以先查详情接口的 profit(当前可提取利润)。《现货网格策略常见问答》说明,网格利润不一定全部能提:一部分可能已用在修改策略设置、追加投资或利润再投资上,或者之前已经手动提走;还有一部分可能预留给后续订单和不可提取的舍入差异。

风险提示:网格接口传错区间或杠杆,策略照样按你传的值运行;stopType 该传 2 却传成 1,会按市价卖币或全平,已经成交的撤不回来。文中请求示例改写自欧易 API v5 中文文档「网格交易」一节,价格和数量都是文档演示值,不代表任何账户,也不是参数建议。参考页面:欧易 API v5 中文文档「网格交易」一节各接口说明,欧易帮助中心《现货网格策略常见问答》《合约网格策略常见问答》。本文不构成投资建议,请只用你能承受全部损失的闲钱,并自行对交易决策负责。