Place Order
Place Order
Request:TigerRequest(TradeApiService.PLACE_ORDER)
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
Argument | Type | Required | Descripton |
---|---|---|---|
account | string | Yes | Account id, example: 402901 |
order_id | int | No | Local order id. This order id is designed to prevent from placing replicate orders. if this argument is set to 0,the server will generate an order_id automatically. In this case it cannot prevent replicate orders from happening |
symbol | string | Yes | Ticker symbol or identifier, example: AAPL(or 5-digit identifier of CBBC/Warrent) |
sec_type | string | Yes | Security Type (STK stock; OPT US stock option; WAR Hong Kong stock warrant; IOPT Hong Kong stock CBBC; FUT futures; FUND funds) |
action | string | Yes | Order direction: BUY/SELL |
order_type | string | Yes | Order Types,'MKT'-Market Order / 'LMT'-Limit Order / 'STP'-Stop Order / 'STP_LMT'-Stop-Limit Order / 'TRAIL'-Trailing Stop Order |
total_quantity | long | No | Order's quantity (There is a minimum quantity requirement for HK market) |
total_quantity_scale | int | No | 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 |
cash_amount | Double | No | Order cash amount (Fund) |
limit_price | double | No | Limit price, required if placing a limit order (inluding STP and STP_LMT) |
aux_price | double | No | Auxilary price. it represents the stop price if placing a stop price, trailing price if placing a trailing stop order |
trailing_percent | double | No | Trailing activation price for trailing stop orders (by percentage). When the order type is TRAIL, 'aux_price' will be ignored when 'trailing_percent' already has a value |
outside_rth | boolean | No | if trade outside regular trading hours (only applicable to U.S. market). default allowed.(The market order is only valid during the intraday period, when 'order_type' is 'MKT'/'STP'/'TRAIL', the 'outside_rth' parameter will be ignored) |
trading_session_type | TradeSession | No | OverNight: overnight order in the US market(LMT only) |
market | string | No | Market (US, HK, CN, etc.) |
currency | string | No | Currency (USD, HKD, CNH, etc.) |
time_in_force | string | No | Time in force,'DAY'-valid until market close,'GTC'-Good-Till-Cancel(The longest valid time is 180 days), 'GTD'-good until expire time,'DAY' by default |
expire_time | long | No | The valid deadline of the order,13-bit timestamp, accurate to the second (required when time_in_force is GTD, invalid for other types) |
exchange | string | No | Exchange code (U.S stocks SMART, Shanghai-Hong Kong Stock Connect-SEHK, A-Shares-SEHKNTL,Shenzhen-Hong Kong Stock Connect SEHKSZSE) |
expiry | string | No | Expiration data for options, warrants and CBBC |
strike | string | No | Strike price for options, warrants and CBBC |
right | string | No | PUT/CALL for options, warrants and CBBC |
multiplier | float | No | multiplier for options, warrants and CBBC |
local_symbol | string | No | Required when trading CBBC, This is the 5-digit number under the Warrant/CBBC list in the TigerTrade APP |
secret_key | string | No | Secret key for the trader of institutions, please config in client_config, ignore if you are a indiviual user |
user_mark | string | No | Remarks of the order, which cannot be modified after the order is placed |
Parameters for Attached Order
Parameter | Type | Required | Description |
---|---|---|---|
attach_type | string | No | type of the attach order, required if placing an attach order(order_type has to be LMT): PROFIT-Take profit,LOSS-stop loss,BRACKETS-bracket orders |
profit_taker_orderId | int | No | Take profit order id, you can get this id via get order id API. If the value is set to 0, a new order id will be generated on the server end |
profit_taker_price | double | No | Take profit order price, required if placing a profit taker order. |
profit_taker_tif | string | No | Time in force, required when placing a profit taking order |
profit_taker_rth | boolean | No | see outside_rth |
stop_loss_orderId | int | No | stop loss order id, you can get this id via get order id API. If the value is set to 0, a new order id will be generated on the server end |
stop_loss_price | double | No | loss stop order's trigger price, required if placing a loss stop order. |
stop_loss_limit_price | double | No | loss stop order‘s limit price, required if placing a loss stop order. |
stop_loss_trailing_percent | double | No | Trailing activation price for trailing stop orders (by percentage) when 'stop_loss_order_type' is TRAIL. |
stop_loss_trailing_amount | double | No | Trailing activation price for trailing stop orders (by amount) when 'stop_loss_order_type' is TRAIL. |
stop_loss_tif | string | No | see time_in_force, required when placing a stop loss order |
- 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("AAPL", Currency.USD.ToString());
// HK stocks
ContractItem contract = ContractItem.BuildStockContract("00700", Currency.HKD.ToString());
// 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.ToString());
// CBBC
ContractItem contract = ContractItem.BuildCbbcContract("50296", "20220331", 457D, Right.CALL.ToString());
// 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)
static async Task<PlaceOrderResponse?> PlaceMarketOrderAsync(TradeClient tradeClient)
{
ContractItem contract = ContractItem.BuildStockContract("01810", Currency.HKD.ToString());
TigerRequest<PlaceOrderResponse> request = new TigerRequest<PlaceOrderResponse>()
{
ApiMethodName = TradeApiService.PLACE_ORDER,
ModelValue = PlaceOrderModel.BuildMarketOrder(
"20200821144442583", // tradeClient.GetDefaultAccount,
contract,
ActionType.BUY,
200
)
};
return await tradeClient.ExecuteAsync(request);
}
Limit Order(LMT)
static async Task<PlaceOrderResponse?> PlaceLimitOrderAsync(TradeClient tradeClient)
{
ContractItem contract = ContractItem.BuildStockContract("AAPL", Currency.USD.ToString());
TigerRequest<PlaceOrderResponse> request = new TigerRequest<PlaceOrderResponse>()
{
ApiMethodName = TradeApiService.PLACE_ORDER,
ModelValue = PlaceOrderModel.BuildLimitOrder(
"20200821144442583", // tradeClient.GetDefaultAccount,
contract,
ActionType.BUY,
1, 120.0
)
};
// set user_mark
((PlaceOrderModel)request.ModelValue).UserMark = "test-lmt";
// set GTD order's expire_time
((PlaceOrderModel)request.ModelValue).TimeInForce = TimeInForce.GTD;
((PlaceOrderModel)request.ModelValue).ExpireTime = DateUtil.ConvertTimestamp("2023-03-08 23:59:59", SymbolUtil.getZoneIdBySymbol("AAPL", tradeClient.GetConfigTimeZone));
return await tradeClient.ExecuteAsync(request);
}
// place overnight order in the US market
static async Task<PlaceOrderResponse?> PlaceOvernightLimitOrderAsync(TradeClient tradeClient)
{
ContractItem contract = ContractItem.BuildStockContract("AAPL", Currency.USD.ToString());
TigerRequest<PlaceOrderResponse> request = new TigerRequest<PlaceOrderResponse>()
{
ApiMethodName = TradeApiService.PLACE_ORDER,
ModelValue = PlaceOrderModel.BuildLimitOrder(
"402901", // tradeClient.GetDefaultAccount,
contract,
ActionType.BUY,
1, 120.0
)
};
// set place overnight order in the US market
((PlaceOrderModel)request.ModelValue).TradingSessionType = TradeSession.OverNight;
return await tradeClient.ExecuteAsync(request);
}
Auction Order(AM/AL)
static async Task<PlaceOrderResponse?> PlaceAuctionOrderAsync(TradeClient tradeClient)
{
ContractItem contract = ContractItem.BuildStockContract("00700", Currency.HKD.ToString());
TigerRequest<PlaceOrderResponse> request = new TigerRequest<PlaceOrderResponse>()
{
ApiMethodName = TradeApiService.PLACE_ORDER,
ModelValue = PlaceOrderModel.BuildAuctionOrder(
"20200821144442583", // tradeClient.GetDefaultAccount,
contract,
ActionType.BUY,
100,
350.0,
// 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
OrderType.AL, // AL(auction limit order) or AM(auction market order)
TimeInForce.OPG // participate in the pre-market auction
)
};
return await tradeClient.ExecuteAsync(request);
}
Stop Order(STP)
static async Task<PlaceOrderResponse?> PlaceStopOrderAsync(TradeClient tradeClient)
{
ContractItem contract = ContractItem.BuildStockContract("01810", Currency.HKD.ToString());
TigerRequest<PlaceOrderResponse> request = new TigerRequest<PlaceOrderResponse>()
{
ApiMethodName = TradeApiService.PLACE_ORDER,
ModelValue = PlaceOrderModel.BuildStopOrder(
"20200821144442583", // tradeClient.GetDefaultAccount,
contract,
ActionType.SELL,
200, 10.0
)
};
return await tradeClient.ExecuteAsync(request);
}
Stop-Limit Orders (STP_LMT)
static async Task<PlaceOrderResponse?> PlaceStopLimitOrderAsync(TradeClient tradeClient)
{
ContractItem contract = ContractItem.BuildStockContract("01810", Currency.HKD.ToString());
TigerRequest<PlaceOrderResponse> request = new TigerRequest<PlaceOrderResponse>()
{
ApiMethodName = TradeApiService.PLACE_ORDER,
ModelValue = PlaceOrderModel.BuildStopLimitOrder(
"20200821144442583", // tradeClient.GetDefaultAccount,
contract,
ActionType.SELL,
200, 10.0, 10.3
)
};
return await tradeClient.ExecuteAsync(request);
}
Trailing-stop Order (TRAIL)
static async Task<PlaceOrderResponse?> PlaceTrailOrderAsync(TradeClient tradeClient)
{
ContractItem contract = ContractItem.BuildStockContract("01810", Currency.HKD.ToString());
TigerRequest<PlaceOrderResponse> request = new TigerRequest<PlaceOrderResponse>()
{
ApiMethodName = TradeApiService.PLACE_ORDER,
ModelValue = PlaceOrderModel.BuildTrailOrder(
"20200821144442583", // tradeClient.GetDefaultAccount,
contract,
ActionType.SELL,
200, 10.0, 0 // use 'trailing_percent' = 10%
)
};
return await tradeClient.ExecuteAsync(request);
}
Main Order+Attached Take Profit Order
static async Task<PlaceOrderResponse?> PlaceProfitTakerOrderAsync(TradeClient tradeClient)
{
ContractItem contract = ContractItem.BuildStockContract("01810", Currency.HKD.ToString());
TigerRequest<PlaceOrderResponse> request = new TigerRequest<PlaceOrderResponse>()
{
ApiMethodName = TradeApiService.PLACE_ORDER,
ModelValue = PlaceOrderModel.BuildLimitOrder(
"20200821144442583", // tradeClient.GetDefaultAccount,
contract,
ActionType.BUY,
200, 11.0
).addProfitTakerOrder(13.0, TimeInForce.DAY, true) // addProfitTakerOrder
};
return await tradeClient.ExecuteAsync(request);
}
Main Order+Attached Stop Order
static async Task<PlaceOrderResponse?> PlaceStopLossOrderAsync(TradeClient tradeClient)
{
ContractItem contract = ContractItem.BuildStockContract("01810", Currency.HKD.ToString());
TigerRequest<PlaceOrderResponse> request = new TigerRequest<PlaceOrderResponse>()
{
ApiMethodName = TradeApiService.PLACE_ORDER,
ModelValue = PlaceOrderModel.BuildLimitOrder(
"20200821144442583", // tradeClient.GetDefaultAccount,
contract,
ActionType.BUY,
200, 11.0
// addStopLossOrder(not support options)
).addStopLossOrder(10.0, TimeInForce.DAY)
// addStopLossLimitOrder, the first price-1.0 is the activation price, the second price-0.9 is the limit price(Only available for prime account)
// ).placeOrder.addStopLossLimitOrder(1.0, 0.9, TimeInForce.DAY)
};
// set other parameter
((PlaceOrderModel)request.ModelValue).UserMark = "test001";
return await tradeClient.ExecuteAsync(request);
}
Main Order+Attached Stop Trail Order
static async Task<PlaceOrderResponse?> PlaceStopLossTrailOrderAsync(TradeClient tradeClient)
{
ContractItem contract = ContractItem.BuildStockContract("01810", Currency.HKD.ToString());
PlaceOrderModel placeOrder = PlaceOrderModel.BuildLimitOrder(
"20200821144442583", // tradeClient.GetDefaultAccount,
contract,
ActionType.BUY,
200, 11.0
);
// addStopLossTrailOrder ('stopLossTrailingPercent' = 10%)
placeOrder.addStopLossTrailOrder(10.0, 0, TimeInForce.DAY);
// set other parameter
placeOrder.UserMark = "test-attach-stoplosstrail";
TigerRequest<PlaceOrderResponse> request = new TigerRequest<PlaceOrderResponse>()
{
ApiMethodName = TradeApiService.PLACE_ORDER,
ModelValue = placeOrder
};
return await tradeClient.ExecuteAsync(request);
}
Main Order+Attached bracket Order
static async Task<PlaceOrderResponse?> PlaceBracketsOrderAsync(TradeClient tradeClient)
{
ContractItem contract = ContractItem.BuildStockContract("01810", Currency.HKD.ToString());
PlaceOrderModel placeOrder = PlaceOrderModel.BuildLimitOrder(
"13810712",
contract,
ActionType.BUY,
200, 11.0
);
// addBracketsOrder
placeOrder.addBracketsOrder(13.0, TimeInForce.DAY, true, 10.0, TimeInForce.DAY);
TigerRequest<PlaceOrderResponse> request = new TigerRequest<PlaceOrderResponse>()
{
ApiMethodName = TradeApiService.PLACE_ORDER,
ModelValue = placeOrder
};
return await tradeClient.ExecuteAsync(request);
}
Forex Order
static async Task<ForexTradeOrderResponse?> PlaceForexOrderAsync(TradeClient tradeClient)
{
TigerRequest<ForexTradeOrderResponse> request = new TigerRequest<ForexTradeOrderResponse>()
{
ApiMethodName = TradeApiService.PLACE_FOREX_ORDER,
ModelValue = new ForexTradeOrderModel()
{
Account = "20200821144442583",
SegType = SegmentType.SEC,
SourceCurrency = Currency.HKD,
SourceAmount = 10000.0,
TargetCurrency = Currency.USD,
TimeInForce = TimeInForce.DAY,
}
};
return await tradeClient.ExecuteAsync(request);
}
Fund Amount Order
static async Task<PlaceOrderResponse?> PlaceFundOrderAsync(TradeClient tradeClient)
{
ContractItem contract = ContractItem.BuildFundContract("IE00B464Q616.USD", Currency.USD.ToString());
TigerRequest<PlaceOrderResponse> request = new TigerRequest<PlaceOrderResponse>()
{
ApiMethodName = TradeApiService.PLACE_ORDER,
ModelValue = PlaceOrderModel.BuildAmountOrder(
"13810712", // tradeClient.GetDefaultAccount,
contract,
ActionType.BUY,
180.0
)
};
return await tradeClient.ExecuteAsync(request);
}
TWAP/VWAP Order
Only supports U.S. stocks, and only supports intraday orders
static async Task<PlaceOrderResponse?> PlaceVWAPOrderAsync(TradeClient tradeClient)
{
// place VWAP order
PlaceOrderModel placeOrder = PlaceOrderModel.BuildVWAPOrder(
"13810712", "AAPL", ActionType.BUY, 1000,
DateUtil.ConvertTimestamp("2023-06-20 10:30:00", CustomTimeZone.NY_ZONE),
DateUtil.ConvertTimestamp("2023-06-20 12:30:00", CustomTimeZone.NY_ZONE),
0.5, 160.0);
TigerRequest<PlaceOrderResponse> request = new TigerRequest<PlaceOrderResponse>()
{
ApiMethodName = TradeApiService.PLACE_ORDER,
ModelValue = placeOrder
};
return await tradeClient.ExecuteAsync(request);
}
static async Task<PlaceOrderResponse?> PlaceTWAPOrderAsync(TradeClient tradeClient)
{
// place TWAP order
PlaceOrderModel placeOrder = PlaceOrderModel.BuildTWAPOrder(
"13810712", "AAPL", ActionType.BUY, 1000,
DateUtil.ConvertTimestamp("2023-06-20 10:30:00", CustomTimeZone.NY_ZONE),
DateUtil.ConvertTimestamp("2023-06-20 12:30:00", CustomTimeZone.NY_ZONE),
160.0);
TigerRequest<PlaceOrderResponse> request = new TigerRequest<PlaceOrderResponse>()
{
ApiMethodName = TradeApiService.PLACE_ORDER,
ModelValue = placeOrder
};
return await tradeClient.ExecuteAsync(request);
}
Options Multi Legs Order
Only supports intraday orders
static async Task<PlaceOrderResponse?> PlaceMultiLegOrderAsync(TradeClient tradeClient)
{
// place option multi-leg order
ContractLeg leg1 = new ContractLeg()
{
SecType = SecType.OPT.ToString(),
Symbol = "AAPL",
Strike = "175.0",
Expiry = "20231013",
Right = Right.CALL.ToString(),
Action = ActionType.BUY.ToString(),
Ratio = 1
};
ContractLeg leg2 = new ContractLeg()
{
SecType = SecType.OPT.ToString(),
Symbol = "AAPL",
Strike = "180.0",
Expiry = "20231013",
Right = Right.CALL.ToString(),
Action = ActionType.SELL.ToString(),
Ratio = 1
};
List<ContractLeg> legs = new List<ContractLeg>() { leg1, leg2 };
PlaceOrderModel placeOrder = PlaceOrderModel.BuildMultiLegOrder(
"13810712", legs, ComboType.VERTICAL, ActionType.BUY, 1,
OrderType.LMT, 0.6, null, null);
TigerRequest<PlaceOrderResponse> request = new TigerRequest<PlaceOrderResponse>()
{
ApiMethodName = TradeApiService.PLACE_ORDER,
ModelValue = placeOrder
};
return await tradeClient.ExecuteAsync(request);
}
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.
static async Task<PlaceOrderResponse?> PlaceOCABracketsOrderAsync(TradeClient tradeClient)
{
// place OCA Brackets order
ContractItem contract = ContractItem.BuildStockContract("BILI", Currency.USD.ToString());
PlaceOrderModel placeOrder = PlaceOrderModel.BuildOCABracketsOrder(
"13810712", contract, ActionType.SELL, 1,
17.0, TimeInForce.DAY, true,
12.0, TimeInForce.DAY, false);
placeOrder.Lang = Language.en_US;
placeOrder.UserMark = "test-oca";
TigerRequest<PlaceOrderResponse> request = new TigerRequest<PlaceOrderResponse>()
{
ApiMethodName = TradeApiService.PLACE_ORDER,
ModelValue = placeOrder
};
return await tradeClient.ExecuteAsync(request);
}
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"
}
]
}