webull-openapi-python-sdk 2.0.19__py3-none-any.whl → 3.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- samples/screener/screener_client.py +55 -2
- webull/__init__.py +1 -1
- webull/core/__init__.py +1 -1
- webull/core/http/initializer/config/bean/query_config_request.py +1 -1
- webull/core/http/initializer/token/bean/check_token_request.py +1 -1
- webull/core/http/initializer/token/bean/create_token_request.py +1 -1
- webull/core/http/initializer/token/bean/refresh_token_request.py +1 -1
- webull/data/__init__.py +1 -1
- webull/data/quotes/fundamentals.py +19 -0
- webull/data/quotes/instrument.py +148 -1
- webull/data/quotes/screener.py +179 -0
- webull/data/request/get_analyst_rating_request.py +2 -1
- webull/data/request/get_analyst_target_price_request.py +2 -1
- webull/data/request/get_batch_historical_bars_request.py +1 -1
- webull/data/request/get_capital_flow_request.py +1 -1
- webull/data/request/get_company_profile_request.py +2 -1
- webull/data/request/get_corp_action_request.py +1 -1
- webull/data/request/get_crypto_historical_bars_request.py +1 -1
- webull/data/request/get_crypto_instruments_request.py +5 -1
- webull/data/request/get_crypto_instruments_request_v2.py +41 -0
- webull/data/request/get_crypto_snapshot_request.py +1 -1
- webull/data/request/get_dividend_calendar_request.py +1 -1
- webull/data/request/get_earnings_calendar_request.py +1 -1
- webull/data/request/get_eod_bars_request.py +1 -1
- webull/data/request/get_event_bars_request.py +1 -1
- webull/data/request/get_event_depth_request.py +2 -1
- webull/data/request/get_event_events_request.py +2 -1
- webull/data/request/get_event_instrument_request.py +5 -1
- webull/data/request/get_event_instrument_request_v2.py +45 -0
- webull/data/request/get_event_series_categories.py +2 -1
- webull/data/request/get_event_series_request.py +5 -1
- webull/data/request/get_event_series_request_v2.py +37 -0
- webull/data/request/get_event_snapshot_request.py +2 -1
- webull/data/request/get_event_tick_request.py +2 -1
- webull/data/request/get_financials_alert_request.py +1 -1
- webull/data/request/get_financials_balance_sheet_request.py +1 -1
- webull/data/request/get_financials_cashflow_request.py +1 -1
- webull/data/request/get_financials_income_request.py +1 -1
- webull/data/request/get_financials_indicators_request.py +1 -1
- webull/data/request/get_footprint_request.py +1 -1
- webull/data/request/get_forecast_eps_request.py +1 -1
- webull/data/request/get_fund_allocation_request.py +1 -1
- webull/data/request/get_fund_brief_request.py +1 -1
- webull/data/request/get_fund_dividends_request.py +5 -1
- webull/data/request/get_fund_dividends_request_v2.py +35 -0
- webull/data/request/get_fund_files_request.py +1 -1
- webull/data/request/get_fund_holdings_request.py +1 -1
- webull/data/request/get_fund_net_value_request.py +1 -1
- webull/data/request/get_fund_performance_request.py +1 -1
- webull/data/request/get_fund_rating_request.py +1 -1
- webull/data/request/get_fund_splits_request.py +1 -1
- webull/data/request/get_futures_depth_request.py +1 -1
- webull/data/request/get_futures_footprint_request.py +1 -1
- webull/data/request/get_futures_historical_bars_request.py +1 -1
- webull/data/request/get_futures_instruments_by_code_request.py +1 -1
- webull/data/request/get_futures_instruments_request.py +2 -1
- webull/data/request/get_futures_product_class.py +2 -1
- webull/data/request/get_futures_products_request.py +2 -1
- webull/data/request/get_futures_snapshot_request.py +1 -1
- webull/data/request/get_futures_tick_request.py +1 -1
- webull/data/request/get_historical_bars_request.py +1 -1
- webull/data/request/get_industry_comparison_request.py +1 -1
- webull/data/request/get_instruments_request.py +5 -1
- webull/data/request/get_instruments_request_v2.py +44 -0
- webull/data/request/get_noii_bars_request.py +1 -1
- webull/data/request/get_noii_snapshot_request.py +2 -1
- webull/data/request/get_option_bars_request.py +1 -1
- webull/data/request/get_option_contracts_request.py +5 -1
- webull/data/request/get_option_contracts_request_v2.py +78 -0
- webull/data/request/get_option_snapshot_request.py +1 -1
- webull/data/request/get_option_tick_request.py +1 -1
- webull/data/request/get_quotes_request.py +1 -1
- webull/data/request/get_sec_filings_request.py +1 -1
- webull/data/request/get_snapshot_request.py +1 -1
- webull/data/request/get_tick_request.py +1 -1
- webull/data/request/screener/get_52whl_request.py +4 -0
- webull/data/request/screener/get_52whl_request_v2.py +45 -0
- webull/data/request/screener/get_gainers_losers_request.py +5 -1
- webull/data/request/screener/get_gainers_losers_request_v2.py +94 -0
- webull/data/request/screener/get_high_dividend_request.py +4 -0
- webull/data/request/screener/get_high_dividend_request_v2.py +41 -0
- webull/data/request/screener/get_market_sectors_detail_request.py +4 -0
- webull/data/request/screener/get_market_sectors_detail_request_v2.py +47 -0
- webull/data/request/screener/get_market_sectors_request.py +5 -1
- webull/data/request/screener/get_market_sectors_request_v2.py +43 -0
- webull/data/request/screener/get_most_active_request.py +5 -1
- webull/data/request/screener/get_most_active_request_v2.py +92 -0
- webull/data/request/subscribe_request.py +1 -1
- webull/data/request/unsubscribe_request.py +1 -1
- webull/data/request/watchlist/add_watchlist_instruments_request.py +2 -1
- webull/data/request/watchlist/create_watchlist_request.py +1 -1
- webull/data/request/watchlist/delete_watchlist_request.py +1 -1
- webull/data/request/watchlist/get_watchlist_instruments_request.py +2 -1
- webull/data/request/watchlist/get_watchlist_request.py +1 -1
- webull/data/request/watchlist/remove_watchlist_instruments_request.py +2 -1
- webull/data/request/watchlist/update_watchlist_instruments_request.py +2 -1
- webull/data/request/watchlist/update_watchlist_request.py +1 -1
- webull/trade/__init__.py +1 -1
- webull/trade/request/cancel_order_request.py +1 -1
- webull/trade/request/get_account_balance_request.py +1 -1
- webull/trade/request/get_account_positions_request.py +1 -1
- webull/trade/request/get_account_profile_request.py +1 -1
- webull/trade/request/get_activities_request.py +4 -0
- webull/trade/request/get_activities_request_v2.py +41 -0
- webull/trade/request/get_app_subscriptions.py +1 -1
- webull/trade/request/get_open_orders_request.py +1 -1
- webull/trade/request/get_order_detail_request.py +1 -1
- webull/trade/request/get_today_orders_request.py +1 -1
- webull/trade/request/get_trade_calendar_request.py +1 -1
- webull/trade/request/get_trade_instrument_detail_request.py +1 -1
- webull/trade/request/get_trade_security_detail_request.py +1 -1
- webull/trade/request/get_tradeable_instruments_request.py +1 -1
- webull/trade/request/palce_order_request.py +1 -1
- webull/trade/request/place_order_request.py +1 -1
- webull/trade/request/place_order_request_v2.py +1 -1
- webull/trade/request/replace_order_request.py +1 -1
- webull/trade/request/replace_order_request_v2.py +1 -1
- webull/trade/request/v2/cancel_option_request.py +1 -1
- webull/trade/request/v2/cancel_order_request.py +1 -1
- webull/trade/request/v2/get_account_balance_request.py +1 -1
- webull/trade/request/v2/get_account_list.py +1 -3
- webull/trade/request/v2/get_account_list_request.py +1 -3
- webull/trade/request/v2/get_account_position_details_request.py +4 -0
- webull/trade/request/v2/get_account_position_details_request_v2.py +31 -0
- webull/trade/request/v2/get_account_positions_request.py +1 -1
- webull/trade/request/v2/get_order_detail_request.py +1 -1
- webull/trade/request/v2/get_order_executions_request.py +5 -0
- webull/trade/request/v2/get_order_executions_request_v2.py +35 -0
- webull/trade/request/v2/get_order_history_request.py +1 -1
- webull/trade/request/v2/get_order_open_request.py +1 -1
- webull/trade/request/v2/palce_order_request.py +1 -1
- webull/trade/request/v2/place_option_request.py +1 -1
- webull/trade/request/v2/place_order_request.py +1 -1
- webull/trade/request/v2/preview_option_request.py +1 -1
- webull/trade/request/v2/preview_order_request.py +1 -1
- webull/trade/request/v2/replace_option_request.py +1 -1
- webull/trade/request/v2/replace_order_request.py +1 -1
- webull/trade/request/v3/batch_place_order_request.py +1 -1
- webull/trade/request/v3/cancel_order_request.py +1 -1
- webull/trade/request/v3/get_order_detail_request.py +1 -1
- webull/trade/request/v3/get_order_history_request.py +5 -1
- webull/trade/request/v3/get_order_history_request_v2.py +35 -0
- webull/trade/request/v3/get_order_open_request.py +5 -1
- webull/trade/request/v3/get_order_open_request_v2.py +27 -0
- webull/trade/request/v3/place_order_request.py +1 -1
- webull/trade/request/v3/preview_order_request.py +1 -1
- webull/trade/request/v3/replace_order_request.py +1 -1
- webull/trade/trade/activity.py +33 -0
- webull/trade/trade/v2/account_info_v2.py +24 -0
- webull/trade/trade/v3/{order_opration_v3.py → order_operation_v3.py} +94 -1
- webull/trade/trade_client.py +1 -1
- {webull_openapi_python_sdk-2.0.19.dist-info → webull_openapi_python_sdk-3.0.0.dist-info}/METADATA +1 -1
- {webull_openapi_python_sdk-2.0.19.dist-info → webull_openapi_python_sdk-3.0.0.dist-info}/RECORD +157 -140
- {webull_openapi_python_sdk-2.0.19.dist-info → webull_openapi_python_sdk-3.0.0.dist-info}/WHEEL +0 -0
- {webull_openapi_python_sdk-2.0.19.dist-info → webull_openapi_python_sdk-3.0.0.dist-info}/licenses/LICENSE +0 -0
- {webull_openapi_python_sdk-2.0.19.dist-info → webull_openapi_python_sdk-3.0.0.dist-info}/licenses/NOTICE +0 -0
- {webull_openapi_python_sdk-2.0.19.dist-info → webull_openapi_python_sdk-3.0.0.dist-info}/top_level.txt +0 -0
|
@@ -19,7 +19,7 @@ from webull.core.request import ApiRequest
|
|
|
19
19
|
|
|
20
20
|
class PlaceOptionRequest(ApiRequest):
|
|
21
21
|
def __init__(self):
|
|
22
|
-
super().__init__("/openapi/trade/option/order/place", version='
|
|
22
|
+
super().__init__("/openapi/trade/option/order/place", version='v3', method="POST", body_params={})
|
|
23
23
|
|
|
24
24
|
def set_new_orders(self, new_orders):
|
|
25
25
|
self.add_body_params("new_orders", new_orders)
|
|
@@ -18,7 +18,7 @@ from webull.core.request import ApiRequest
|
|
|
18
18
|
|
|
19
19
|
class PlaceOrderRequest(ApiRequest):
|
|
20
20
|
def __init__(self):
|
|
21
|
-
super().__init__("/openapi/trade/stock/order/place", version='
|
|
21
|
+
super().__init__("/openapi/trade/stock/order/place", version='v3', method="POST", body_params={})
|
|
22
22
|
|
|
23
23
|
def set_new_orders(self, new_orders):
|
|
24
24
|
self.add_body_params("new_orders", new_orders)
|
|
@@ -19,7 +19,7 @@ from webull.core.request import ApiRequest
|
|
|
19
19
|
|
|
20
20
|
class PreviewOptionRequest(ApiRequest):
|
|
21
21
|
def __init__(self):
|
|
22
|
-
super().__init__("/openapi/trade/option/order/preview", version='
|
|
22
|
+
super().__init__("/openapi/trade/option/order/preview", version='v3', method="POST", body_params={})
|
|
23
23
|
|
|
24
24
|
def set_new_orders(self, new_orders):
|
|
25
25
|
self.add_body_params("new_orders", new_orders)
|
|
@@ -16,7 +16,7 @@ from webull.core.request import ApiRequest
|
|
|
16
16
|
|
|
17
17
|
class PreviewOrderRequest(ApiRequest):
|
|
18
18
|
def __init__(self):
|
|
19
|
-
super().__init__("/openapi/trade/stock/order/preview", version='
|
|
19
|
+
super().__init__("/openapi/trade/stock/order/preview", version='v3', method="POST", body_params={})
|
|
20
20
|
|
|
21
21
|
def set_new_orders(self, new_orders):
|
|
22
22
|
self.add_body_params("new_orders", new_orders)
|
|
@@ -19,7 +19,7 @@ from webull.core.request import ApiRequest
|
|
|
19
19
|
|
|
20
20
|
class ReplaceOptionRequest(ApiRequest):
|
|
21
21
|
def __init__(self):
|
|
22
|
-
super().__init__("/openapi/trade/option/order/replace", version='
|
|
22
|
+
super().__init__("/openapi/trade/option/order/replace", version='v3', method="POST", body_params={})
|
|
23
23
|
|
|
24
24
|
def set_modify_orders(self, modify_orders):
|
|
25
25
|
self.add_body_params("modify_orders", modify_orders)
|
|
@@ -16,7 +16,7 @@ from webull.core.request import ApiRequest
|
|
|
16
16
|
|
|
17
17
|
class ReplaceOrderRequest(ApiRequest):
|
|
18
18
|
def __init__(self):
|
|
19
|
-
ApiRequest.__init__(self, "/openapi/trade/stock/order/replace", version='
|
|
19
|
+
ApiRequest.__init__(self, "/openapi/trade/stock/order/replace", version='v3', method="POST", body_params={})
|
|
20
20
|
|
|
21
21
|
def set_modify_orders(self, modify_orders):
|
|
22
22
|
self.add_body_params("modify_orders", modify_orders)
|
|
@@ -19,7 +19,7 @@ from webull.core.request import ApiRequest
|
|
|
19
19
|
|
|
20
20
|
class BatchPlaceOrderRequest(ApiRequest):
|
|
21
21
|
def __init__(self):
|
|
22
|
-
super().__init__("/
|
|
22
|
+
super().__init__("/trading/orders/batch-place", version='v3', method="POST", body_params={})
|
|
23
23
|
|
|
24
24
|
def set_account_id(self, account_id):
|
|
25
25
|
self.add_body_params("account_id", account_id)
|
|
@@ -18,7 +18,7 @@ from webull.core.request import ApiRequest
|
|
|
18
18
|
|
|
19
19
|
class CancelOrderRequest(ApiRequest):
|
|
20
20
|
def __init__(self):
|
|
21
|
-
ApiRequest.__init__(self, "/
|
|
21
|
+
ApiRequest.__init__(self, "/trading/orders/cancel", version='v3', method="POST", body_params={})
|
|
22
22
|
|
|
23
23
|
def set_account_id(self, account_id):
|
|
24
24
|
self.add_body_params("account_id", account_id)
|
|
@@ -17,7 +17,7 @@ from webull.core.request import ApiRequest
|
|
|
17
17
|
|
|
18
18
|
class OrderDetailRequest(ApiRequest):
|
|
19
19
|
def __init__(self):
|
|
20
|
-
ApiRequest.__init__(self, "/
|
|
20
|
+
ApiRequest.__init__(self, "/trading/orders/get", version='v3', method="GET", query_params={})
|
|
21
21
|
|
|
22
22
|
def set_account_id(self, account_id):
|
|
23
23
|
self.add_query_param("account_id", account_id)
|
|
@@ -16,8 +16,12 @@ from webull.core.request import ApiRequest
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class OrderHistoryRequest(ApiRequest):
|
|
19
|
+
"""
|
|
20
|
+
.. deprecated::
|
|
21
|
+
Use :class:`OrderHistoryRequestV2` instead.
|
|
22
|
+
"""
|
|
19
23
|
def __init__(self):
|
|
20
|
-
ApiRequest.__init__(self, "/
|
|
24
|
+
ApiRequest.__init__(self, "/trading/orders/historical-orders/list", version='v2', method="GET", query_params={})
|
|
21
25
|
|
|
22
26
|
def set_account_id(self, account_id):
|
|
23
27
|
self.add_query_param("account_id", account_id)
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Copyright 2022 Webull
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from webull.core.request import ApiRequest
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class OrderHistoryRequestV2(ApiRequest):
|
|
19
|
+
def __init__(self):
|
|
20
|
+
ApiRequest.__init__(self, "/trading/orders/historical-orders/list", version='v3', method="GET", query_params={})
|
|
21
|
+
|
|
22
|
+
def set_account_id(self, account_id):
|
|
23
|
+
self.add_query_param("account_id", account_id)
|
|
24
|
+
|
|
25
|
+
def set_start_time(self, start_time):
|
|
26
|
+
if start_time is not None:
|
|
27
|
+
self.add_query_param("start_time", start_time)
|
|
28
|
+
|
|
29
|
+
def set_end_time(self, end_time):
|
|
30
|
+
if end_time is not None:
|
|
31
|
+
self.add_query_param("end_time", end_time)
|
|
32
|
+
|
|
33
|
+
def set_pagination_key(self, pagination_key):
|
|
34
|
+
if pagination_key:
|
|
35
|
+
self.add_query_param("pagination_key", pagination_key)
|
|
@@ -16,8 +16,12 @@ from webull.core.request import ApiRequest
|
|
|
16
16
|
|
|
17
17
|
|
|
18
18
|
class OrderOpenRequest(ApiRequest):
|
|
19
|
+
"""
|
|
20
|
+
.. deprecated::
|
|
21
|
+
Use :class:`OrderOpenRequestV2` instead.
|
|
22
|
+
"""
|
|
19
23
|
def __init__(self):
|
|
20
|
-
ApiRequest.__init__(self, "/
|
|
24
|
+
ApiRequest.__init__(self, "/trading/orders/open-orders/list", version='v2', method="GET", query_params={})
|
|
21
25
|
|
|
22
26
|
def set_account_id(self, account_id):
|
|
23
27
|
self.add_query_param("account_id", account_id)
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Copyright 2022 Webull
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
# you may not use this file except in compliance with the License.
|
|
5
|
+
# You may obtain a copy of the License at
|
|
6
|
+
#
|
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
#
|
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
# See the License for the specific language governing permissions and
|
|
13
|
+
# limitations under the License.
|
|
14
|
+
|
|
15
|
+
from webull.core.request import ApiRequest
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class OrderOpenRequestV2(ApiRequest):
|
|
19
|
+
def __init__(self):
|
|
20
|
+
ApiRequest.__init__(self, "/trading/orders/open-orders/list", version='v3', method="GET", query_params={})
|
|
21
|
+
|
|
22
|
+
def set_account_id(self, account_id):
|
|
23
|
+
self.add_query_param("account_id", account_id)
|
|
24
|
+
|
|
25
|
+
def set_pagination_key(self, pagination_key):
|
|
26
|
+
if pagination_key:
|
|
27
|
+
self.add_query_param("pagination_key", pagination_key)
|
|
@@ -19,7 +19,7 @@ from webull.core.request import ApiRequest
|
|
|
19
19
|
|
|
20
20
|
class PlaceOrderRequest(ApiRequest):
|
|
21
21
|
def __init__(self):
|
|
22
|
-
super().__init__("/
|
|
22
|
+
super().__init__("/trading/orders/place", version='v3', method="POST", body_params={})
|
|
23
23
|
|
|
24
24
|
def set_new_orders(self, new_orders):
|
|
25
25
|
self.add_body_params("new_orders", new_orders)
|
|
@@ -19,7 +19,7 @@ from webull.core.request import ApiRequest
|
|
|
19
19
|
|
|
20
20
|
class PreviewOrderRequest(ApiRequest):
|
|
21
21
|
def __init__(self):
|
|
22
|
-
super().__init__("/
|
|
22
|
+
super().__init__("/trading/orders/preview", version='v3', method="POST", body_params={})
|
|
23
23
|
|
|
24
24
|
def set_new_orders(self, new_orders):
|
|
25
25
|
self.add_body_params("new_orders", new_orders)
|
|
@@ -18,7 +18,7 @@ from webull.core.request import ApiRequest
|
|
|
18
18
|
|
|
19
19
|
class ReplaceOrderRequest(ApiRequest):
|
|
20
20
|
def __init__(self):
|
|
21
|
-
ApiRequest.__init__(self, "/
|
|
21
|
+
ApiRequest.__init__(self, "/trading/orders/replace", version='v3', method="POST", body_params={})
|
|
22
22
|
|
|
23
23
|
def set_modify_orders(self, modify_orders):
|
|
24
24
|
self.add_body_params("modify_orders", modify_orders)
|
webull/trade/trade/activity.py
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
# coding=utf-8
|
|
16
16
|
|
|
17
17
|
from webull.trade.request.get_activities_request import GetActivitiesRequest
|
|
18
|
+
from webull.trade.request.get_activities_request_v2 import GetActivitiesRequestV2
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
class Activity:
|
|
@@ -24,6 +25,11 @@ class Activity:
|
|
|
24
25
|
def get_activities(self, account_id, activity_types=None, start_time=None, end_time=None,
|
|
25
26
|
last_activity_id=None, page_size=10):
|
|
26
27
|
"""
|
|
28
|
+
.. deprecated::
|
|
29
|
+
Use :meth:`list_activities` instead.
|
|
30
|
+
|
|
31
|
+
The x-version header distinguishes the legacy and new pagination protocols for this path.
|
|
32
|
+
|
|
27
33
|
Query cash activities by type with pagination support.
|
|
28
34
|
This interface is currently supported only for Webull US.
|
|
29
35
|
|
|
@@ -47,3 +53,30 @@ class Activity:
|
|
|
47
53
|
get_activities_request.set_page_size(page_size)
|
|
48
54
|
response = self.client.get_response(get_activities_request)
|
|
49
55
|
return response
|
|
56
|
+
|
|
57
|
+
def list_activities(self, account_id, activity_types=None, start_time=None, end_time=None,
|
|
58
|
+
pagination_key=None):
|
|
59
|
+
"""
|
|
60
|
+
The x-version header distinguishes the legacy and new pagination protocols for this path.
|
|
61
|
+
|
|
62
|
+
Query cash activities by type with pagination support.
|
|
63
|
+
This interface is currently supported only for Webull US.
|
|
64
|
+
|
|
65
|
+
:param account_id: Account ID
|
|
66
|
+
:param activity_types: Activity types filter, comma-separated string (optional)
|
|
67
|
+
:param start_time: Start time filter (optional)
|
|
68
|
+
:param end_time: End time filter (optional)
|
|
69
|
+
:param pagination_key: Pagination key from the previous page response; not returned on the last page.
|
|
70
|
+
"""
|
|
71
|
+
get_activities_request = GetActivitiesRequestV2()
|
|
72
|
+
get_activities_request.set_account_id(account_id)
|
|
73
|
+
if activity_types is not None:
|
|
74
|
+
get_activities_request.set_activity_types(activity_types)
|
|
75
|
+
if start_time is not None:
|
|
76
|
+
get_activities_request.set_start_time(start_time)
|
|
77
|
+
if end_time is not None:
|
|
78
|
+
get_activities_request.set_end_time(end_time)
|
|
79
|
+
if pagination_key is not None:
|
|
80
|
+
get_activities_request.set_pagination_key(pagination_key)
|
|
81
|
+
response = self.client.get_response(get_activities_request)
|
|
82
|
+
return response
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
from webull.trade.request.v2.get_account_balance_request import AccountBalanceRequest
|
|
17
17
|
from webull.trade.request.v2.get_account_list_request import GetAccountListRequest
|
|
18
18
|
from webull.trade.request.v2.get_account_position_details_request import AccountPositionDetailsRequest
|
|
19
|
+
from webull.trade.request.v2.get_account_position_details_request_v2 import AccountPositionDetailsRequestV2
|
|
19
20
|
from webull.trade.request.v2.get_account_positions_request import AccountPositionsRequest
|
|
20
21
|
|
|
21
22
|
|
|
@@ -54,6 +55,11 @@ class AccountV2:
|
|
|
54
55
|
|
|
55
56
|
def get_account_position_details(self, account_id, instrument_id, page_size=None, last_id=None):
|
|
56
57
|
"""
|
|
58
|
+
.. deprecated::
|
|
59
|
+
Use :meth:`list_position_details` instead.
|
|
60
|
+
|
|
61
|
+
The x-version header distinguishes the legacy and new pagination protocols for this path.
|
|
62
|
+
|
|
57
63
|
This interface is currently supported only for Webull JP.
|
|
58
64
|
Support for other regions will be available in future updates.
|
|
59
65
|
"""
|
|
@@ -64,3 +70,21 @@ class AccountV2:
|
|
|
64
70
|
account_position_details_request.set_last_id(last_id)
|
|
65
71
|
response = self.client.get_response(account_position_details_request)
|
|
66
72
|
return response
|
|
73
|
+
|
|
74
|
+
def list_position_details(self, account_id, instrument_id, pagination_key=None):
|
|
75
|
+
"""
|
|
76
|
+
The x-version header distinguishes the legacy and new pagination protocols for this path.
|
|
77
|
+
|
|
78
|
+
This interface is currently supported only for Webull JP.
|
|
79
|
+
Support for other regions will be available in future updates.
|
|
80
|
+
|
|
81
|
+
:param account_id: Account ID
|
|
82
|
+
:param instrument_id: Instrument ID
|
|
83
|
+
:param pagination_key: Pagination key from the previous page response; not returned on the last page.
|
|
84
|
+
"""
|
|
85
|
+
account_position_details_request = AccountPositionDetailsRequestV2()
|
|
86
|
+
account_position_details_request.set_account_id(account_id)
|
|
87
|
+
account_position_details_request.set_instrument_id(instrument_id)
|
|
88
|
+
account_position_details_request.set_pagination_key(pagination_key)
|
|
89
|
+
response = self.client.get_response(account_position_details_request)
|
|
90
|
+
return response
|
|
@@ -19,8 +19,11 @@ from webull.trade.request.v3.replace_order_request import ReplaceOrderRequest
|
|
|
19
19
|
from webull.trade.request.v3.cancel_order_request import CancelOrderRequest
|
|
20
20
|
from webull.trade.request.v3.get_order_detail_request import OrderDetailRequest
|
|
21
21
|
from webull.trade.request.v3.get_order_history_request import OrderHistoryRequest
|
|
22
|
+
from webull.trade.request.v3.get_order_history_request_v2 import OrderHistoryRequestV2
|
|
22
23
|
from webull.trade.request.v3.get_order_open_request import OrderOpenRequest
|
|
24
|
+
from webull.trade.request.v3.get_order_open_request_v2 import OrderOpenRequestV2
|
|
23
25
|
from webull.trade.request.v2.get_order_executions_request import GetOrderExecutionsRequest
|
|
26
|
+
from webull.trade.request.v2.get_order_executions_request_v2 import GetOrderExecutionsRequestV2
|
|
24
27
|
|
|
25
28
|
|
|
26
29
|
class OrderOperationV3:
|
|
@@ -105,9 +108,14 @@ class OrderOperationV3:
|
|
|
105
108
|
|
|
106
109
|
def get_order_history(self, account_id, page_size=None, start_date=None, end_date=None, last_client_order_id=None):
|
|
107
110
|
"""
|
|
111
|
+
.. deprecated::
|
|
112
|
+
Use :meth:`list_order_history` instead.
|
|
113
|
+
|
|
108
114
|
This interface is currently supported only for Webull HK, Webull US, Webull JP, Webull SG, Webull TH, Webull AU, Webull MY, Webull UK, Webull BR, Webull MX, Webull ZA, Webull EU.
|
|
109
115
|
Support for other regions will be available in future updates.
|
|
110
116
|
|
|
117
|
+
The x-version header distinguishes the legacy and new pagination protocols for this path.
|
|
118
|
+
|
|
111
119
|
Historical orders. If they are group orders, will be returned together,
|
|
112
120
|
and the number of orders returned on one-page may exceed the page_size.
|
|
113
121
|
|
|
@@ -136,11 +144,42 @@ class OrderOperationV3:
|
|
|
136
144
|
response = self.client.get_response(order_history_request)
|
|
137
145
|
return response
|
|
138
146
|
|
|
147
|
+
def list_order_history(self, account_id, start_time=None, end_time=None, pagination_key=None):
|
|
148
|
+
"""
|
|
149
|
+
This interface is currently supported only for Webull HK, Webull US, Webull JP, Webull SG, Webull TH, Webull AU, Webull MY, Webull UK, Webull BR, Webull MX, Webull ZA, Webull EU.
|
|
150
|
+
Support for other regions will be available in future updates.
|
|
151
|
+
|
|
152
|
+
The x-version header distinguishes the legacy and new pagination protocols for this path.
|
|
153
|
+
|
|
154
|
+
Historical orders. If they are group orders, will be returned together,
|
|
155
|
+
and the number of orders returned on one-page may exceed the page size.
|
|
156
|
+
|
|
157
|
+
:param account_id: Account ID
|
|
158
|
+
:param start_time: Start time, format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.
|
|
159
|
+
:param end_time: End time, format: yyyy-MM-dd'T'HH:mm:ss.SSSZ.
|
|
160
|
+
:param pagination_key: Pagination key from the previous page response; not returned on the last page.
|
|
161
|
+
"""
|
|
162
|
+
order_history_request = OrderHistoryRequestV2()
|
|
163
|
+
order_history_request.set_account_id(account_id=account_id)
|
|
164
|
+
if start_time:
|
|
165
|
+
order_history_request.set_start_time(start_time=start_time)
|
|
166
|
+
if end_time:
|
|
167
|
+
order_history_request.set_end_time(end_time=end_time)
|
|
168
|
+
if pagination_key:
|
|
169
|
+
order_history_request.set_pagination_key(pagination_key=pagination_key)
|
|
170
|
+
response = self.client.get_response(order_history_request)
|
|
171
|
+
return response
|
|
172
|
+
|
|
139
173
|
def get_order_open(self, account_id, page_size=None, last_client_order_id=None):
|
|
140
174
|
"""
|
|
175
|
+
.. deprecated::
|
|
176
|
+
Use :meth:`list_order_open` instead.
|
|
177
|
+
|
|
141
178
|
This interface is currently supported only for Webull HK, Webull US, Webull JP, Webull SG, Webull TH, Webull AU, Webull MY, Webull UK, Webull BR, Webull MX, Webull ZA, Webull EU.
|
|
142
179
|
Support for other regions will be available in future updates.
|
|
143
180
|
|
|
181
|
+
The x-version header distinguishes the legacy and new pagination protocols for this path.
|
|
182
|
+
|
|
144
183
|
Paging query pending orders.
|
|
145
184
|
|
|
146
185
|
:param account_id: Account ID
|
|
@@ -162,11 +201,36 @@ class OrderOperationV3:
|
|
|
162
201
|
response = self.client.get_response(order_open_request)
|
|
163
202
|
return response
|
|
164
203
|
|
|
165
|
-
def
|
|
204
|
+
def list_order_open(self, account_id, pagination_key=None):
|
|
205
|
+
"""
|
|
206
|
+
This interface is currently supported only for Webull HK, Webull US, Webull JP, Webull SG, Webull TH, Webull AU, Webull MY, Webull UK, Webull BR, Webull MX, Webull ZA, Webull EU.
|
|
207
|
+
Support for other regions will be available in future updates.
|
|
208
|
+
|
|
209
|
+
The x-version header distinguishes the legacy and new pagination protocols for this path.
|
|
210
|
+
|
|
211
|
+
Paging query pending orders.
|
|
212
|
+
|
|
213
|
+
:param account_id: Account ID
|
|
214
|
+
:param pagination_key: Pagination key from the previous page response; not returned on the last page.
|
|
215
|
+
"""
|
|
216
|
+
order_open_request = OrderOpenRequestV2()
|
|
217
|
+
order_open_request.set_account_id(account_id=account_id)
|
|
218
|
+
if pagination_key:
|
|
219
|
+
order_open_request.set_pagination_key(pagination_key=pagination_key)
|
|
220
|
+
response = self.client.get_response(order_open_request)
|
|
221
|
+
return response
|
|
222
|
+
|
|
223
|
+
def get_order_executions(self, account_id, client_order_id=None, start_date=None, end_date=None,
|
|
224
|
+
last_execution_id=None, page_size=None):
|
|
166
225
|
"""
|
|
226
|
+
.. deprecated::
|
|
227
|
+
Use :meth:`list_order_executions` instead.
|
|
228
|
+
|
|
167
229
|
This interface is currently supported only for Webull HK.
|
|
168
230
|
Support for other regions will be available in future updates.
|
|
169
231
|
|
|
232
|
+
The x-version header distinguishes the legacy and new pagination protocols for this path.
|
|
233
|
+
|
|
170
234
|
Query order execution records within a specified date range.
|
|
171
235
|
|
|
172
236
|
:param account_id: Account ID (required).
|
|
@@ -191,3 +255,32 @@ class OrderOperationV3:
|
|
|
191
255
|
request.set_page_size(page_size)
|
|
192
256
|
response = self.client.get_response(request)
|
|
193
257
|
return response
|
|
258
|
+
|
|
259
|
+
def list_order_executions(self, account_id, client_order_id=None, start_date=None, end_date=None,
|
|
260
|
+
pagination_key=None):
|
|
261
|
+
"""
|
|
262
|
+
This interface is currently supported only for Webull HK.
|
|
263
|
+
Support for other regions will be available in future updates.
|
|
264
|
+
|
|
265
|
+
The x-version header distinguishes the legacy and new pagination protocols for this path.
|
|
266
|
+
|
|
267
|
+
Query order execution records within a specified date range.
|
|
268
|
+
|
|
269
|
+
:param account_id: Account ID (required).
|
|
270
|
+
:param client_order_id: The 3rd party order ID.
|
|
271
|
+
:param start_date: Start date in the format of yyyy-MM-dd.
|
|
272
|
+
:param end_date: End date in the format of yyyy-MM-dd.
|
|
273
|
+
:param pagination_key: Pagination key from previous response for next page.
|
|
274
|
+
"""
|
|
275
|
+
request = GetOrderExecutionsRequestV2()
|
|
276
|
+
request.set_account_id(account_id)
|
|
277
|
+
if start_date:
|
|
278
|
+
request.set_start_date(start_date)
|
|
279
|
+
if end_date:
|
|
280
|
+
request.set_end_date(end_date)
|
|
281
|
+
if client_order_id:
|
|
282
|
+
request.set_client_order_id(client_order_id)
|
|
283
|
+
if pagination_key is not None:
|
|
284
|
+
request.set_pagination_key(pagination_key)
|
|
285
|
+
response = self.client.get_response(request)
|
|
286
|
+
return response
|
webull/trade/trade_client.py
CHANGED
|
@@ -22,7 +22,7 @@ from webull.trade.trade.trade_calendar import TradeCalendar
|
|
|
22
22
|
from webull.trade.trade.trade_instrument import TradeInstrument
|
|
23
23
|
from webull.trade.trade.v2.account_info_v2 import AccountV2
|
|
24
24
|
from webull.trade.trade.v2.order_operation_v2 import OrderOperationV2
|
|
25
|
-
from webull.trade.trade.v3.
|
|
25
|
+
from webull.trade.trade.v3.order_operation_v3 import OrderOperationV3
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
class TradeClient:
|