Skip to content

Commit e650042

Browse files
author
方佳
committed
Merge branch 'main_merge_20260110' into 'main'
feat: Add batch order, snapshots support pre-market, after-market, and night trading sessions. See merge request webull/webull-openapi-java-sdk!9
2 parents d1a506f + da1d709 commit e650042

File tree

13 files changed

+3155
-791
lines changed

13 files changed

+3155
-791
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<groupId>com.webull.openapi</groupId>
2222
<artifactId>webull-openapi-java-sdk-parent</artifactId>
2323
<packaging>pom</packaging>
24-
<version>1.0.6</version>
24+
<version>1.0.7</version>
2525

2626
<name>webull-openapi-java-sdk-parent</name>
2727
<url>https://github.com/webull-inc/webull-openapi-java-sdk/</url>

webull-openapi-java-sdk-samples/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<parent>
2020
<groupId>com.webull.openapi</groupId>
2121
<artifactId>webull-openapi-java-sdk-parent</artifactId>
22-
<version>1.0.6</version>
22+
<version>1.0.7</version>
2323
</parent>
2424
<modelVersion>4.0.0</modelVersion>
2525

webull-openapi-java-sdk-samples/src/main/java/com/webull/openapi/samples/trade/TradeClientV3.java

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,7 @@
1919
import com.webull.openapi.trade.request.v3.OptionOrderItemLeg;
2020
import com.webull.openapi.trade.request.v3.TradeOrder;
2121
import com.webull.openapi.trade.request.v3.TradeOrderItem;
22-
import com.webull.openapi.trade.response.v3.Account;
23-
import com.webull.openapi.trade.response.v3.AccountBalanceInfo;
24-
import com.webull.openapi.trade.response.v3.AccountPositionsInfo;
25-
import com.webull.openapi.trade.response.v3.OrderHistory;
26-
import com.webull.openapi.trade.response.v3.PreviewOrderResponse;
27-
import com.webull.openapi.trade.response.v3.TradeOrderResponse;
22+
import com.webull.openapi.trade.response.v3.*;
2823

2924
import java.util.ArrayList;
3025
import java.util.List;
@@ -55,6 +50,8 @@ public static void main(String[] args) throws InterruptedException {
5550
if (CollectionUtils.isNotEmpty(accountIds.getSecurityAccountIds())) {
5651
runEquityNormalOrderExample(apiService, accountIds.getSecurityAccountIds().get(0));
5752

53+
runEquityBatchOrderExample(apiService, accountIds.getSecurityAccountIds().get(0));
54+
5855
runEquityComboOrderExample(apiService, accountIds.getSecurityAccountIds().get(0));
5956

6057
runOptionOrderExample(apiService, accountIds.getSecurityAccountIds().get(0));
@@ -102,9 +99,36 @@ private static AccountIds initAccount(com.webull.openapi.trade.TradeClientV3 api
10299
return accountIds;
103100
}
104101

105-
private static void runEquityNormalOrderExample(
102+
private static void runEquityBatchOrderExample(
106103
com.webull.openapi.trade.TradeClientV3 apiService,
107104
String accountId
105+
) throws InterruptedException {
106+
TradeOrder newBatchOrder = new TradeOrder();
107+
List<TradeOrderItem> batchOrders = new ArrayList<>();
108+
TradeOrderItem normalEquityOrder = new TradeOrderItem();
109+
normalEquityOrder.setClientOrderId(GUID.get());
110+
normalEquityOrder.setComboType(ComboType.NORMAL.name());
111+
normalEquityOrder.setSymbol("AAPL");
112+
normalEquityOrder.setInstrumentType(InstrumentSuperType.EQUITY.name());
113+
normalEquityOrder.setMarket(Markets.US.name());
114+
normalEquityOrder.setOrderType(OrderType.LIMIT.name());
115+
normalEquityOrder.setQuantity("1");
116+
normalEquityOrder.setLimitPrice("280");
117+
normalEquityOrder.setSupportTradingSession("CORE");
118+
normalEquityOrder.setSide(OrderSide.BUY.name());
119+
normalEquityOrder.setTimeInForce(OrderTIF.DAY.name());
120+
normalEquityOrder.setEntrustType(EntrustType.QTY.name());
121+
batchOrders.add(normalEquityOrder);
122+
newBatchOrder.setBatchOrders(batchOrders);
123+
124+
TradeBatchPlaceResponse placeNormalEquityResponse =
125+
apiService.batchPlaceOrder(accountId, newBatchOrder);
126+
logger.info("batchPlaceNormalEquityResponse:{}", placeNormalEquityResponse);
127+
}
128+
129+
private static void runEquityNormalOrderExample(
130+
com.webull.openapi.trade.TradeClientV3 apiService,
131+
String accountId
108132
) throws InterruptedException {
109133
TradeOrder newNormalEquityOrder = new TradeOrder();
110134
List<TradeOrderItem> newNormalEquityOrders = new ArrayList<>();
@@ -126,11 +150,11 @@ private static void runEquityNormalOrderExample(
126150
newNormalEquityOrder.setNewOrders(newNormalEquityOrders);
127151

128152
PreviewOrderResponse previewNormalEquityResponse =
129-
apiService.previewOrder(accountId, newNormalEquityOrder);
153+
apiService.previewOrder(accountId, newNormalEquityOrder);
130154
logger.info("previewNormalEquityResponse: {}", previewNormalEquityResponse);
131155

132156
TradeOrderResponse placeNormalEquityResponse =
133-
apiService.placeOrder(accountId, newNormalEquityOrder);
157+
apiService.placeOrder(accountId, newNormalEquityOrder);
134158
logger.info("placeNormalEquityResponse: {}", placeNormalEquityResponse);
135159
doSleep();
136160

@@ -144,26 +168,26 @@ private static void runEquityNormalOrderExample(
144168
replaceNormalEquityOrder.setModifyOrders(replaceNormalEquityOrders);
145169

146170
TradeOrderResponse replaceNormalEquityResponse =
147-
apiService.replaceOrder(accountId, replaceNormalEquityOrder);
171+
apiService.replaceOrder(accountId, replaceNormalEquityOrder);
148172
logger.info("replaceNormalEquityResponse: {}", replaceNormalEquityResponse);
149173
doSleep();
150174

151175
TradeOrder cancelNormalEquityOrder = new TradeOrder();
152176
cancelNormalEquityOrder.setClientOrderId(normalEquityOrder.getClientOrderId());
153177
TradeOrderResponse cancelNormalEquityResponse =
154-
apiService.cancelOrder(accountId, cancelNormalEquityOrder);
178+
apiService.cancelOrder(accountId, cancelNormalEquityOrder);
155179
logger.info("cancelNormalEquityResponse: {}", cancelNormalEquityResponse);
156180

157181
List<OrderHistory> listOrdersResponse =
158-
apiService.listOrders(accountId, 10, null, null, null);
182+
apiService.listOrders(accountId, 10, null, null, null);
159183
logger.info("listOrdersResponse: {}", listOrdersResponse);
160184

161185
List<OrderHistory> openOrdersResponse =
162-
apiService.openOrders(accountId, 10, null);
186+
apiService.openOrders(accountId, 10, null);
163187
logger.info("openOrdersResponse: {}", openOrdersResponse);
164188

165189
OrderHistory orderDetailResponse =
166-
apiService.getOrderDetails(accountId, normalEquityOrder.getClientOrderId());
190+
apiService.getOrderDetails(accountId, normalEquityOrder.getClientOrderId());
167191
logger.info("orderDetailResponse: {}", orderDetailResponse);
168192
}
169193

webull-openapi-java-sdk/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>com.webull.openapi</groupId>
99
<artifactId>webull-openapi-java-sdk-parent</artifactId>
10-
<version>1.0.6</version>
10+
<version>1.0.7</version>
1111
</parent>
1212

1313
<artifactId>webull-openapi-java-sdk</artifactId>

webull-openapi-java-sdk/src/main/java/com/webull/openapi/core/config/ProjectReaderHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ private ProjectReaderHelper() {
2424

2525
private static final String APPLICATION_VERSION = "application.version";
2626

27-
private static final String DEFAULT_APPLICATION_VERSION = "1.0.6";
27+
private static final String DEFAULT_APPLICATION_VERSION = "1.0.7";
2828

2929
private static final String APPLICATION_NAME = "application.name";
3030

0 commit comments

Comments
 (0)