ctx.cancel
撤销一个订单,收到交易所确认后返回。默认通过交易所的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 | 撤单成功时无返回值;撤单失败时不抛出异常,而是返回 |
参数
| 名称 | 类型 | 必填 | 描述 |
ex | object / number | 是 | 订单所属的账户:可以是交易所对象,也可以是该账户在 |
symbol | string | 是 | 订单的交易品种代码,例如 |
id | string | 是 | 要撤销的订单ID,即 |
options | object | 否 | 撤单选项 |
参考
备注
若订单已先行成交或进入其他终态而无法撤销,同样视为撤单失败,返回带有失败原因的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"}"#。