Place Options
Interface description
- Function description: Place options orders. It is recommended to use the v2 order query interface for option order inquiries: Order Detail V2
Request URL: /openapi/account/orders/option/place?account_id={account_id}
Request method: POST
Parameters
Parameter | Type | Required | Description | Example value |
---|---|---|---|---|
account_id | String | Required | Account ID | 2847483 |
new_orders | []order_item | Required | Order Details |
order_item:
Parameter | Type | Required | Description | Example value |
---|---|---|---|---|
client_order_id | String | Required | Order ID | 0KGOHL4PR2SLC0DKIND4TI0002 |
combo_type | String | Required | ComboType Only NORMAL is supported. | NORMAL |
option_strategy | String | Required | OptionsStrategy Only SINGLE is supported. | SINGLE |
side | String | Required | OrderSide Only BUY and SELL are supported. | BUY |
order_type | String | Required | Order type refers to the dictionary value OrderType. Only LIMIT,STOP_LOSS,STOP_LOSS_LIMIT are supported. | LIMIT |
time_in_force | String | Required | OrderTIF | DAY |
stop_price | String | Optional | Stop loss price | 11.00 |
limit_price | String | Optional | Limited price | 11.00 |
quantity | String | Required | Quantity | 1 |
entrust_type | String | Required | EntrustType Currently, only QTY is supported | QTY |
current_ask | String | Required | The current selling price seen by the user | 11.01 |
current_bid | String | Required | The current buying price seen by the user | 11.00 |
orders | []order | Required | Leg detail |
order
Parameter | Type | Required | Description | Example value |
---|---|---|---|---|
side | String | Required | OrderSide Only BUY and SELL are supported. | BUY |
quantity | String | Required | Quantity | 1 |
market | String | Required | Markets | US |
instrument_type | String | Required | InstrumentTypes | OPTION |
symbol | String | Required | Symbol | AAPL |
strike_price | String | Optional | Exercise Price | 11.00 |
init_exp_date | String | Optional | Expiration date Format: yyyy-MM-dd | 2023-08-01 |
option_type | String | Optional | OptionsType | CALL |
Response
Parameter | Type | Required | Description | Example value |
---|---|---|---|---|
client_order_id | String | Optional | Client Order ID Simple order return | 0KGOHL4PR2SLC0DKIND4TI0002 |
order_id | String | Optional | Order ID Simple order return | 80HG7CPSFDPCAL3TP66LKBAS69 |
Request Example
Single-leg Options
- Python
- Java
from webullsdktrade.api import API
from webullsdkcore.client import ApiClient
from webullsdkcore.common.region import Region
client_order_id = uuid.uuid4().hex
option_new_orders = [
{
"client_order_id": client_order_id,
"combo_type": "NORMAL",
"order_type": "LIMIT",
"quantity": "1",
"limit_price": "11.25",
"option_strategy": "SINGLE",
"side": "BUY",
"time_in_force": "DAY",
"entrust_type": "QTY",
"orders": [
{
"side": "BUY",
"quantity": "1",
"symbol": "AAPL",
"strike_price": "250.0",
"init_exp_date": "2024-12-27",
"instrument_type": "OPTION",
"option_type": "CALL",
"market": "US"
}
]
}
]
api_client = ApiClient(your_app_key, your_app_secret, Region.HK.value)
api = API(api_client)
response = api.order.place_option(account_id, option_new_orders)
if response.status_code == 200:
order_res = response.json()
HttpApiConfig apiConfig = HttpApiConfig.builder()
.appKey(Env.APP_KEY)
.appSecret(Env.APP_SECRET)
.regionId(Region.hk.name())
.build();
TradeApiService apiService = new TradeHttpApiService(apiConfig);
OptionOrderItemLeg optionOrderItemLeg = new OptionOrderItemLeg();
optionOrderItemLeg.setSide(OrderSide.BUY.name());
optionOrderItemLeg.setQuantity("1");
optionOrderItemLeg.setSymbol("AAPL");
optionOrderItemLeg.setStrikePrice("250");
optionOrderItemLeg.setInitExpDate("2025-08-15");
optionOrderItemLeg.setInstrumentType(InstrumentSuperType.OPTION.name());
optionOrderItemLeg.setOptionType(OptionType.CALL.name());
optionOrderItemLeg.setMarket(Markets.US.name());
List<OptionOrderItemLeg> optionOrderItemLegList = new ArrayList<>();
optionOrderItemLegList.add(optionOrderItemLeg);
OptionOrderItem optionOrderItem = new OptionOrderItem();
optionOrderItem.setClientOrderId(GUID.get());
optionOrderItem.setComboType(ComboType.NORMAL.name());
optionOrderItem.setOptionStrategy(OptionStrategy.SINGLE.name());
optionOrderItem.setSide(OrderSide.BUY.name());
optionOrderItem.setOrderType(OrderType.LIMIT.name());
optionOrderItem.setTimeInForce(OrderTIF.DAY.name());
optionOrderItem.setLimitPrice("2");
optionOrderItem.setQuantity("1");
optionOrderItem.setEntrustType(EntrustType.QTY.name());
optionOrderItem.setOrders(optionOrderItemLegList);
List<OptionOrderItem> optionOrderItemList = new ArrayList<>();
optionOrderItemList.add(optionOrderItem);
OptionOrder optionOrder = new OptionOrder();
optionOrder.setNewOrders(optionOrderItemList);
PreviewOrderResponse previewOptionResponse = apiService.placeOption(accountId, optionOrder);