Place Order
Place Order TradeOrderRequest
Description
API for trading. Please refer to the demonstration below for how to set the asset to trade, order types, quantity, etc. **Please read the Introduction section of this documentation, as well as FAQ-Trade-Supported Order Typessection,to make sure that the order types involved in your program are actually allowed ** If this method returns an error, or that your order gets canceled by the system, it is recommended that you refer to FAQ-Trade section for a quick inspection yourself.
- Market Order(MKT)and Stop Order(STP)do not support pre-market and post-market transactions. When placing the order, you need to set 'outside_rth' to false
- For the symbol that can be shorted, the lock-up function is not currently supported, so it is impossible to hold long and short positions of the same symbol at the same time
- Attached Order currently only supports limit orders
- The limit price does not match the tick size, you can use the 'StockPriceUtils' tool class to judge whether it matches, and fix the price to meet the tick size requirements
- Market Order(MKT) and the paper trade account,GTC is not supported for 'time_in_force' parameter
- The paper trade account currently does not support warrants and CBBC orders
Order Status Explanation
- How can I determine the partial fulfillment status of my Prime or Paper accounts?
When the order status is not Initial and Filled (it may be one of PendingSubmit, Cancelled, Invalid, Inactive), it may be partially filled status, which can be judged by whether the number of orders filled is greater than 0.
- How to determine the status of partial transaction of Global Account?
The order status is Filled, and the number of transactions is greater than 0.
Order Status Flow
Other Information
- Trading of ETF options that expire on Wednesdays and are based on the underlying assets of the three ETFs, namely 【IWM/SPY/QQQ】, is supported. Other index options that do not expire on Fridays are not supported.
- Directly opening a reverse position is not allowed. For example, selling 200 shares when holding 100 shares is not permitted. The position must be closed first.
Argument
Common attributes:
Parameter | Type | Description | Market Order | Limit Order | Stop Order | Stop Limit Order | Trailing Stop Order |
---|---|---|---|---|---|---|---|
account | str | User authorization account: 402901 | |||||
order_id | int | The order number, which is used to prevent repeated orders. It can be obtained through the order number interface. If you pass 0, the server will automatically generate an order number. When you pass 0, you cannot prevent repeated orders. Please choose carefully | optional | optional | optional | optional | optional |
symbol | str | Stock code such as: AAPL; (when sec_typ is warrant CBBC, the 5 digits below the name in the app warrant/CBBC list) | |||||
sec_type | str | contract type (STK stock; OPT US stock option; WAR Hong Kong stock warrant; IOPT Hong Kong stock CBBC; FUT futures; FUND funds) | |||||
action | str | trading direction BUY/SELL | |||||
order_type | str | order type. MKT (market order), LMT (limit order), STP (stop loss order), STP_LMT (stop loss limit order), TRAIL (trailing stop loss order) | MKT | LMT | STP | STP_LMT | TRAIL |
total_quantity | long | Order quantity (Hong Kong stocks, Shanghai-Hong Kong Stock Connect, warrants, CBBCs have a minimum quantity limit) | |||||
total_quantity_scale | int | The offset of the order quantity, default is 0. The combination of 'total_quantity' and 'total_quantity_scale' of odd lot orders represents the actual order quantity. For example, total_quantity=111 total_quantity_scale=2, then the real quantity=111*10^(-2)=1.11 | optional | optional | optional | optional | optional |
cash_amount | Double | Order cash amount (Fund) | optional | ||||
limit_price | float | limit price, this parameter is required when order_type is LMT, STP_LMT | |||||
aux_price | float | Stock order stop loss trigger price. The meaning is the price difference, and it is covered by trailing_percent when it exists with trailing_percent. When the order_type is STP, STP_LMT, this parameter is required; when the order_type is TRAIL, it is the tracking amount | Optional | ||||
trailing_percent | float | Trailing stop order - stop loss percentage. When the order_type is TRAIL, aux_price and trailing_percent are mutually exclusive, and trailing_percent is used preferentially | optional | ||||
outside_rth | boolean | true: Allow pre-market and after-hours trading (exclusive to US stocks), false: Not allowed, the default is allowed. (Market order, stop loss order, and trailing stop order are only valid in the intraday, and the outside_rth parameter will be ignored) | optional | optional | optional | ||
trading_session_type | TradeSession | OverNight: overnight order in the US market(LMT only) | optional | optional | |||
adjust_limit | float | Price fine-tuning range (default is 0 means no adjustment, positive number means upward adjustment, negative number means downward adjustment), and the incoming price is automatically adjusted to the legal price. For example: 0.001 is an upward adjustment of up to 0.1%; -0.001 is a downward adjustment of up to 0.1%. Default 0 means no adjustment | optional | optional | optional | optional | |
market | str | market (US stocks US Hong Kong stocks HK Shanghai-Hong Kong Stock Connect CN) | optional | optional | optional | optional | optional |
currency | str | currency (US stocks USD Hong Kong stocks HKD Shanghai-Hong Kong Stock Connect CNH) | optional | optional | optional | optional | optional |
time_in_force | str | The validity period of the order can only be DAY (valid on the current day), GTC (valid before cancellation, the longest valid time is 180 days), GTD (valid before the specified time), the default is DAY | optional | optional | optional | optional | optional |
expire_time | long | The valid deadline of the order,13-bit timestamp, accurate to the second (required when time_in_force is GTD, invalid for other types) | Optional | Optional | optional | ||
exchange | str | Exchange (US Stocks SMART Hong Kong Stocks SEHK Shanghai-Hong Kong Stock Connect SEHKNTL Shenzhen-Hong Kong Stock Connect SEHKSZSE) No | optional | optional | optional | optional | optional |
expiry | str | expiry date (option, warrant, CBBC exclusive) | optional | optional | optional | optional | optional |
strike | str | underlying price (option, warrant, CBBC exclusive) | optional | optional | optional | optional | optional |
right | str | option direction PUT/CALL (option, warrant, CBBC exclusive) | optional | optional | optional | optional | optional |
multiplier | float | 1 lot unit (option, warrant, CBBC exclusive) | optional | optional | optional | optional | optional |
local_symbol | str | Warrant CBBC This field is required, the 5 digits below the name in the app warrant/CBBC list | optional | optional | optional | optional | optional |
secret_key | str | Dedicated to institutional users, trader key | optional | optional | optional | optional | optional |
user_mark | str | order note information, cannot be modified after order is placed, userMark information will be returned when querying an order | optional | optional | optional | optional | optional |
- attached order parameter
- Attached Order (Attached Order) refers to an order that can have a take-profit or stop-loss effect on the main order through an attached sub-order. Stop loss order (can be used to stop loss). Additional orders can be achieved by adding the following parameters
Parameter | Type | Description | Additional Stop Loss | Additional Take Profit | Additional Trailing Stop | Additional Parentheses |
---|---|---|---|---|---|---|
attach_type | str | Attachment order type, required when attaching an order. (order_type should be LMT): PROFIT-take-profit order, LOSS-stop-loss order, BRACKETS-bracket order (including take-profit order and stop-loss order) | ||||
profit_taker_order_id | int | Take profit order ID, which can be obtained through the order ID interface. If 0 is passed, the server will automatically generate a take profit order number | optional | optional | optional | |
profit_taker_price | float | Take profit order price, required when placing a take profit order | ||||
profit_taker_tif | str | Same as the time_in_force field, the order validity period can only be DAY (valid on the day) and GTC (valid before cancellation), required when placing a take profit order | ||||
profit_taker_rth | boolean | Same as outside_rth field | ||||
stop_loss_order_id | int | Stop loss order ID, which can be obtained through the order ID interface. If 0 is passed, the server will automatically generate a stop loss order number | ||||
stop_loss_price | float | Stop loss order price (stop loss order trigger price), required when placing a stop loss order | ||||
stop_loss_limit_price | float | Execution limit price of stop loss order (only valid for integrated account temporarily). If the limit price of the stop loss order is not filled in, it is an additional stop loss market order; when filled in, it is an additional stop loss limit order. When the main order transaction direction is BUY, it needs to meet stop_loss_price > stop_loss_limit_price, otherwise the main order transaction direction is SELL. stop_loss_price < stop_loss_limit_price | optional | optional | ||
stop_loss_tif | str | Same as the time_in_force field, the order validity period can only be DAY (valid on the day) and GTC (valid before cancellation), required when placing a stop loss order | ||||
stop_loss_trailing_percent | float | Trailing stop loss order-stop loss percentage, when trailing stop loss order, one of the stop loss percentage (stopLossTrailingPercent) and stop loss amount (stopLossTrailingAmount) must be filled in, if both are filled, the stop loss percentage will be used as the parameter. | optional | optional | ||
stop_loss_trailing_amount | float | Trailing stop loss order-stop loss amount, when trailing stop loss order, one of stop loss percentage (stopLossTrailingPercent) and stop loss amount (stopLossTrailingAmount) must be filled in, if both are filled, the stop loss percentage will be used as parameter. | optional | optional |
- TWAP/VWAP order parameter
TWAP/VWAP order, only supports US stocks, and can only place orders in the market, does not support pre-orders
Parameter | Type | Algorithm parameters | Description | TWAP | VWAP |
---|---|---|---|---|---|
order_type | string | order type, TWAP/VWAP | |||
account | string | account id | |||
symbol | string | Stock code such as: AAPL | |||
sec_type | string | only supports STK | |||
total_quantity | boolean | Order quantity | |||
algo_params | List<TagValue> | algorithm parameters | optional | optional | |
- | long | start_time | Time when order can start trading (time stamp) | optional | optional |
- | long | end_time | Time when order can end trading(time stamp) | optional | optional |
- | string | participation_rate | Maximum participation rate (volume is the maximum ratio of daily average volume, 0.01-0.5) | optional |
Response
Name | Type | Description |
---|---|---|
id | long | order id, this id is used to identify an order on the server |
subIds | List<Long> | When there is an additional order, return to the list of sub-order ID |
orders | List<TradeOrder> | order details |
Construct Contract Object
// US stocks
ContractItem contract = ContractItem.buildStockContract("SPY", "USD");
// HK stocks
ContractItem contract = ContractItem.buildStockContract("00700", "HKD");
// Warrant(Attention: for the same symbol, global account and prime account may return different expiration datas)
ContractItem contract = ContractItem.buildWarrantContract("13745", "20211217", 719.38D, Right.CALL.name());
// CBBC
ContractItem contract = ContractItem.buildCbbcContract("50296", "20220331", 457D, Right.CALL.name());
// U.S Options
ContractItem contract = ContractItem.buildOptionContract("AAPL 190118P00160000");
ContractItem contract = ContractItem.buildOptionContract("AAPL", "20211119", 150.0D, "CALL");
// Futures
// Global Account
ContractItem contract = ContractItem.buildFutureContract("CL", "USD", "SGX", "20190328", 1.0D);
// Prime Account
ContractItem contract = ContractItem.buildFutureContract("CL2112", "USD");
Market Order(MKT)
// get contract(use default account)
ContractRequest contractRequest = ContractRequest.newRequest(
new ContractModel("AAPL"));
ContractResponse contractResponse = client.execute(contractRequest);
ContractItem contract = contractResponse.getItem();
// market order(use default account)
TradeOrderRequest request = TradeOrderRequest.buildMarketOrder(contract, ActionType.BUY, 10);
TradeOrderResponse response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
// get contract(use account parameter)
ContractRequest contractRequest = ContractRequest.newRequest(
new ContractModel("AAPL"), "402901");
ContractResponse contractResponse = client.execute(contractRequest);
ContractItem contract = contractResponse.getItem();
// market order(use account parameter)
request = TradeOrderRequest.buildMarketOrder("402901", contract, ActionType.BUY, 10);
response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
Limit Order(LMT)
// use default account
TradeOrderRequest request = TradeOrderRequest.buildLimitOrder(
contract, ActionType.BUY, 1, 100.0d);
TradeOrderResponse response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
// use account parameter
request = TradeOrderRequest.buildLimitOrder(
"402901", contract, ActionType.BUY, 1, 100.0d);
// set user_mark
request.setUserMark("test001");
// set GTD order's expire_time
request.setTimeInForce(TimeInForce.GTD);
request.setExpireTime(1669363583804L);
response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
// place overnight order in the US market
request = TradeOrderRequest.buildLimitOrder("402901", contract, ActionType.BUY, 1, 100.0d);
// set overnight order
request.setTradingSessionType(TradeSession.OverNight);
response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
Auction Order(AM/AL)
// auction order in hk market
TradeOrderRequest request = TradeOrderRequest.buildLimitOrder("402901", contract, ActionType.BUY, 100, 100.0d);
// pre-mardet auciton order: AM or AL + OPG(If there is no transaction, continue to participate in intraday trading); after-hours auction order: AM or AL + DAY
// participate in the pre-market auction, set auction limit order
request.setAuctionOrder(OrderType.AL, TimeInForce.OPG);
response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
request = TradeOrderRequest.buildMarketOrder("402901", contract, ActionType.BUY, 100);
// Participate in the after-hours auction, set auction market order
request.setAuctionOrder(OrderType.AM, TimeInForce.OPG);
response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
Stop Order(STP)
// use default account
TradeOrderRequest request = TradeOrderRequest.buildStopOrder(
contract, ActionType.BUY, 1, 120.0d);
TradeOrderResponse response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
// use account parameter
request = TradeOrderRequest.buildStopOrder(
"402901", contract, ActionType.BUY, 1, 120.0d);
response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
Stop-Limit Orders (STP_LMT)
// use default account
TradeOrderRequest request = TradeOrderRequest.buildStopLimitOrder(
contract, ActionType.BUY, 1,
150d,130.0d);
TradeOrderResponse response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
// use account parameter
request = TradeOrderRequest.buildStopLimitOrder(
"402901", contract, ActionType.BUY, 1,
150d,130.0d);
response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
Trailing-stop Order (TRAIL)
// use default account
TradeOrderRequest request = TradeOrderRequest.buildTrailOrder(
contract, ActionType.BUY, 1,
10d,130.0d);
TradeOrderResponse response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
// use account parameter. standard account currently not supported
request = TradeOrderRequest.buildTrailOrder(
"402901", contract, ActionType.BUY, 1,
10d,130.0d);
response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
Main Order+Attached Take Profit Order
// use default account
TradeOrderRequest request = TradeOrderRequest.buildLimitOrder(
contract, ActionType.BUY, 1, 199d);
TradeOrderRequest.addProfitTakerOrder(request, 250D, TimeInForce.DAY, Boolean.FALSE);
TradeOrderResponse response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
// use account parameter
request = TradeOrderRequest.buildLimitOrder(
"402901", contract, ActionType.BUY, 1, 199d);
TradeOrderRequest.addProfitTakerOrder(request, 250D, TimeInForce.DAY, Boolean.FALSE);
response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
Main Order+Attached Stop Order
// use default account
TradeOrderRequest request = TradeOrderRequest.buildLimitOrder(
contract, ActionType.BUY, 1, 129d);
TradeOrderRequest.addStopLossOrder(request, 100D, TimeInForce.DAY);
TradeOrderResponse response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
// use account parameter
request = TradeOrderRequest.buildLimitOrder(
"402901", contract, ActionType.BUY, 1, 129d);
// attach a stop order, the stop price is the activation price (not available to options)
TradeOrderRequest.addStopLossOrder(request, 100D, TimeInForce.DAY);
response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
// For options, please use stop limit order
ContractItem optionContract = ContractItem.buildOptionContract("AAPL",
"20211231", 175.0D, "CALL");
request = TradeOrderRequest.buildLimitOrder(
"402901", optionContract, ActionType.BUY, 1, 2.0d);
// attach a stop limit order, the first price-1.7 is the activation price, the second price-1.69 is the limit price (Only available for prime account)
TradeOrderRequest.addStopLossLimitOrder(request, 1.7D, 1.69D, TimeInForce.DAY);
response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
Main Order+Attached Stop Trail Order
ContractItem contract = ContractItem.buildStockContract("AAPL", "USD");
// use default account
TradeOrderRequest request = TradeOrderRequest.buildLimitOrder(
contract, ActionType.BUY, 1, 165D).setLang(Language.en_US);
TradeOrderRequest.addStopLossTrailOrder(request, 10.0D, null, TimeInForce.DAY);
TradeOrderResponse response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
// use account parameter
request = TradeOrderRequest.buildLimitOrder(
"402901", contract, ActionType.BUY, 1, 165D);
TradeOrderRequest.addStopLossTrailOrder(request, 10.0D, null, TimeInForce.DAY);
response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
Main Order+Attached bracket Order
// use default account
TradeOrderRequest request = TradeOrderRequest.buildLimitOrder(
contract, ActionType.BUY, 1, 199d);
TradeOrderRequest.addBracketsOrder(request, 250D, TimeInForce.DAY, Boolean.FALSE,
180D, TimeInForce.GTC);
TradeOrderResponse response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
// use account parameter
request = TradeOrderRequest.buildLimitOrder(
"13810712", contract, ActionType.BUY, 1, 199d);
TradeOrderRequest.addBracketsOrder(request, 250D, TimeInForce.DAY, Boolean.FALSE,
180D, TimeInForce.GTC);
response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
Forex Order
ForexTradeOrderRequest request = ForexTradeOrderRequest.buildRequest("402901",
SegmentType.SEC, Currency.HKD, 1000D, Currency.USD);
ForexTradeOrderResponse response = client.execute(request);
if (response.isSuccess()) {
System.out.println(JSONObject.toJSONString(response));
} else {
System.out.println(response.getMessage());
}
Fund Amount Order
ContractItem contract = ContractItem.buildFundContract("IE00B464Q616.USD", "USD");
TradeOrderRequest request = TradeOrderRequest.buildAmountOrder(
"13810712", contract, ActionType.BUY, 100.0D);
request.setUserMark("test-amount-order");
TradeOrderResponse response = client.execute(request);
if (response.isSuccess()) {
System.out.println(JSONObject.toJSONString(response));
} else {
System.out.println(response.getMessage());
}
TWAP/VWAP Order
Only supports U.S. stocks, and only supports intraday orders
// TWAP order
TradeOrderRequest twapRequest = TradeOrderRequest.buildTWAPOrder(
"572386", "DM", ActionType.BUY, 500,
DateUtils.getTimestamp("2023-06-20 09:30:00", TimeZoneId.NewYork),
DateUtils.getTimestamp("2023-06-20 11:00:00", TimeZoneId.NewYork),
1.5D)
.setUserMark("testTWAP001")
.setLang(Language.en_US);
TradeOrderResponse twapResponse = client.execute(twapRequest);
if (twapResponse.isSuccess()) {
System.out.println(JSONObject.toJSONString(twapResponse));
} else {
System.out.println(twapResponse.getMessage());
}
// VWAP order
TradeOrderRequest vwapRequest = TradeOrderRequest.buildVWAPOrder(
"572386", "DM", ActionType.BUY, 500,
DateUtils.getTimestamp("2023-06-20 09:30:00", TimeZoneId.NewYork),
DateUtils.getTimestamp("2023-06-20 11:00:00", TimeZoneId.NewYork),
0.5D, 1.5D)
.setUserMark("testVWAP001")
.setLang(Language.en_US);
TradeOrderResponse vwapResponse = client.execute(vwapRequest);
if (vwapResponse.isSuccess()) {
System.out.println(JSONObject.toJSONString(vwapResponse));
} else {
System.out.println(vwapResponse.getMessage());
}
Options Multi Legs Order
Only supports intraday orders
List<ContractLeg> contractLegs = new ArrayList<>();
ContractLeg leg1 = new ContractLeg(SecType.OPT, "AAPL",
"170.0", "20231013", Right.CALL,
ActionType.BUY, 1);
contractLegs.add(leg1);
ContractLeg leg2 = new ContractLeg(SecType.OPT, "AAPL",
"170.0", "20231013", Right.PUT,
ActionType.BUY, 1);
contractLegs.add(leg2);
TradeOrderRequest request = TradeOrderRequest.buildMultiLegOrder(
"572386", contractLegs, ComboType.CUSTOM,
ActionType.BUY, 3,
OrderType.LMT, 2.01d, null, null)
.setLang(Language.en_US)
.setUserMark("test_multi_leg");
TradeOrderResponse response = client.execute(request);
if (response.isSuccess()) {
System.out.println(JSONObject.toJSONString(response));
} else {
System.out.println(response.getMessage());
}
OCA Bracket Order
The two orders in the OCA order group have the same symbol, one is a take-profit limit order, and the other is a stop-loss order or stop-loss limit order. When one of the orders is completed, the other order is automatically canceled. Placing an order returns two order objects. If the 'ocaGroupId' in the order is the same, it is a combination. Paper Account is not supported.
ContractItem contract = ContractItem.buildStockContract("BILI", "USD");
TradeOrderRequest request = TradeOrderRequest.buildOCABracketsOrder(
"13810712", contract, ActionType.SELL, 1,
17.0D, TimeInForce.DAY, Boolean.TRUE,
12.0D, null, TimeInForce.DAY, Boolean.FALSE);
request.setLang(Language.en_US).setUserMark("test-oca");
TradeOrderResponse response = client.execute(request);
if (response.isSuccess()) {
System.out.println(JSONObject.toJSONString(response));
// get oca order info
List<TradeOrder> ocaOrders = response.getItem().getOrders();
} else {
System.out.println(response.getMessage());
}
Response Example Additional brackets order
{
"id":30325712346546176,
"orderId":0,
"subIds":[
30325712346546177,
30325712346677250
],
"orders":[
{
"account":"13810712",
"action":"BUY",
"algoStrategy":"LMT",
"attrDesc":"",
"avgFillPrice":0,
"canCancel":true,
"canModify":true,
"commission":0,
"currency":"HKD",
"discount":0,
"filledQuantity":0,
"id":30325712346546176,
"identifier":"00700",
"latestPrice":385.8,
"latestTime":1680266023000,
"limitPrice":295,
"liquidation":false,
"market":"HK",
"name":"TENCENT",
"openTime":1680266023000,
"orderId":91,
"orderType":"LMT",
"outsideRth":true,
"realizedPnl":0,
"remark":"",
"secType":"STK",
"source":"OpenApi",
"status":"Initial",
"symbol":"00700",
"timeInForce":"DAY",
"totalQuantity":100,
"updateTime":1680266023000,
"userMark":"test_bracket"
},
{
"account":"13810712",
"action":"SELL",
"algoStrategy":"LMT",
"attrDesc":"",
"avgFillPrice":0,
"canCancel":true,
"canModify":true,
"commission":0,
"currency":"HKD",
"discount":0,
"filledQuantity":0,
"id":30325712346546177,
"identifier":"00700",
"latestPrice":385.8,
"latestTime":1680266023000,
"limitPrice":320,
"liquidation":false,
"market":"HK",
"name":"TENCENT",
"ocaGroupId":87055,
"openTime":1680266023000,
"orderId":92,
"orderType":"LMT",
"outsideRth":true,
"parentId":30325712346546176,
"realizedPnl":0,
"remark":"",
"secType":"STK",
"source":"OpenApi",
"status":"Initial",
"symbol":"00700",
"timeInForce":"DAY",
"totalQuantity":100,
"updateTime":1680266023000,
"userMark":"test_bracket"
},
{
"account":"13810712",
"action":"SELL",
"algoStrategy":"STP_LMT",
"attrDesc":"",
"auxPrice":280,
"avgFillPrice":0,
"canCancel":true,
"canModify":true,
"commission":0,
"currency":"HKD",
"discount":0,
"filledQuantity":0,
"id":30325712346677248,
"identifier":"00700",
"latestPrice":385.8,
"latestTime":1680266023000,
"limitPrice":278,
"liquidation":false,
"market":"HK",
"name":"TENCENT",
"ocaGroupId":87055,
"openTime":1680266023000,
"orderId":93,
"orderType":"STP_LMT",
"outsideRth":true,
"parentId":30325712346546176,
"realizedPnl":0,
"remark":"",
"secType":"STK",
"source":"OpenApi",
"status":"Initial",
"symbol":"00700",
"timeInForce":"DAY",
"totalQuantity":100,
"updateTime":1680266023000,
"userMark":"test_bracket"
}
]
}