取消或修改订单

cancel_order 取消订单

value TradeClient::cancel_order(unsigned long long id)

说明

取消一个未成交的订单

参数

参数名类型是否必填描述
idunsigned long longYes订单号,即 order.id

返回

web::json::value JSON 对象

示例

#include "tigerapi/trade_client.h"
#include "tigerapi/client_config.h"

using namespace TIGER_API;

ClientConfig config(false, U("/path/to/your/properties/"));
TradeClient trade_client(config);

// 取消指定订单
value result = trade_client.cancel_order(14275856193552384);
ucout << result.serialize() << std::endl;

modify_order 修改订单

说明

修改一个未成交的订单。提供两种重载方式:直接修改 Order 对象属性后提交,或通过参数指定修改内容。

方式一:修改 Order 对象后提交

value TradeClient::modify_order(Order &order)

参数名类型是否必填描述
orderOrder&Yes修改后的订单对象

方式二:通过参数指定修改内容

value TradeClient::modify_order(Order &order, double limit_price, long total_quantity, double aux_price, double trail_stop_price, double trailing_percent, double percent_offset, utility::string_t time_in_force, bool outside_rth, time_t expire_time)

参数名类型是否必填描述
orderOrder&Yes原始订单对象
limit_pricedoubleNo新限价,默认 0(不修改)
total_quantitylongNo新数量,默认 0(不修改)
aux_pricedoubleNo新止损触发价,默认 0(不修改)
trail_stop_pricedoubleNo新跟踪止损价,默认 0
trailing_percentdoubleNo新跟踪百分比,默认 0
percent_offsetdoubleNo百分比偏移,默认 0
time_in_forceutility::string_tNo订单有效期,默认空
outside_rthboolNo是否允许盘前盘后,默认 false
expire_timetime_tNo过期时间,默认 0

可修改字段

字段名描述
total_quantity订单总数量
limit_price限价
aux_price止损触发价
trailing_percent跟踪止损百分比
time_in_force订单有效期
outside_rth是否允许盘前盘后交易

返回

web::json::value JSON 对象

示例

#include "tigerapi/trade_client.h"
#include "tigerapi/client_config.h"
#include "tigerapi/contract_util.h"
#include "tigerapi/order_util.h"

using namespace TIGER_API;

ClientConfig config(false, U("/path/to/your/properties/"));
TradeClient trade_client(config);

// 先下单
Contract contract = ContractUtil::stock_contract(U("AAPL"), U("USD"));
Order order = OrderUtil::limit_order(config.account, contract, U("BUY"), 100, 150.0);
trade_client.place_order(order);

// 方式一:直接修改 Order 对象属性
order.limit_price = 155.0;
order.total_quantity = 200;
value result = trade_client.modify_order(order);
ucout << result.serialize() << std::endl;

// 方式二:通过参数修改
value result2 = trade_client.modify_order(order, 160.0, 300);
ucout << result2.serialize() << std::endl;

完整示例:下单、查询、修改、取消

#include "tigerapi/trade_client.h"
#include "tigerapi/client_config.h"
#include "tigerapi/contract_util.h"
#include "tigerapi/order_util.h"

using namespace TIGER_API;

int main() {
    ClientConfig config(false, U("/path/to/your/properties/"));
    TradeClient trade_client(config);

    // 1. 构建合约
    Contract contract = ContractUtil::stock_contract(U("AAPL"), U("USD"));

    // 2. 下限价单
    Order order = OrderUtil::limit_order(config.account, contract, U("BUY"), 100, 150.0);
    trade_client.place_order(order);
    std::cout << "Order placed, ID: " << order.id << std::endl;

    // 3. 查询订单状态(返回 Order 对象)
    Order order_info = trade_client.get_order(order.id);
    ucout << U("Order status: ") << order_info.status << std::endl;

    // 4. 修改订单
    order.limit_price = 155.0;
    trade_client.modify_order(order);
    std::cout << "Order modified" << std::endl;

    // 5. 取消订单
    trade_client.cancel_order(order.id);
    std::cout << "Order cancelled" << std::endl;

    return 0;
}

What’s Next