取消或修改订单

大约 3 分钟

cancel_order 取消订单

value cancel_order(long id);

说明

撤销已下的订单。撤单同下单类似,为异步执行,调用本命令后表示撤单请求发送成功,撤单的执行会异步处理 使用 TradeClient.place_order 提交订单后,被提交的订单会根据不同情况进入多种状态。已成交或被系统拒绝的订单无法被撤销,只有订单处于已提交或部分成交的状态,才可被撤销。请参考 TradeClient.get_order 方法的说明来了解可能出现的订单状态。

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

参数

参数名类型是否必填描述
accountstrNo账户id,若不填则使用 client_config 中的默认 account
idintYes全局订单id,取消订单操作建议使用id字段,在 place_order 之后,可以通过 Order.id 获取
order_idintNo本地订单order_id, 可以通过 Order.order_id 获取
secret_keystrNo机构交易员密钥,机构用户专有,机构用户必填,需要在client_config中配置

示例

modify_order 修改订单

value modify_order(Order &order, double limit_price=0, long total_quantity=0,  double aux_price=0,
                   double trail_stop_price=0, double trailing_percent=0, double percent_offset=0,
                   string time_in_force="", bool outside_rth=false, long expire_time=0)

说明

修改已下订单,具体可修改的字段见下表

参数

参数名类型是否必填描述
orderOrderYes要修改的 Order 对象(tigeropen.trade.domain.order.Order)
quantityintNo修改后的下单股数
limit_pricefloatNo修改后的限价,当 order_type 为LMT,STP,STP_LMT时该参数必需
aux_pricefloatNo对于限价止损单,表示触发价, 对于移动止损单,表示价差。当 order_type 为STP,STP_LMT时该参数必需
trail_stop_pricefloatNo当 order_type 为 TRAIL 时必须,为触发止损单的价格
trailing_percentfloatNo跟踪止损单-百分比 ,当 order_type 为 TRAIL时,aux_price和trailing_percent两者互斥
time_in_forcestrNo订单有效期,只能是 'DAY'(当日有效)和'GTC'(取消前有效),默认为'DAY'
outside_rthboolNo是否允许盘前盘后交易(美股专属)
secret_keystrNo机构交易员密钥,机构用户专有,机构用户必填,需要在client_config中配置

示例

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

using namespace std;
using namespace web;
using namespace web::json;
using namespace TIGER_API;

/**
 * 调用交易接口
 */
class TestTradeClient {
public:
    static void test_modify_order(const std::shared_ptr<TradeClient>& trade_client) {
        Contract contract = stock_contract("AAPL", "USD");
        Order order = limit_order(contract, "BUY", 1, 100.0);
        long id = (long) trade_client->place_order(order)["id"].as_number().to_uint64();
        value res = trade_client->modify_order(order, 105);
        cout << "modify order res: " << res << endl;
        Order mod_order = trade_client->get_order(id);
        cout << "modified order: " << mod_order.to_string() << endl;
    }

    static void test_trade(const std::shared_ptr<TradeClient>& trade_client) {
        TestTradeClient::test_modify_order(trade_client);
    }
};

int main(int argc, char *args[]) {
    cout << "Tiger Api main" << endl;
    /************************** set config **********************/
    ClientConfig config = ClientConfig();

    config.private_key = "xxxxxx your private key string xxxxxxxx";
    config.tiger_id = "your tiger id";
    config.account = "your account";



    /**
     * 使用封装后的交易接口 TradeClient
     */
    std::shared_ptr<TradeClient> trade_client = std::make_shared<TradeClient>(config);
    TestTradeClient::test_trade(trade_client);


    return 0;
}
上次编辑于: