webull-openapi-python-sdk 1.0.2__tar.gz → 1.0.4__tar.gz
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.
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/PKG-INFO +1 -1
- webull_openapi_python_sdk-1.0.4/samples/__init__.py +1 -0
- webull_openapi_python_sdk-1.0.4/samples/trade/trade_client_v2.py +302 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/samples/trade/trade_event_client.py +13 -11
- webull_openapi_python_sdk-1.0.4/webull/__init__.py +1 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/__init__.py +1 -1
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/http/initializer/client_initializer.py +43 -7
- webull_openapi_python_sdk-1.0.4/webull/core/http/initializer/config/bean/query_config_request.py +41 -0
- webull_openapi_python_sdk-1.0.4/webull/core/http/initializer/config/config_operation.py +49 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/http/initializer/token/bean/check_token_request.py +1 -1
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/http/initializer/token/bean/create_token_request.py +1 -1
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/http/initializer/token/bean/refresh_token_request.py +1 -1
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/http/initializer/token/token_operation.py +0 -2
- webull_openapi_python_sdk-1.0.4/webull/data/__init__.py +3 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/data_client.py +3 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/request/get_batch_historical_bars_request.py +1 -1
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/request/get_historical_bars_request.py +1 -1
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/request/get_instruments_request.py +1 -1
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/request/get_quotes_request.py +1 -1
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/request/get_snapshot_request.py +1 -1
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/request/get_tick_request.py +1 -1
- webull_openapi_python_sdk-1.0.4/webull/trade/__init__.py +2 -0
- webull_openapi_python_sdk-1.0.4/webull/trade/request/palce_order_request.py +92 -0
- webull_openapi_python_sdk-1.0.2/webull/trade/request/palce_order_request.py → webull_openapi_python_sdk-1.0.4/webull/trade/request/place_order_request.py +1 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/v2/cancel_option_request.py +2 -2
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/v2/cancel_order_request.py +2 -2
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/v2/get_account_balance_request.py +1 -1
- webull_openapi_python_sdk-1.0.4/webull/trade/request/v2/get_account_list.py +26 -0
- webull_openapi_python_sdk-1.0.2/webull/trade/request/v2/get_account_list.py → webull_openapi_python_sdk-1.0.4/webull/trade/request/v2/get_account_list_request.py +1 -1
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/v2/get_account_positions_request.py +1 -1
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/v2/get_order_detail_request.py +1 -1
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/v2/get_order_history_request.py +5 -2
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/v2/get_order_open_request.py +5 -2
- webull_openapi_python_sdk-1.0.4/webull/trade/request/v2/palce_order_request.py +44 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/v2/place_option_request.py +7 -22
- webull_openapi_python_sdk-1.0.4/webull/trade/request/v2/place_order_request.py +44 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/v2/preview_option_request.py +6 -2
- webull_openapi_python_sdk-1.0.4/webull/trade/request/v2/preview_order_request.py +29 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/v2/replace_option_request.py +6 -2
- webull_openapi_python_sdk-1.0.4/webull/trade/request/v2/replace_order_request.py +29 -0
- webull_openapi_python_sdk-1.0.4/webull/trade/trade/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/trade/order_operation.py +5 -2
- webull_openapi_python_sdk-1.0.4/webull/trade/trade/v2/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/trade/v2/account_info_v2.py +8 -11
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/trade/v2/order_operation_v2.py +95 -69
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull_openapi_python_sdk.egg-info/PKG-INFO +1 -1
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull_openapi_python_sdk.egg-info/SOURCES.txt +7 -0
- webull_openapi_python_sdk-1.0.2/samples/__init__.py +0 -1
- webull_openapi_python_sdk-1.0.2/samples/trade/trade_client_v2.py +0 -185
- webull_openapi_python_sdk-1.0.2/webull/__init__.py +0 -1
- webull_openapi_python_sdk-1.0.2/webull/data/__init__.py +0 -3
- webull_openapi_python_sdk-1.0.2/webull/trade/__init__.py +0 -2
- webull_openapi_python_sdk-1.0.2/webull/trade/request/v2/palce_order_request.py +0 -87
- webull_openapi_python_sdk-1.0.2/webull/trade/request/v2/preview_order_request.py +0 -59
- webull_openapi_python_sdk-1.0.2/webull/trade/request/v2/replace_order_request.py +0 -57
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/ChangeLog.txt +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/LICENSE +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/MANIFEST.in +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/NOTICE +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/README.rst +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/samples/data/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/samples/data/data_client.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/samples/data/data_streaming_client.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/samples/data/data_streaming_client_async.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/samples/trade/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/samples/trade/trade_client.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/setup.cfg +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/setup.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/auth/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/auth/algorithm/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/auth/algorithm/sha_hmac1.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/auth/algorithm/sha_hmac256.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/auth/composer/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/auth/composer/default_signature_composer.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/auth/credentials.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/auth/signers/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/auth/signers/app_key_signer.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/auth/signers/signer.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/auth/signers/signer_factory.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/cache/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/client.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/common/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/common/api_type.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/common/easy_enum.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/common/region.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/compat.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/context/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/context/request_context_holder.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/data/endpoints.json +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/data/retry_config.json +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/endpoint/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/endpoint/chained_endpoint_resolver.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/endpoint/default_endpoint_resolver.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/endpoint/local_config_regional_endpoint_resolver.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/endpoint/resolver_endpoint_request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/endpoint/user_customized_endpoint_resolver.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/exception/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/exception/error_code.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/exception/error_msg.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/exception/exceptions.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/headers.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/http/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/http/initializer/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/core/http/initializer/token → webull_openapi_python_sdk-1.0.4/webull/core/http/initializer/config}/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/core/http/initializer/token → webull_openapi_python_sdk-1.0.4/webull/core/http/initializer/config}/bean/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/core/retry → webull_openapi_python_sdk-1.0.4/webull/core/http/initializer/token}/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/core/utils → webull_openapi_python_sdk-1.0.4/webull/core/http/initializer/token/bean}/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/http/initializer/token/bean/access_token.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/http/initializer/token/token_manager.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/http/method_type.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/http/protocol_type.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/http/request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/http/response.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/request.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/core/vendored → webull_openapi_python_sdk-1.0.4/webull/core/retry}/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/retry/backoff_strategy.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/retry/retry_condition.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/retry/retry_policy.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/retry/retry_policy_context.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/core/vendored/requests/packages/urllib3/contrib → webull_openapi_python_sdk-1.0.4/webull/core/utils}/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/utils/common.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/utils/data.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/utils/desensitize.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/utils/validation.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport → webull_openapi_python_sdk-1.0.4/webull/core/vendored}/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/__version__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/_internal_utils.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/adapters.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/api.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/auth.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/certs.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/compat.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/cookies.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/exceptions.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/help.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/hooks.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/models.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/certifi/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/certifi/__main__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/certifi/cacert.pem +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/certifi/core.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/big5freq.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/big5prober.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/chardistribution.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/charsetgroupprober.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/charsetprober.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/cli/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/cli/chardetect.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/codingstatemachine.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/compat.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/cp949prober.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/enums.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/escprober.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/escsm.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/eucjpprober.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/euckrfreq.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/euckrprober.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/euctwfreq.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/euctwprober.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/gb2312freq.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/gb2312prober.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/hebrewprober.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/jisfreq.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/jpcntx.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/langbulgarianmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/langcyrillicmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/langgreekmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/langhebrewmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/langhungarianmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/langthaimodel.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/langturkishmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/latin1prober.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/mbcharsetprober.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/mbcsgroupprober.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/mbcssm.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/sbcharsetprober.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/sbcsgroupprober.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/sjisprober.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/universaldetector.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/utf8prober.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/chardet/version.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/_collections.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/connection.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/connectionpool.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/core/vendored/requests/packages/urllib3/packages/backports → webull_openapi_python_sdk-1.0.4/webull/core/vendored/requests/packages/urllib3/contrib}/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/contrib/_appengine_environ.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/data/common → webull_openapi_python_sdk-1.0.4/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport}/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/bindings.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/low_level.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/contrib/appengine.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/contrib/ntlmpool.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/contrib/pyopenssl.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/contrib/securetransport.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/contrib/socks.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/exceptions.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/fields.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/filepost.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/packages/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/data/internal → webull_openapi_python_sdk-1.0.4/webull/core/vendored/requests/packages/urllib3/packages/backports}/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/packages/backports/makefile.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/packages/ordered_dict.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/packages/six.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/packages/socks.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/poolmanager.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/response.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/util/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/util/connection.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/util/queue.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/util/request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/util/response.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/util/retry.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/util/selectors.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/util/ssl_.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/util/timeout.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/util/url.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages/urllib3/util/wait.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/packages.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/sessions.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/status_codes.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/structures.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/requests/utils.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/core/vendored/six.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/data/quotes → webull_openapi_python_sdk-1.0.4/webull/data/common}/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/common/category.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/common/connect_ack.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/common/direction.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/common/exchange_code.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/common/exercise_style.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/common/expiration_cycle.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/common/instrument_status.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/common/option_type.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/common/subscribe_type.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/common/timespan.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/data_streaming_client.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/data/quotes/subscribe → webull_openapi_python_sdk-1.0.4/webull/data/internal}/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/internal/default_retry_policy.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/internal/exceptions.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/internal/quotes_client.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/internal/quotes_decoder.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/internal/quotes_payload_decoder.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/internal/quotes_topic.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/data/request → webull_openapi_python_sdk-1.0.4/webull/data/quotes}/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/quotes/instrument.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/quotes/market_data.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/quotes/market_streaming_data.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/trade/common → webull_openapi_python_sdk-1.0.4/webull/data/quotes/subscribe}/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/quotes/subscribe/ask_bid_result.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/quotes/subscribe/basic_result.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/quotes/subscribe/broker_result.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/quotes/subscribe/message_pb2.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/quotes/subscribe/order_result.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/quotes/subscribe/payload_type.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/quotes/subscribe/quote_decoder.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/quotes/subscribe/quote_result.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/quotes/subscribe/snapshot_decoder.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/quotes/subscribe/snapshot_result.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/quotes/subscribe/tick_decoder.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/quotes/subscribe/tick_result.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/trade/events → webull_openapi_python_sdk-1.0.4/webull/data/request}/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/request/get_corp_action_request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/request/get_eod_bars_request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/request/subscribe_request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/data/request/unsubscribe_request.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/trade/request → webull_openapi_python_sdk-1.0.4/webull/trade/common}/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/common/account_type.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/common/category.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/common/combo_ticker_type.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/common/combo_type.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/common/currency.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/common/forbid_reason.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/common/instrument_type.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/common/markets.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/common/order_entrust_type.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/common/order_side.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/common/order_status.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/common/order_tif.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/common/order_type.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/common/trade_policy.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/common/trading_date_type.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/common/trailing_type.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/trade/request/v2 → webull_openapi_python_sdk-1.0.4/webull/trade/events}/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/events/default_retry_policy.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/events/events_pb2.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/events/events_pb2_grpc.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/events/signature_composer.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/events/types.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/trade/trade → webull_openapi_python_sdk-1.0.4/webull/trade/request}/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/cancel_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/get_account_balance_request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/get_account_positions_request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/get_account_profile_request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/get_app_subscriptions.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/get_open_orders_request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/get_order_detail_request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/get_today_orders_request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/get_trade_calendar_request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/get_trade_instrument_detail_request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/get_trade_security_detail_request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/get_tradeable_instruments_request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/place_order_request_v2.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/replace_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/request/replace_order_request_v2.py +0 -0
- {webull_openapi_python_sdk-1.0.2/webull/trade/trade → webull_openapi_python_sdk-1.0.4/webull/trade/request}/v2/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/trade/account_info.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/trade/trade_calendar.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/trade/trade_instrument.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/trade_client.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull/trade/trade_events_client.py +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull_openapi_python_sdk.egg-info/dependency_links.txt +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull_openapi_python_sdk.egg-info/requires.txt +0 -0
- {webull_openapi_python_sdk-1.0.2 → webull_openapi_python_sdk-1.0.4}/webull_openapi_python_sdk.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.0.4"
|
|
@@ -0,0 +1,302 @@
|
|
|
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
|
+
import json
|
|
16
|
+
import uuid
|
|
17
|
+
from time import sleep
|
|
18
|
+
|
|
19
|
+
from webull.core.client import ApiClient
|
|
20
|
+
from webull.trade.trade_client import TradeClient
|
|
21
|
+
|
|
22
|
+
optional_api_endpoint = "<api_endpoint>"
|
|
23
|
+
your_app_key = "<your_app_key>"
|
|
24
|
+
your_app_secret = "<your_app_secret>"
|
|
25
|
+
region_id = "<region_id>"
|
|
26
|
+
account_id = "<your_account_id>"
|
|
27
|
+
api_client = ApiClient(your_app_key, your_app_secret, region_id)
|
|
28
|
+
api_client.add_endpoint(region_id, optional_api_endpoint)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
if __name__ == '__main__':
|
|
32
|
+
trade_client = TradeClient(api_client)
|
|
33
|
+
|
|
34
|
+
res = trade_client.account_v2.get_account_list()
|
|
35
|
+
if res.status_code == 200:
|
|
36
|
+
print('get account list:', res.json())
|
|
37
|
+
|
|
38
|
+
res = trade_client.account_v2.get_account_balance(account_id)
|
|
39
|
+
if res.status_code == 200:
|
|
40
|
+
print('get account balance res:', res.json())
|
|
41
|
+
|
|
42
|
+
res = trade_client.account_v2.get_account_position(account_id)
|
|
43
|
+
if res.status_code == 200:
|
|
44
|
+
print('get account position res:', res.json())
|
|
45
|
+
|
|
46
|
+
# simple order
|
|
47
|
+
client_order_id = uuid.uuid4().hex
|
|
48
|
+
print('client order id:', client_order_id)
|
|
49
|
+
new_simple_orders = [
|
|
50
|
+
{
|
|
51
|
+
"combo_type": "NORMAL",
|
|
52
|
+
"client_order_id": client_order_id,
|
|
53
|
+
"symbol": "AAPL",
|
|
54
|
+
"instrument_type": "EQUITY",
|
|
55
|
+
"market": "US",
|
|
56
|
+
"order_type": "LIMIT",
|
|
57
|
+
"limit_price": "188",
|
|
58
|
+
"quantity": "1",
|
|
59
|
+
"support_trading_session": "N",
|
|
60
|
+
"side": "BUY",
|
|
61
|
+
"time_in_force": "DAY",
|
|
62
|
+
"entrust_type": "QTY"
|
|
63
|
+
}
|
|
64
|
+
]
|
|
65
|
+
|
|
66
|
+
res = trade_client.order_v2.preview_order(account_id, new_simple_orders)
|
|
67
|
+
if res.status_code == 200:
|
|
68
|
+
print('preview order res:', res.json())
|
|
69
|
+
|
|
70
|
+
res = trade_client.order_v2.place_order(account_id, new_simple_orders)
|
|
71
|
+
if res.status_code == 200:
|
|
72
|
+
print('place order res:', res.json())
|
|
73
|
+
sleep(3)
|
|
74
|
+
|
|
75
|
+
modify_simple_orders = [
|
|
76
|
+
{
|
|
77
|
+
"client_order_id": client_order_id,
|
|
78
|
+
"quantity": "100",
|
|
79
|
+
"limit_price": "200"
|
|
80
|
+
}
|
|
81
|
+
]
|
|
82
|
+
res = trade_client.order_v2.replace_order(account_id, modify_simple_orders)
|
|
83
|
+
if res.status_code == 200:
|
|
84
|
+
print('replace order res:', res.json())
|
|
85
|
+
sleep(3)
|
|
86
|
+
|
|
87
|
+
res = trade_client.order_v2.cancel_order(account_id, client_order_id)
|
|
88
|
+
if res.status_code == 200:
|
|
89
|
+
print('cancel order res:', res.json())
|
|
90
|
+
|
|
91
|
+
res = trade_client.order_v2.get_order_open(account_id=account_id)
|
|
92
|
+
if res.status_code == 200:
|
|
93
|
+
print("order_open_res=" + json.dumps(res.json(), indent=4))
|
|
94
|
+
|
|
95
|
+
res = trade_client.order_v2.get_order_history(account_id)
|
|
96
|
+
if res.status_code == 200:
|
|
97
|
+
print('get order history res:', res.json())
|
|
98
|
+
|
|
99
|
+
res = trade_client.order_v2.get_order_detail(account_id, client_order_id)
|
|
100
|
+
if res.status_code == 200:
|
|
101
|
+
print('get order detail res:', res.json())
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
# Combo Order
|
|
106
|
+
master_client_order_id = uuid.uuid4().hex
|
|
107
|
+
stop_profit_client_order_id = uuid.uuid4().hex
|
|
108
|
+
stop_loss_client_order_id = uuid.uuid4().hex
|
|
109
|
+
print('master_client_order_id:', master_client_order_id)
|
|
110
|
+
print('stop_profit_client_order_id:', stop_profit_client_order_id)
|
|
111
|
+
print('stop_loss_client_order_id:', stop_loss_client_order_id)
|
|
112
|
+
new_combo_orders = [
|
|
113
|
+
{
|
|
114
|
+
"client_order_id": master_client_order_id,
|
|
115
|
+
"combo_type": "MASTER",
|
|
116
|
+
"symbol": "F",
|
|
117
|
+
"instrument_type": "EQUITY",
|
|
118
|
+
"market": "US",
|
|
119
|
+
"order_type": "LIMIT",
|
|
120
|
+
"quantity": "1",
|
|
121
|
+
"support_trading_session": "N",
|
|
122
|
+
"limit_price": "10.5",
|
|
123
|
+
"side": "BUY",
|
|
124
|
+
"entrust_type": "QTY",
|
|
125
|
+
"time_in_force": "DAY"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"client_order_id": stop_profit_client_order_id,
|
|
129
|
+
"combo_type": "STOP_PROFIT",
|
|
130
|
+
"symbol": "F",
|
|
131
|
+
"instrument_type": "EQUITY",
|
|
132
|
+
"market": "US",
|
|
133
|
+
"order_type": "LIMIT",
|
|
134
|
+
"quantity": "1",
|
|
135
|
+
"support_trading_session": "N",
|
|
136
|
+
"limit_price": "11.5",
|
|
137
|
+
"side": "SELL",
|
|
138
|
+
"entrust_type": "QTY",
|
|
139
|
+
"time_in_force": "DAY"
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"client_order_id": stop_loss_client_order_id,
|
|
143
|
+
"combo_type": "STOP_LOSS",
|
|
144
|
+
"symbol": "F",
|
|
145
|
+
"instrument_type": "EQUITY",
|
|
146
|
+
"market": "US",
|
|
147
|
+
"order_type": "STOP_LOSS",
|
|
148
|
+
"quantity": "1",
|
|
149
|
+
"support_trading_session": "N",
|
|
150
|
+
"stop_price": "10",
|
|
151
|
+
"side": "SELL",
|
|
152
|
+
"entrust_type": "QTY",
|
|
153
|
+
"time_in_force": "DAY"
|
|
154
|
+
}
|
|
155
|
+
]
|
|
156
|
+
|
|
157
|
+
res = trade_client.order_v2.preview_order(account_id, new_combo_orders)
|
|
158
|
+
if res.status_code == 200:
|
|
159
|
+
print('preview combo order res:', res.json())
|
|
160
|
+
|
|
161
|
+
res = trade_client.order_v2.place_order(account_id, new_combo_orders)
|
|
162
|
+
if res.status_code == 200:
|
|
163
|
+
print('place combo order res:', res.json())
|
|
164
|
+
sleep(3)
|
|
165
|
+
|
|
166
|
+
modify_combo_orders = [
|
|
167
|
+
{
|
|
168
|
+
"client_order_id": master_client_order_id,
|
|
169
|
+
"quantity": "2"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"client_order_id": stop_profit_client_order_id,
|
|
173
|
+
"quantity": "2"
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
"client_order_id": stop_loss_client_order_id,
|
|
177
|
+
"quantity": "2"
|
|
178
|
+
}
|
|
179
|
+
]
|
|
180
|
+
res = trade_client.order_v2.replace_order(account_id, modify_combo_orders)
|
|
181
|
+
if res.status_code == 200:
|
|
182
|
+
print('replace combo order res:', res.json())
|
|
183
|
+
sleep(3)
|
|
184
|
+
|
|
185
|
+
res = trade_client.order_v2.cancel_order(account_id, master_client_order_id)
|
|
186
|
+
if res.status_code == 200:
|
|
187
|
+
print('cancel master order res:', res.json())
|
|
188
|
+
|
|
189
|
+
res = trade_client.order_v2.get_order_history(account_id)
|
|
190
|
+
if res.status_code == 200:
|
|
191
|
+
print('get order history res:', res.json())
|
|
192
|
+
|
|
193
|
+
res = trade_client.order_v2.get_order_open(account_id=account_id)
|
|
194
|
+
if res.status_code == 200:
|
|
195
|
+
print("order_open_res=" + json.dumps(res.json(), indent=4))
|
|
196
|
+
|
|
197
|
+
res = trade_client.order_v2.get_order_detail(account_id, master_client_order_id)
|
|
198
|
+
if res.status_code == 200:
|
|
199
|
+
print('get master order detail res:', res.json())
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
# Options
|
|
203
|
+
# For option order inquiries, please use the V2 query interface: api.order_v2.get_order_detail(account_id, client_order_id).
|
|
204
|
+
client_order_id = uuid.uuid4().hex
|
|
205
|
+
option_new_orders = [
|
|
206
|
+
{
|
|
207
|
+
"client_order_id": client_order_id,
|
|
208
|
+
"combo_type": "NORMAL",
|
|
209
|
+
"order_type": "LIMIT",
|
|
210
|
+
"quantity": "1",
|
|
211
|
+
"limit_price": "21.25",
|
|
212
|
+
"option_strategy": "SINGLE",
|
|
213
|
+
"side": "BUY",
|
|
214
|
+
"time_in_force": "GTC",
|
|
215
|
+
"entrust_type": "QTY",
|
|
216
|
+
"legs": [
|
|
217
|
+
{
|
|
218
|
+
"side": "BUY",
|
|
219
|
+
"quantity": "1",
|
|
220
|
+
"symbol": "TSLA",
|
|
221
|
+
"strike_price": "400",
|
|
222
|
+
"option_expire_date": "2025-12-26",
|
|
223
|
+
"instrument_type": "OPTION",
|
|
224
|
+
"option_type": "CALL",
|
|
225
|
+
"market": "US"
|
|
226
|
+
}
|
|
227
|
+
]
|
|
228
|
+
}
|
|
229
|
+
]
|
|
230
|
+
|
|
231
|
+
# preview
|
|
232
|
+
res = trade_client.order_v2.preview_option(account_id, option_new_orders)
|
|
233
|
+
if res.status_code == 200:
|
|
234
|
+
print("preview option res:" + json.dumps(res.json(), indent=4))
|
|
235
|
+
|
|
236
|
+
# place
|
|
237
|
+
res = trade_client.order_v2.place_option(account_id, option_new_orders)
|
|
238
|
+
if res.status_code == 200:
|
|
239
|
+
print("place option res:" + json.dumps(res.json(), indent=4))
|
|
240
|
+
sleep(3)
|
|
241
|
+
|
|
242
|
+
# replace for Webull HK
|
|
243
|
+
# option_modify_orders = [
|
|
244
|
+
# {
|
|
245
|
+
# "client_order_id": client_order_id,
|
|
246
|
+
# "quantity": "2",
|
|
247
|
+
# "limit_price": "11.3"
|
|
248
|
+
# }
|
|
249
|
+
# ]
|
|
250
|
+
# res = trade_client.order_v2.replace_option(account_id, option_modify_orders)
|
|
251
|
+
# if res.status_code == 200:
|
|
252
|
+
# print("replace option res:" + json.dumps(res.json(), indent=4))
|
|
253
|
+
# sleep(5)
|
|
254
|
+
|
|
255
|
+
# replace for Webull US
|
|
256
|
+
res = trade_client.order_v2.get_order_detail(account_id, client_order_id)
|
|
257
|
+
if res.status_code == 200:
|
|
258
|
+
print('get option order detail res:', res.json())
|
|
259
|
+
data = res.json() or {}
|
|
260
|
+
leg_id = (
|
|
261
|
+
data.get("orders", [{}])[0]
|
|
262
|
+
.get("legs", [{}])[0]
|
|
263
|
+
.get("id")
|
|
264
|
+
)
|
|
265
|
+
print('get option order detail id :', leg_id)
|
|
266
|
+
|
|
267
|
+
# If it is a multi-leg option, you need to manually match it to the corresponding sub-leg orderId.
|
|
268
|
+
if leg_id:
|
|
269
|
+
option_modify_orders = [
|
|
270
|
+
{
|
|
271
|
+
"client_order_id": client_order_id,
|
|
272
|
+
"quantity": "2",
|
|
273
|
+
"limit_price": "21.3",
|
|
274
|
+
"legs": [
|
|
275
|
+
{
|
|
276
|
+
"id": leg_id,
|
|
277
|
+
"quantity": "2"
|
|
278
|
+
}
|
|
279
|
+
]
|
|
280
|
+
}
|
|
281
|
+
]
|
|
282
|
+
res = trade_client.order_v2.replace_option(account_id, option_modify_orders)
|
|
283
|
+
if res.status_code == 200:
|
|
284
|
+
print("replace option res:" + json.dumps(res.json(), indent=4))
|
|
285
|
+
sleep(3)
|
|
286
|
+
|
|
287
|
+
# cancel
|
|
288
|
+
res = trade_client.order_v2.cancel_option(account_id, client_order_id)
|
|
289
|
+
if res.status_code == 200:
|
|
290
|
+
print("cancel option res:" + json.dumps(res.json(), indent=4))
|
|
291
|
+
|
|
292
|
+
res = trade_client.order_v2.get_order_history(account_id)
|
|
293
|
+
if res.status_code == 200:
|
|
294
|
+
print('get order history res:', res.json())
|
|
295
|
+
|
|
296
|
+
res = trade_client.order_v2.get_order_open(account_id=account_id)
|
|
297
|
+
if res.status_code == 200:
|
|
298
|
+
print("order_open_res=" + json.dumps(res.json(), indent=4))
|
|
299
|
+
|
|
300
|
+
res = trade_client.order_v2.get_order_detail(account_id, client_order_id)
|
|
301
|
+
if res.status_code == 200:
|
|
302
|
+
print('get option order detail res:', res.json())
|
|
@@ -12,36 +12,38 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
|
|
15
|
-
import
|
|
15
|
+
import logging
|
|
16
16
|
|
|
17
|
-
from webull.trade.trade_events_client import TradeEventsClient
|
|
18
17
|
from webull.trade.events.types import ORDER_STATUS_CHANGED, EVENT_TYPE_ORDER
|
|
18
|
+
from webull.trade.trade_events_client import TradeEventsClient
|
|
19
19
|
|
|
20
20
|
your_app_key = "<your_app_key>"
|
|
21
21
|
your_app_secret = "<your_app_secret>"
|
|
22
22
|
account_id = "<your_account_id>"
|
|
23
|
-
region_id = "
|
|
23
|
+
region_id = "<region_id>"
|
|
24
24
|
|
|
25
25
|
optional_api_endpoint = "<event_api_endpoint>"
|
|
26
26
|
|
|
27
27
|
|
|
28
|
+
def _on_log(level, log_content):
|
|
29
|
+
print(logging.getLevelName(level), log_content)
|
|
30
|
+
|
|
31
|
+
def my_on_events_message(event_type, subscribe_type, payload, raw_message):
|
|
32
|
+
if EVENT_TYPE_ORDER == event_type and ORDER_STATUS_CHANGED == subscribe_type:
|
|
33
|
+
print('----request_id:%s----' % payload['request_id'])
|
|
34
|
+
print(payload)
|
|
35
|
+
|
|
28
36
|
if __name__ == '__main__':
|
|
37
|
+
|
|
29
38
|
# Create EventsClient instance
|
|
30
39
|
trade_events_client = TradeEventsClient(your_app_key, your_app_secret, region_id)
|
|
31
|
-
trade_events_client.enable_logger()
|
|
32
40
|
# For non production environment, you need to set the domain name of the subscription service through eventsclient. For example, the domain name of the UAT environment is set here
|
|
33
41
|
# trade_events_client = TradeEventsClient(your_app_key, your_app_secret, region_id, host=optional_api_endpoint)
|
|
42
|
+
trade_events_client.on_log = _on_log
|
|
34
43
|
|
|
35
44
|
# Set the callback function when the event data is received.
|
|
36
45
|
# The data of order status change is printed here
|
|
37
46
|
|
|
38
|
-
def my_on_events_message(event_type, subscribe_type, payload, raw_message):
|
|
39
|
-
if EVENT_TYPE_ORDER == event_type and ORDER_STATUS_CHANGED == subscribe_type:
|
|
40
|
-
print('----request_id:%s----' % payload['request_id'])
|
|
41
|
-
print(payload['account_id'])
|
|
42
|
-
print(payload['client_order_id'])
|
|
43
|
-
print(payload['order_status'])
|
|
44
|
-
|
|
45
47
|
trade_events_client.on_events_message = my_on_events_message
|
|
46
48
|
# Set the account ID to be subscribed and initiate the subscription. This method is synchronous
|
|
47
49
|
trade_events_client.do_subscribe([account_id])
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "1.0.4"
|
|
@@ -35,6 +35,9 @@
|
|
|
35
35
|
|
|
36
36
|
import logging
|
|
37
37
|
|
|
38
|
+
from webull.core import compat
|
|
39
|
+
from webull.core.exception.exceptions import ClientException
|
|
40
|
+
from webull.core.http.initializer.config.config_operation import ConfigOperation
|
|
38
41
|
from webull.core.http.initializer.token.token_manager import TokenManager
|
|
39
42
|
|
|
40
43
|
logger = logging.getLogger(__name__)
|
|
@@ -51,29 +54,62 @@ class ClientInitializer:
|
|
|
51
54
|
@staticmethod
|
|
52
55
|
def init_token(api_client):
|
|
53
56
|
"""Initialize token"""
|
|
54
|
-
|
|
55
|
-
|
|
57
|
+
disable_config_region_ids = ["hk"]
|
|
58
|
+
if api_client.get_region_id() in disable_config_region_ids:
|
|
59
|
+
if not ClientInitializer._check_region_token_enable(api_client):
|
|
60
|
+
return
|
|
61
|
+
else:
|
|
62
|
+
if not ClientInitializer._check_token_enable(api_client):
|
|
63
|
+
return
|
|
56
64
|
|
|
57
65
|
token_manager = TokenManager()
|
|
58
66
|
token_manager.init_token(api_client)
|
|
59
67
|
|
|
60
68
|
@staticmethod
|
|
61
|
-
def
|
|
69
|
+
def _check_region_token_enable(api_client):
|
|
62
70
|
"""
|
|
63
71
|
Check whether token checking is enabled in the specified region
|
|
64
72
|
"""
|
|
65
73
|
if api_client is None:
|
|
66
|
-
logger.warning("
|
|
74
|
+
logger.warning("_check_region_token_enable api_client is null, return False")
|
|
67
75
|
return False
|
|
68
76
|
|
|
69
77
|
if not api_client.get_region_id():
|
|
70
|
-
logger.warning("
|
|
78
|
+
logger.warning("_check_region_token_enable region_id is null, return False")
|
|
71
79
|
return False
|
|
72
80
|
|
|
73
81
|
enable_region_ids = ["hk"]
|
|
74
82
|
result = api_client.get_region_id() in enable_region_ids
|
|
75
83
|
logger.info(
|
|
76
|
-
"
|
|
77
|
-
result, enable_region_ids
|
|
84
|
+
"_check_region_token_enable result is %s, enable regionIds is %s.",
|
|
85
|
+
result, enable_region_ids
|
|
78
86
|
)
|
|
87
|
+
return result
|
|
88
|
+
|
|
89
|
+
@staticmethod
|
|
90
|
+
def _check_token_enable(api_client):
|
|
91
|
+
"""
|
|
92
|
+
Check whether token checking is enabled
|
|
93
|
+
"""
|
|
94
|
+
if api_client is None:
|
|
95
|
+
logger.warning("_check_token_enable api_client is null, return False")
|
|
96
|
+
return False
|
|
97
|
+
|
|
98
|
+
config_operation = ConfigOperation(api_client)
|
|
99
|
+
response = config_operation.get_config()
|
|
100
|
+
|
|
101
|
+
if response.status_code != 200:
|
|
102
|
+
msg = "_check_token_enable get_token_config returned non-200 response, raising exception. status_code:%s" % response.status_code
|
|
103
|
+
logger.error(compat.ensure_string(msg))
|
|
104
|
+
raise ClientException("ERROR_CHECK_TOKEN_ENABLE", msg)
|
|
105
|
+
|
|
106
|
+
token_config = response.json()
|
|
107
|
+
if not token_config:
|
|
108
|
+
msg = "_check_token_enable get_token_config result is empty."
|
|
109
|
+
logger.error(msg)
|
|
110
|
+
raise ClientException("ERROR_CHECK_TOKEN_ENABLE", msg)
|
|
111
|
+
|
|
112
|
+
result = token_config.get("token_check_enabled", False)
|
|
113
|
+
logger.info("_check_token_enable result is %s",result)
|
|
114
|
+
|
|
79
115
|
return result
|
webull_openapi_python_sdk-1.0.4/webull/core/http/initializer/config/bean/query_config_request.py
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
# Licensed to the Apache Software Foundation (ASF) under one
|
|
16
|
+
# or more contributor license agreements. See the NOTICE file
|
|
17
|
+
# distributed with this work for additional information
|
|
18
|
+
# regarding copyright ownership. The ASF licenses this file
|
|
19
|
+
# to you under the Apache License, Version 2.0 (the
|
|
20
|
+
# "License"); you may not use this file except in compliance
|
|
21
|
+
# with the License. You may obtain a copy of the License at
|
|
22
|
+
#
|
|
23
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
24
|
+
#
|
|
25
|
+
#
|
|
26
|
+
#
|
|
27
|
+
# Unless required by applicable law or agreed to in writing,
|
|
28
|
+
# software distributed under the License is distributed on an
|
|
29
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
30
|
+
# KIND, either express or implied. See the License for the
|
|
31
|
+
# specific language governing permissions and limitations
|
|
32
|
+
# under the License.
|
|
33
|
+
|
|
34
|
+
# coding=utf-8
|
|
35
|
+
|
|
36
|
+
from webull.core.request import ApiRequest
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class GetConfigRequest(ApiRequest):
|
|
40
|
+
def __init__(self):
|
|
41
|
+
super().__init__("/openapi/config", version='v2', method="GET", query_params={})
|
|
@@ -0,0 +1,49 @@
|
|
|
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
|
+
# Licensed to the Apache Software Foundation (ASF) under one
|
|
16
|
+
# or more contributor license agreements. See the NOTICE file
|
|
17
|
+
# distributed with this work for additional information
|
|
18
|
+
# regarding copyright ownership. The ASF licenses this file
|
|
19
|
+
# to you under the Apache License, Version 2.0 (the
|
|
20
|
+
# "License"); you may not use this file except in compliance
|
|
21
|
+
# with the License. You may obtain a copy of the License at
|
|
22
|
+
#
|
|
23
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
24
|
+
#
|
|
25
|
+
#
|
|
26
|
+
#
|
|
27
|
+
# Unless required by applicable law or agreed to in writing,
|
|
28
|
+
# software distributed under the License is distributed on an
|
|
29
|
+
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
|
30
|
+
# KIND, either express or implied. See the License for the
|
|
31
|
+
# specific language governing permissions and limitations
|
|
32
|
+
# under the License.
|
|
33
|
+
|
|
34
|
+
# coding=utf-8
|
|
35
|
+
|
|
36
|
+
from webull.core.http.initializer.config.bean.query_config_request import GetConfigRequest
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class ConfigOperation:
|
|
40
|
+
def __init__(self, api_client):
|
|
41
|
+
self.client = api_client
|
|
42
|
+
|
|
43
|
+
def get_config(self):
|
|
44
|
+
"""
|
|
45
|
+
Get Config
|
|
46
|
+
"""
|
|
47
|
+
get_config_request = GetConfigRequest()
|
|
48
|
+
response = self.client.get_response(get_config_request)
|
|
49
|
+
return response
|
|
@@ -38,7 +38,7 @@ from webull.core.request import ApiRequest
|
|
|
38
38
|
|
|
39
39
|
class CheckTokenRequest(ApiRequest):
|
|
40
40
|
def __init__(self):
|
|
41
|
-
super().__init__("/auth/token/check", version='v2', method="POST", body_params={})
|
|
41
|
+
super().__init__("/openapi/auth/token/check", version='v2', method="POST", body_params={})
|
|
42
42
|
|
|
43
43
|
def set_token(self, token):
|
|
44
44
|
self.add_body_params("token", token)
|
|
@@ -38,7 +38,7 @@ from webull.core.request import ApiRequest
|
|
|
38
38
|
|
|
39
39
|
class CreateTokenRequest(ApiRequest):
|
|
40
40
|
def __init__(self):
|
|
41
|
-
super().__init__("/auth/token/create", version='v2', method="POST", body_params={})
|
|
41
|
+
super().__init__("/openapi/auth/token/create", version='v2', method="POST", body_params={})
|
|
42
42
|
|
|
43
43
|
def set_token(self, token):
|
|
44
44
|
if token:
|
|
@@ -38,7 +38,7 @@ from webull.core.request import ApiRequest
|
|
|
38
38
|
|
|
39
39
|
class RefreshTokenRequest(ApiRequest):
|
|
40
40
|
def __init__(self):
|
|
41
|
-
super().__init__("/auth/token/refresh", version='v2', method="POST", body_params={})
|
|
41
|
+
super().__init__("/openapi/auth/token/refresh", version='v2', method="POST", body_params={})
|
|
42
42
|
|
|
43
43
|
def set_token(self, token):
|
|
44
44
|
self.add_body_params("token", token)
|
|
@@ -33,8 +33,6 @@
|
|
|
33
33
|
|
|
34
34
|
# coding=utf-8
|
|
35
35
|
|
|
36
|
-
import logging
|
|
37
|
-
|
|
38
36
|
from webull.core.http.initializer.token.bean.check_token_request import CheckTokenRequest
|
|
39
37
|
from webull.core.http.initializer.token.bean.create_token_request import CreateTokenRequest
|
|
40
38
|
from webull.core.http.initializer.token.bean.refresh_token_request import RefreshTokenRequest
|
|
@@ -17,7 +17,7 @@ from webull.core.request import ApiRequest
|
|
|
17
17
|
|
|
18
18
|
class BatchHistoricalBarsRequest(ApiRequest):
|
|
19
19
|
def __init__(self):
|
|
20
|
-
ApiRequest.__init__(self, "/market-data/batch-bars", version='v2', method="POST", body_params={})
|
|
20
|
+
ApiRequest.__init__(self, "/openapi/market-data/stock/batch-bars", version='v2', method="POST", body_params={})
|
|
21
21
|
|
|
22
22
|
def set_symbols(self, symbol):
|
|
23
23
|
self.add_body_params("symbols", symbol)
|
|
@@ -17,7 +17,7 @@ from webull.core.request import ApiRequest
|
|
|
17
17
|
|
|
18
18
|
class GetHistoricalBarsRequest(ApiRequest):
|
|
19
19
|
def __init__(self):
|
|
20
|
-
ApiRequest.__init__(self, "/market-data/bars", version='v2', method="GET", query_params={})
|
|
20
|
+
ApiRequest.__init__(self, "/openapi/market-data/stock/bars", version='v2', method="GET", query_params={})
|
|
21
21
|
|
|
22
22
|
def set_symbol(self, symbol):
|
|
23
23
|
self.add_query_param("symbol", symbol)
|
|
@@ -18,7 +18,7 @@ from webull.core.request import ApiRequest
|
|
|
18
18
|
|
|
19
19
|
class GetInstrumentsRequest(ApiRequest):
|
|
20
20
|
def __init__(self):
|
|
21
|
-
ApiRequest.__init__(self, "/instrument/list", version='v2', method="GET", query_params={})
|
|
21
|
+
ApiRequest.__init__(self, "/openapi/instrument/stock/list", version='v2', method="GET", query_params={})
|
|
22
22
|
|
|
23
23
|
def set_symbols(self, symbols):
|
|
24
24
|
if isinstance(symbols, str):
|
|
@@ -18,7 +18,7 @@ from webull.core.request import ApiRequest
|
|
|
18
18
|
|
|
19
19
|
class GetQuotesRequest(ApiRequest):
|
|
20
20
|
def __init__(self):
|
|
21
|
-
ApiRequest.__init__(self, "/market-data/quotes", version='v2', method="GET", query_params={})
|
|
21
|
+
ApiRequest.__init__(self, "/openapi/market-data/stock/quotes", version='v2', method="GET", query_params={})
|
|
22
22
|
|
|
23
23
|
def set_symbol(self, symbol):
|
|
24
24
|
self.add_query_param("symbol", symbol)
|
|
@@ -18,7 +18,7 @@ from webull.core.request import ApiRequest
|
|
|
18
18
|
|
|
19
19
|
class GetSnapshotRequest(ApiRequest):
|
|
20
20
|
def __init__(self):
|
|
21
|
-
ApiRequest.__init__(self, "/market-data/snapshot", version='v2', method="GET", query_params={})
|
|
21
|
+
ApiRequest.__init__(self, "/openapi/market-data/stock/snapshot", version='v2', method="GET", query_params={})
|
|
22
22
|
|
|
23
23
|
def set_symbols(self, symbols):
|
|
24
24
|
if isinstance(symbols, str):
|
|
@@ -18,7 +18,7 @@ from webull.core.request import ApiRequest
|
|
|
18
18
|
|
|
19
19
|
class GetTickRequest(ApiRequest):
|
|
20
20
|
def __init__(self):
|
|
21
|
-
ApiRequest.__init__(self, "/market-data/tick", version='v2', method="GET", query_params={})
|
|
21
|
+
ApiRequest.__init__(self, "/openapi/market-data/stock/tick", version='v2', method="GET", query_params={})
|
|
22
22
|
|
|
23
23
|
def set_symbol(self, symbol):
|
|
24
24
|
self.add_query_param("symbol", symbol)
|