取消或修改订单

取消订单

对应的请求类:TigerHttpRequest(MethodName.CANCEL_ORDER)

说明

撤销已下的订单。撤单同下单类似,为异步执行。成功响应的 data 中仅返回订单 ID,表示撤单请求已被接受,不表示订单已经撤销。请再次查询订单,同时检查订单 statuscancelStatus;最终结果应以两者共同反映的订单状态为准。
使用 TradeOrderRequest 提交订单后,被提交的订单会根据不同情况进入多种状态。已成交或被系统拒绝的订单无法被撤销,只有订单处于已提交或部分成交的状态,才可被撤销。请参考 TigerHttpRequest(MethodName.ORDERS) 方法的说明来了解可能出现的订单状态。

对于批量下单,可用 TigerHttpRequest(MethodName.ACTIVE_ORDERS) 取得待成交的订单列表,依次撤单。对于已经请求过撤单的订单,不要重复请求,可在撤单命令执行后,等待一段时间再次检查待成交的订单。

参数

参数类型是否必填描述
accountstringYes用户授权账户:DU000001
idlongYes订单号,下单时返回的 ID
secret_keystringNo交易员密钥,机构用户专用

返回

名称类型说明
idlong唯一单号,可用于查询订单/修改订单/取消订单

示例

TigerHttpClient client = TigerHttpClient.getInstance().clientConfig(
      ClientConfig.DEFAULT_CONFIG);
TigerHttpRequest request = new TigerHttpRequest(MethodName.CANCEL_ORDER);

String bizContent = TradeParamBuilder.instance()
    .account("DU000001")
    .id(100000000000000001L)
    .buildJson();

request.setBizContent(bizContent);
TigerHttpResponse response = client.execute(request);
JSONObject data = JSON.parseObject(response.getData());
Long id = data.getLong("id");

返回示例

{
  "code": 0,
  "message": null,
  "timestamp": 1525938835697,
  "data": {
      "id":100000000000000001
  }
}

请求频率

基础限流为 120 次/分钟


修改订单

对应的请求类:TigerHttpRequest(MethodName.MODIFY_ORDER)

说明

改单规则因账户类型和原订单类型而异:

  • Global 账户: 不适用“所有改单都必须显式提交至少一个变更字段”或“order_type 一定不能提交”的统一规则。可修改字段及省略行为取决于原订单类型;只提交该订单类型支持的字段。
  • Prime/Paper 账户: 系统按原订单类型处理改单,不能通过 order_type 将订单改成另一种类型。LMT、STP、STP_LMT 和 TRAIL 等订单须按原订单类型提供有效的数量、价格或跟踪参数;具体组合见下表。

零值与省略按账户路径处理:

账户路径total_quantity=0适用价格字段为 0order_typetime_in_force 省略
Global最终请求 order_type=LMT 时沿用原数量最终请求 order_type=LMT 时沿用原限价显式值保留;省略时复制原订单类型补全为 DAY
Prime/Paper不作为新数量下发LMT/STP/STP_LMT/TRAIL 对应价格不作为新值下发;多腿订单允许负价格服务端查询原订单并强制使用原订单类型补全为 DAY

Prime/Paper 普通订单请求必须至少包含一个对原订单类型有效的数量、价格或跟踪参数;冰山单可仅修改展示数量、检查间隔或 algo_params 中的生效时间,规则见下方说明。

参数

参数类型是否必填描述
accountstringYes用户授权账户:DU000001
idlongYes订单 id,下单时返回
order_typestringNoGlobal 账户是否需要及如何处理取决于原订单;Prime/Paper 按查询到的原订单类型处理,不能用此字段转换订单类型
total_quantitylongNo订单数量 (港股,沪港通,窝轮,牛熊证有最小数量限制)
total_quantity_scaleintNo下单数量的偏移量,默认为 0。碎股单的 total_quantity 和 total_quantity_scale 结合起来代表真实下单数量,如 total_quantity=111 total_quantity_scale=2,那么,真实 quantity=111*10^(-2)=1.11
limit_pricedoubleNo新限价,适用于原订单为 LMT 或 STP_LMT 的普通订单;是否必须与 total_quantity 等字段组合取决于账户和原订单类型。Prime/Paper 冰山单不支持修改此字段
aux_pricedoubleNo新止损价,适用于原订单为 STP 或 STP_LMT;原订单为 TRAIL 时表示跟踪差额。是否必须与其他字段组合取决于账户和原订单类型
trailing_percentdoubleNo原订单为 TRAIL 时,可提供 aux_pricetrailing_percent;同时提供时优先使用 trailing_percent
cash_amountdoubleNo改单不支持修改订单金额。Prime/Paper 请求传入该字段会被拒绝;Global 账户也不应将其作为可修改字段提交
display_sizeintNo仅用于 Prime/Paper 冰山单改单,表示每次展示数量
min_display_sizeintNo仅用于 Prime/Paper 冰山单改单,表示最小展示数量
check_intervalsintNo仅用于 Prime/Paper 冰山单改单,表示价格检查间隔(秒)
price_typestringNoPrime/Paper 冰山单改单当前不支持修改该字段
start_timelongNo顶层字段不用于冰山单改单。Prime/Paper 冰山单须通过 algo_params 传入 start_time,Unix 毫秒时间戳
end_timelongNo顶层字段不用于冰山单改单。Prime/Paper 冰山单须通过 algo_params 传入 end_time,Unix 毫秒时间戳
algo_paramsList<TagValue>NoPrime/Paper 冰山单修改生效时间时,在此列表中传入 start_time 和/或 end_time
secret_keystringNo交易员密钥,机构用户专用
📝

Prime/Paper 冰山单改单: 支持修改 total_quantitydisplay_sizemin_display_sizecheck_intervals,以及通过 algo_params 传入的 start_timeend_time。不支持修改 limit_priceprice_type。顶层 start_timeend_time 字段不用于冰山单改单。Global 账户不在此支持范围内。

TradeParamBuilder 没有 display_sizemin_display_sizecheck_intervalsprice_typestart_timeend_time 的便捷方法。algo_params 可通过 TradeParamBuilder.algoParams(...) 设置;冰山单生效时间须放在其中。当前构建器没有展示类字段的对应改单方法。

如需修改展示类字段,请手动构造 biz_content JSON,并通过 TigerHttpRequest.setBizContent(...) 提交;不要将这些字段放入 algo_params

JSONObject params = new JSONObject();
params.put("account", "DU000001");
params.put("id", 100000000000000001L);
params.put("display_size", 100);
params.put("min_display_size", 50);
params.put("check_intervals", 30);

TigerHttpRequest request = new TigerHttpRequest(MethodName.MODIFY_ORDER);
request.setBizContent(params.toJSONString());

返回

名称类型说明
idlong唯一单号,可用于查询订单/修改订单/取消订单

成功响应的 data 中仅返回订单 ID,不报告最终改单状态。请再次查询订单,同时检查 statusreplaceStatusreplaceStatus=REPLACED 表示改单已确认成功,replaceStatus=FAILED 表示改单失败;其他中间状态仍需继续查询,并结合订单 status 判断。

示例

TigerHttpClient client = TigerHttpClient.getInstance().clientConfig(
      ClientConfig.DEFAULT_CONFIG);
TigerHttpRequest request = new TigerHttpRequest(MethodName.MODIFY_ORDER);

// 假设该 ID 对应一个仍可修改的 LMT 或 STP_LMT 订单。
String bizContent = TradeParamBuilder.instance()
    .account("DU000001")
    .id(100000000000000001L)
    .totalQuantity(200L)
    .limitPrice(60.0)
    .buildJson();

request.setBizContent(bizContent);
TigerHttpResponse response = client.execute(request);
JSONObject data = JSON.parseObject(response.getData());
Long id = data.getLong("id");

返回示例

{
  "code": 0,
  "message": null,
  "timestamp": 1525938835697,
  "data": {
      "id":100000000000000001
  }
}

请求频率

基础限流为 120 次/分钟


Did this page help you?