Place Order
Create Order
Corresponding Request Class: TradeOrderRequest
Description
Trading order placement interface. For information on how to select underlying assets, order types, direction quantities, etc., please see the explanation below.
Please check whether your account supports the requested order in conjunction with the Trading Order Types section of this document before running the program, and check whether the trading rules allow placing orders for specific underlying assets during the program runtime period.
CAUTION
- Market orders (MKT) and stop orders (STP) do not support pre-market and after-hours trading. When calling the order placement interface, you need to set outside_rth to false
- Short-sellable assets currently do not support position hedging and cannot simultaneously hold long and short positions of the same underlying asset
- The main order type for additional orders currently only supports limit orders
- When the limit price does not match the tickSize, you can refer to the tickSizes field returned by the contract and use the StockPriceUtils utility class to determine if it matches, and fix the price to meet the tickSize requirements
- Market orders (MKT) and simulated accounts do not support setting the time_in_force parameter to GTC
- Simulated accounts do not currently support orders for warrants and callable bull/bear certificates
Order Status Description
-
How to determine the partial fill status of comprehensive and simulated accounts?
When the order status is not Initial and Filled (it may be PendingSubmit, Cancelled, Invalid, or Inactive), it may be in a partial fill status, which can be determined by whether the order fill quantity is greater than 0.
-
How to determine the partial fill status of global accounts?
The order status is Filled, and the order fill quantity is greater than 0.
Order Status Change Flow:
Other Notes
- For index options, except IWM/SPY/QQQ, only contracts with expiration dates on Fridays are supported for trading.
- Direct establishment of reverse positions is prohibited. For example, when currently holding 100 shares long position, directly selling 200 shares (intending to establish 100 shares net short) will be rejected. You need to first close the existing 100 shares long position, then perform the new sell operation.
Parameters
| Parameter | Type | Description | Market Order | Limit Order | Stop Order | Stop Limit Order | Trailing Stop Order |
|---|---|---|---|---|---|---|---|
| account | string | User authorized account: 402901 | Required | Required | Required | Required | Required |
| order_id | int | Order ID, used to prevent duplicate orders. Can be obtained through the order ID interface. If 0 is passed, the server will automatically generate an order ID. Passing 0 cannot prevent duplicate orders, please choose carefully | Optional | Optional | Optional | Optional | Optional |
| symbol | string | Stock code, e.g.: AAPL; (When sec_typ is warrant/CBBC, it's the 5-digit number below the name in the warrant/CBBC list) | Required | Required | Required | Required | Required |
| sec_type | string | Contract type (STK stock; OPT US stock option; WAR HK warrant; IOPT HK CBBC; FUT futures; FUND fund) | Required | Required | Required | Required | Required |
| action | string | Trading direction BUY/SELL | Required | Required | Required | Required | Required |
| order_type | string | Order type MKT (market order), LMT (limit order), STP(stop order), STP_LMT (stop limit order), TRAIL (trailing stop order) | MKT | LMT | STP | STP_LMT | TRAIL |
| total_quantity | long | Order quantity (HK stocks, Shanghai-HK Stock Connect, warrants, CBBCs have minimum quantity restrictions) | Required | Required | Required | Required | Required |
| total_quantity_scale | int | Order quantity offset, default is 0. For fractional shares, total_quantity and total_quantity_scale combine to represent the real order quantity, e.g., total_quantity=111 total_quantity_scale=2, then real quantity=111*10^(-2)=1.11 | Optional | Optional | Optional | Optional | Optional |
| cash_amount | Double | Order amount (for funds and other amount-based orders) | Optional | Not Required | Not Required | Not Required | Not Required |
| limit_price | double | Limit price, required when order_type is LMT, STP_LMT | Not Required | Required | Not Required | Required | Not Required |
| aux_price | double | Stock order stop trigger price. Meaning is price difference, overridden by trailing_percent when both exist. Required when order_type is STP, STP_LMT, when order_type is TRAIL, it's the trailing amount | Not Required | Not Required | Required | Required | Optional |
| trailing_percent | double | Trailing stop order - stop percentage. When order_type is TRAIL, aux_price and trailing_percent are mutually exclusive, trailing_percent takes priority | Not Required | Not Required | Not Required | Not Required | Optional |
| outside_rth | boolean | true: Allow pre-market and after-hours trading (US stocks only), false: Not allowed, default is allowed. (Market orders, stop orders, trailing stop orders are only valid during market hours, will ignore outside_rth parameter) | Not Required | Optional | Optional | Not Required | Optional |
| trading_session_type | TradingSessionType | US stock order session (limit orders only). Enum values see: | Not Required | Optional | Not Required | Optional | Not Required |
| adjust_limit | double | Price adjustment range (default 0 means no adjustment, positive numbers adjust upward, negative numbers adjust downward), automatically adjusts the input price to a legal price level. For example: 0.001 means adjust upward with a range not exceeding 0.1%; -0.001 means adjust downward with a range not exceeding 0.1%. Default 0 means no adjustment | Not Required | Optional | Optional | Optional | Optional |
| market | string | Market (US stocks US, HK stocks HK, Shanghai-HK Stock Connect CN) | Optional | Optional | Optional | Optional | Optional |
| currency | string | Currency (US stocks USD, HK stocks HKD, Shanghai-HK Stock Connect CNH) | Optional | Optional | Optional | Optional | Optional |
| time_in_force | string | Order validity period, can only be DAY (valid for the day), GTC (valid until cancelled), GTD (valid until specified time), default is DAY | Optional | Optional | Optional | Optional | Optional |
| expire_time | long | Order validity deadline, 13-digit timestamp accurate to seconds (required when time_in_force is GTC, invalid for other types) | Not Required | Optional | Optional | Not Required | Optional |
| exchange | string | Exchange (US stocks SMART, HK stocks SEHK, Shanghai-HK Stock Connect SEHKNTL, Shenzhen-HK Stock Connect SEHKSZSE) | Optional | Optional | Optional | Optional | Optional |
| expiry | string | Expiry date (options, warrants, CBBCs only) | Optional | Optional | Optional | Optional | Optional |
| strike | string | Strike price (options, warrants, CBBCs only) | Optional | Optional | Optional | Optional | Optional |
| right | string | Option direction PUT/CALL (options, warrants, CBBCs only) | Optional | Optional | Optional | Optional | Optional |
| multiplier | float | Multiplier, quantity per lot (options, warrants, CBBCs only) | Optional | Optional | Optional | Optional | Optional |
| local_symbol | string | This field is required for warrants and CBBCs, the 5-digit number below the name in the warrant/CBBC list in the APP | Optional | Optional | Optional | Optional | Optional |
| secret_key | string | Trader key, for institutional users only | Optional | Optional | Optional | Optional | Optional |
| user_mark | string | Order comment information, cannot be modified after ordering, returns userMark information when querying orders | Optional | Optional | Optional | Optional | Optional |
-
Attached Order Parameters
Attached Orders are orders that can achieve profit-taking or stop-loss effects on the main order through attached sub-orders. The types of sub-orders that can be attached include limit orders (can be used for profit-taking) and stop limit orders/stop orders (can be used for stop-loss). Attached orders can be implemented by adding the following parameters
Parameter Type Description Attached Stop Loss Attached Profit Taking Attached Trailing Stop Attached Bracket attach_type string Attached order type, required when placing attached orders. (order_type should be LMT): PROFIT-profit taking order, LOSS-stop loss order, BRACKETS-bracket order (includes attached profit taking and stop loss orders) Required Required Required Required profit_taker_orderId int Profit taking order ID, can be obtained through the order ID interface. If 0 is passed, the server will automatically generate a profit taking order ID Not Required Optional Optional Optional profit_taker_price double Profit taking order price, required when placing profit taking orders Not Required Required Not Required Required profit_taker_tif string Same as time_in_force field, order validity period, can only be DAY (valid for the day) and GTC (valid until cancelled), required when placing profit taking orders Not Required Required Not Required Required profit_taker_rth boolean Same as outside_rth field Not Required Required Not Required Required stop_loss_orderId int Stop loss order ID, can be obtained through the order ID interface. If 0 is passed, the server will automatically generate a stop loss order ID Required Not Required Not Required Required stop_loss_price double Stop loss order price (stop loss order trigger price), required when placing stop loss orders Required Not Required Not Required Required stop_loss_limit_price double Stop loss order execution limit price (currently only valid for comprehensive accounts). When the stop loss order limit price is not filled, it's an attached stop loss market order Optional Not Required Not Required Optional stop_loss_tif string Same as time_in_force field, order validity period, can only be DAY (valid for the day) and GTC (valid until cancelled), required when placing stop loss orders Required Not Required Required Required stop_loss_trailing_percent double Trailing stop order - stop percentage. When placing trailing stop orders, one of stop percentage (stopLossTrailingPercent) and stop amount (stopLossTrailingAmount) must be filled. If both are filled, the stop percentage will be used as the parameter. Optional Not Required Choose One Optional stop_loss_trailing_amount double Trailing stop order - stop amount. When placing trailing stop orders, one of stop percentage (stopLossTrailingPercent) and stop amount (stopLossTrailingAmount) must be filled. If both are filled, the stop percentage will be used as the parameter. Optional Not Required Choose One Optional
-
TWAP/VWAP Order Parameters
TWAP/VWAP orders only support US stock underlying assets, can only be placed during market hours, do not support pre-market orders
Parameter Type Algorithm Parameter Description TWAP VWAP order_type string Order type, TWAP/VWAP Required Required account string Capital account Required Required symbol string Stock code e.g.: AAPL Required Required sec_type string Only supports STK Required Required total_quantity boolean Order quantity Required Required algo_params List<TagValue>Algorithm parameters Optional Optional - long start_time Strategy start time (timestamp) Optional Optional - long end_time Strategy end time (timestamp) Optional Optional - string participation_rate Maximum participation rate (volume as maximum proportion of daily average volume, 0.01-0.5) Not Required Optional
-
Return
Name Type Description id long Unique order ID, can be used to query/modify/cancel orders subIds List<Long>When attached orders, returns list of sub-order IDs orders List<TradeOrder>Returns detailed order information
Build Contract Object
// US stock contract
ContractItem contract = ContractItem.buildStockContract("SPY", "USD");
// HK stock contract
ContractItem contract = ContractItem.buildStockContract("00700", "HKD");
// HK warrant contract (note that for the same symbol, the expiry may be different for global and comprehensive accounts)
ContractItem contract = ContractItem.buildWarrantContract("13745", "20211217", 719.38D, Right.CALL.name());
// HK CBBC contract
ContractItem contract = ContractItem.buildCbbcContract("50296", "20220331", 457D, Right.CALL.name());
// US stock option contract
ContractItem contract = ContractItem.buildOptionContract("AAPL 190118P00160000");
ContractItem contract = ContractItem.buildOptionContract("AAPL", "20211119", 150.0D, "CALL");
// Futures contract
// Global account
ContractItem contract = ContractItem.buildFutureContract("CL", "USD", "SGX", "20190328", 1.0D);
// Comprehensive account
ContractItem contract = ContractItem.buildFutureContract("CL2112", "USD");Build Orders
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));Overnight/Full-time Orders
US stocks only
// place overnight order in the US market
TradeOrderRequest request = TradeOrderRequest.buildLimitOrder("402901", contract, ActionType.BUY, 1, 200.0d);
request.setTradingSessionType(TradingSessionType.OVERNIGHT);
TradeOrderResponse response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
// place full-time order in the US market
request = TradeOrderRequest.buildLimitOrder("402901", contract, ActionType.BUY, 1, 200.0d);
request.setTradingSessionType(TradingSessionType.FULL);
response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));Auction Orders (AM/AL)
// auction order in hk market
TradeOrderRequest request = TradeOrderRequest.buildLimitOrder("402901", contract, ActionType.BUY, 100, 100.0d);
// Pre-market auction: AM or AL + OPG, if not filled participate in regular trading; Post-market auction: 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 Order (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 Profit Taking 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 + Additional Stop Loss 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);
// Add additional stop loss market order, the stop loss price is the trigger price (options are not supported)
TradeOrderRequest.addStopLossOrder(request, 100D, TimeInForce.DAY);
response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));
// Options can use additional stop loss limit orders
ContractItem optionContract = ContractItem.buildOptionContract("AAPL", "20211231", 175.0D, "CALL");
request = TradeOrderRequest.buildLimitOrder("402901", optionContract, ActionType.BUY, 1, 2.0d);
// Add additional stop loss limit order, where the first price 1.7 is the trigger price, and the second price 1.69 is the limit price for the additional stop loss order (currently only supports comprehensive accounts)
TradeOrderRequest.addStopLossLimitOrder(request, 1.7D, 1.69D, TimeInForce.DAY);
response = client.execute(request);
System.out.println(JSONObject.toJSONString(response));Main Order + Additional Trailing Stop Loss Order
ContractItem contract = ContractItem.buildStockContract("AAPL", "USD");
// use default account
TradeOrderRequest request = TradeOrderRequest.buildLimitOrder(contract, ActionType.BUY, 1, 165D);
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 + Additional 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));Currency Exchange 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 Orders
Only supports US stocks, only supports intraday orders. Cannot be modified, but can be cancelled.
// 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-Leg 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 Orders
Not supported in simulation accounts.
OCA bracket orders contain two orders with the same underlying asset: one take-profit limit order and another stop-loss order or stop-loss limit order. When one order is executed, the other order is automatically cancelled. After placing the order, two order objects are returned, and orders with the same ocaGroupId belong to the same group.
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());
}Return Example
Additional Bracket 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 Holdings",
"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 Holdings",
"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 Holdings",
"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"
}
]
}Updated 1 day ago
