输入/搜索内容
内置函数
Global
Log
Market
Trade
Account
Futures
Exchange
IO
Network
Storage
Threads
exchange.Go
EventLoop
ctx.subscribe
ctx.poll
ctx.order
ctx.cancel
ctx.orderAsync
ctx.cancelAsync
Subscription
threading
Thread
ThreadLock
ThreadEvent
ThreadCondition
ThreadDict
Server
TA
Talib
OS
结构体
内置变量与常量
通用约定
交易所

撤销一个订单,收到交易所确认后返回。默认通过交易所的REST接口撤单;选项via为ws时,通过交易所的WebSocket交易接口撤单。主线程和threading.Thread()创建的线程均可调用。不等待撤单结果的版本为ctx.cancelAsync。

ctx.cancel(ex, symbol, id)
ctx.cancel(ex, symbol, id, options)

示例

通过WebSocket撤销一个订单;无法撤销(例如订单已成交)时输出失败原因。

javascript
function main() { var t = exchange.GetTicker("BTC_USDT") if (!t) { return } var id = ctx.order(exchange, "BTC_USDT", "buy", _N(t.Buy * 0.98, 2), 0.001, {via: "ws"}) if (id instanceof Error) { Log("order failed:", id.message) return } var r = ctx.cancel(exchange, "BTC_USDT", id, {via: "ws", timeout: 3000}) if (r instanceof Error) { Log("cancel failed:", r.message) } else { Log("canceled:", id) } }
python
def main(): t = exchange.GetTicker("BTC_USDT") if not t: return oid = ctx.order(exchange, "BTC_USDT", "buy", _N(t["Buy"] * 0.98, 2), 0.001, {"via": "ws"}) if isinstance(oid, CtxError): Log("order failed:", oid) return r = ctx.cancel(exchange, "BTC_USDT", oid, {"via": "ws", "timeout": 3000}) if isinstance(r, CtxError): Log("cancel failed:", r) else: Log("canceled:", oid)
rust
fn main() { let Ok(t) = exchange.GetTicker("BTC_USDT") else { return }; let px = _N(t.Buy * 0.98, 2); let id = match ctx::order(exchange, "BTC_USDT", "buy", px, 0.001, r#"{"via":"ws"}"#) { Ok(id) => id, Err(e) => { Log!("order failed:", e); return; } }; match ctx::cancel_with(exchange, "BTC_USDT", &id, r#"{"via":"ws","timeout":3000}"#) { Ok(()) => Log!("canceled:", id), Err(e) => Log!("cancel failed:", e), } }

返回值

类型描述

undefined / object

撤单成功时无返回值;撤单失败时不抛出异常,而是返回Error对象,其message属性为失败原因。

参数

名称类型必填描述

ex

object / number

是

订单所属的账户:可以是交易所对象,也可以是该账户在exchanges数组中的索引,与ctx.order相同。

symbol

string

是

订单的交易品种代码,例如BTC_USDT、BTC_USDT.swap。

id

string

是

要撤销的订单ID,即ctx.order的返回值,或订单回报中的id。

options

object

否

撤单选项{via, timeout}:via指定撤单通道,取值为rest(默认)或ws;timeout为等待交易所响应的超时时间,单位为毫秒(不传或传0时使用默认值)。不支持其他字段。

参考

备注

若订单已先行成交或进入其他终态而无法撤销,同样视为撤单失败,返回带有失败原因的Error对象。网络故障、鉴权失败或交易所未明确确认撤单时,也会返回错误。

via为ws时的规则与ctx.order相同:仅支持WebSocket下单的交易所可以使用;交易所不支持时直接返回错误,不会自动切换到REST接口。若在请求发出前交易连接不可用,则自动改用REST接口撤单。

Python中的签名为ctx.cancel(ex, symbol, id, opts=None),成功时返回None,失败时返回CtxError对象(不抛出异常)。Rust中的签名为ctx::cancel(ex, symbol: &str, id: &str) -> Result<(), String>,带选项时使用ctx::cancel_with(ex, symbol, id, opts_json: &str),选项以JSON字符串传入,例如r#"{"via":"ws"}"#。