webull-openapi-python-sdk 1.0.9__tar.gz → 1.1.0__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.9 → webull_openapi_python_sdk-1.1.0}/PKG-INFO +1 -1
- webull_openapi_python_sdk-1.1.0/samples/data/data_client_event.py +52 -0
- webull_openapi_python_sdk-1.1.0/samples/data/data_streaming_client_event.py +66 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/trade/trade_client_v3.py +64 -1
- webull_openapi_python_sdk-1.1.0/samples/trade/trade_client_v3_event.py +102 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/trade/trade_event_client.py +4 -1
- webull_openapi_python_sdk-1.1.0/webull/__init__.py +1 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/__init__.py +1 -1
- webull_openapi_python_sdk-1.1.0/webull/data/__init__.py +3 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/common/category.py +1 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/data_client.py +2 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/data_streaming_client.py +6 -1
- webull_openapi_python_sdk-1.1.0/webull/data/quotes/event_market_data.py +50 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/instrument.py +43 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/subscribe/ask_bid_result.py +9 -3
- webull_openapi_python_sdk-1.1.0/webull/data/quotes/subscribe/event_depth_decoder.py +27 -0
- webull_openapi_python_sdk-1.1.0/webull/data/quotes/subscribe/event_depth_result.py +46 -0
- webull_openapi_python_sdk-1.1.0/webull/data/quotes/subscribe/event_snapshot_decoder.py +29 -0
- webull_openapi_python_sdk-1.1.0/webull/data/quotes/subscribe/event_snapshot_result.py +85 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/subscribe/message_pb2.py +25 -19
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/subscribe/payload_type.py +3 -1
- webull_openapi_python_sdk-1.1.0/webull/data/request/get_event_depth_request.py +32 -0
- webull_openapi_python_sdk-1.1.0/webull/data/request/get_event_instrument_request.py +33 -0
- webull_openapi_python_sdk-1.1.0/webull/data/request/get_event_series_request.py +30 -0
- webull_openapi_python_sdk-1.1.0/webull/data/request/get_event_snapshot_request.py +31 -0
- webull_openapi_python_sdk-1.1.0/webull/trade/__init__.py +1 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/events/types.py +1 -1
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/trade_events_client.py +1 -1
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull_openapi_python_sdk.egg-info/PKG-INFO +1 -1
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull_openapi_python_sdk.egg-info/SOURCES.txt +12 -0
- webull_openapi_python_sdk-1.0.9/webull/__init__.py +0 -1
- webull_openapi_python_sdk-1.0.9/webull/data/__init__.py +0 -3
- webull_openapi_python_sdk-1.0.9/webull/trade/__init__.py +0 -1
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/ChangeLog.txt +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/LICENSE +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/MANIFEST.in +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/NOTICE +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/README.rst +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/account/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/account/account_client.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/assets/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/assets/assets_client.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/data/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/data/data_client.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/data/data_streaming_client.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/data/data_streaming_client_async.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/order/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/order/order_option_client.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/order/order_stock_client.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/trade/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/trade/trade_client.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/trade/trade_client_v2.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/setup.cfg +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/setup.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/auth/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/auth/algorithm/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/auth/algorithm/sha_hmac1.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/auth/algorithm/sha_hmac256.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/auth/composer/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/auth/composer/default_signature_composer.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/auth/credentials.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/auth/signers/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/auth/signers/app_key_signer.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/auth/signers/signer.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/auth/signers/signer_factory.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/cache/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/client.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/common/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/common/api_type.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/common/easy_enum.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/common/region.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/compat.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/context/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/context/request_context_holder.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/data/endpoints.json +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/data/retry_config.json +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/endpoint/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/endpoint/chained_endpoint_resolver.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/endpoint/default_endpoint_resolver.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/endpoint/local_config_regional_endpoint_resolver.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/endpoint/resolver_endpoint_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/endpoint/user_customized_endpoint_resolver.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/exception/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/exception/error_code.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/exception/error_msg.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/exception/exceptions.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/headers.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/initializer/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/initializer/client_initializer.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/initializer/config/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/initializer/config/bean/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/initializer/config/bean/query_config_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/initializer/config/config_operation.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/initializer/token/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/initializer/token/bean/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/initializer/token/bean/access_token.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/initializer/token/bean/check_token_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/initializer/token/bean/create_token_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/initializer/token/bean/refresh_token_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/initializer/token/token_manager.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/initializer/token/token_operation.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/initializer/token/token_storage.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/method_type.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/protocol_type.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/http/response.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/retry/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/retry/backoff_strategy.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/retry/retry_condition.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/retry/retry_policy.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/retry/retry_policy_context.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/utils/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/utils/common.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/utils/data.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/utils/desensitize.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/utils/validation.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/__version__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/_internal_utils.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/adapters.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/api.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/auth.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/certs.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/compat.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/cookies.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/exceptions.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/help.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/hooks.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/models.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/certifi/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/certifi/__main__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/certifi/cacert.pem +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/certifi/core.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/big5freq.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/big5prober.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/chardistribution.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/charsetgroupprober.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/charsetprober.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/cli/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/cli/chardetect.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/codingstatemachine.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/compat.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/cp949prober.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/enums.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/escprober.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/escsm.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/eucjpprober.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/euckrfreq.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/euckrprober.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/euctwfreq.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/euctwprober.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/gb2312freq.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/gb2312prober.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/hebrewprober.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/jisfreq.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/jpcntx.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/langbulgarianmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/langcyrillicmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/langgreekmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/langhebrewmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/langhungarianmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/langthaimodel.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/langturkishmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/latin1prober.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/mbcharsetprober.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/mbcsgroupprober.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/mbcssm.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/sbcharsetprober.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/sbcsgroupprober.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/sjisprober.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/universaldetector.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/utf8prober.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/chardet/version.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/_collections.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/connection.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/connectionpool.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/contrib/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/contrib/_appengine_environ.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/bindings.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/low_level.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/contrib/appengine.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/contrib/ntlmpool.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/contrib/pyopenssl.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/contrib/securetransport.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/contrib/socks.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/exceptions.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/fields.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/filepost.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/packages/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/packages/backports/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/packages/backports/makefile.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/packages/ordered_dict.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/packages/six.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/packages/socks.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/poolmanager.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/response.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/util/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/util/connection.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/util/queue.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/util/request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/util/response.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/util/retry.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/util/selectors.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/util/ssl_.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/util/timeout.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/util/url.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages/urllib3/util/wait.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/packages.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/sessions.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/status_codes.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/structures.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/requests/utils.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/core/vendored/six.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/common/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/common/connect_ack.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/common/contract_type.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/common/direction.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/common/exchange_code.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/common/exercise_style.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/common/expiration_cycle.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/common/instrument_status.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/common/option_type.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/common/subscribe_type.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/common/timespan.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/internal/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/internal/default_retry_policy.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/internal/exceptions.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/internal/quotes_client.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/internal/quotes_decoder.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/internal/quotes_payload_decoder.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/internal/quotes_topic.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/crypto_market_data.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/futures_market_data.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/market_data.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/market_streaming_data.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/subscribe/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/subscribe/basic_result.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/subscribe/broker_result.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/subscribe/order_result.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/subscribe/quote_decoder.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/subscribe/quote_result.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/subscribe/snapshot_decoder.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/subscribe/snapshot_result.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/subscribe/tick_decoder.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/subscribe/tick_result.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_batch_historical_bars_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_corp_action_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_crypto_historical_bars_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_crypto_instruments_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_crypto_snapshot_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_eod_bars_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_footprint_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_futures_depth_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_futures_footprint_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_futures_historical_bars_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_futures_instruments_by_code_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_futures_instruments_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_futures_products_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_futures_snapshot_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_futures_tick_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_historical_bars_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_instruments_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_quotes_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_snapshot_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/get_tick_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/subscribe_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/request/unsubscribe_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/common/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/common/account_type.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/common/category.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/common/combo_ticker_type.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/common/combo_type.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/common/currency.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/common/forbid_reason.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/common/instrument_type.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/common/markets.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/common/order_entrust_type.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/common/order_side.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/common/order_status.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/common/order_tif.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/common/order_type.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/common/trade_policy.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/common/trading_date_type.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/common/trailing_type.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/events/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/events/default_retry_policy.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/events/events_pb2.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/events/events_pb2_grpc.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/events/signature_composer.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/cancel_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/get_account_balance_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/get_account_positions_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/get_account_profile_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/get_app_subscriptions.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/get_open_orders_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/get_order_detail_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/get_today_orders_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/get_trade_calendar_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/get_trade_instrument_detail_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/get_trade_security_detail_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/get_tradeable_instruments_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/palce_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/place_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/place_order_request_v2.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/replace_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/replace_order_request_v2.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v2/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v2/cancel_option_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v2/cancel_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v2/get_account_balance_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v2/get_account_list.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v2/get_account_list_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v2/get_account_positions_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v2/get_order_detail_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v2/get_order_history_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v2/get_order_open_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v2/palce_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v2/place_option_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v2/place_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v2/preview_option_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v2/preview_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v2/replace_option_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v2/replace_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v3/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v3/batch_place_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v3/cancel_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v3/get_order_detail_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v3/get_order_history_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v3/get_order_open_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v3/place_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v3/preview_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/request/v3/replace_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/trade/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/trade/account_info.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/trade/order_operation.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/trade/trade_calendar.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/trade/trade_instrument.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/trade/v2/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/trade/v2/account_info_v2.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/trade/v2/order_operation_v2.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/trade/v3/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/trade/v3/order_opration_v3.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/trade/trade_client.py +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull_openapi_python_sdk.egg-info/dependency_links.txt +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull_openapi_python_sdk.egg-info/requires.txt +0 -0
- {webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull_openapi_python_sdk.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1,52 @@
|
|
|
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
|
+
# coding=utf-8
|
|
16
|
+
|
|
17
|
+
from webull.data.common.category import Category
|
|
18
|
+
from webull.core.client import ApiClient
|
|
19
|
+
from webull.data.data_client import DataClient
|
|
20
|
+
|
|
21
|
+
optional_api_endpoint = "<api_endpoint>"
|
|
22
|
+
your_app_key = "<your_app_key>"
|
|
23
|
+
your_app_secret = "<your_app_secret>"
|
|
24
|
+
region_id = "<region_id>"
|
|
25
|
+
# The token_dir parameter can be used to specify the directory for storing the 2FA token. Both absolute and relative paths are supported and this option has the highest priority.
|
|
26
|
+
# Alternatively, the storage directory can be configured via an environment variable with the key WEBULL_OPENAPI_TOKEN_DIR, which also supports both absolute and relative paths.
|
|
27
|
+
# If neither is specified, the default configuration will be used, and the token will be stored at conf/token.txt under the current working directory.
|
|
28
|
+
# token_dir = "<your_token_dir>"
|
|
29
|
+
# api_client.set_token_dir(token_dir)
|
|
30
|
+
|
|
31
|
+
api_client = ApiClient(your_app_key, your_app_secret, region_id)
|
|
32
|
+
api_client.add_endpoint(region_id, optional_api_endpoint)
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
if __name__ == '__main__':
|
|
36
|
+
data_client = DataClient(api_client)
|
|
37
|
+
|
|
38
|
+
res = data_client.instrument.get_event_series("ECONOMICS")
|
|
39
|
+
if res.status_code == 200:
|
|
40
|
+
print('get_event_series:', res.json())
|
|
41
|
+
|
|
42
|
+
res = data_client.instrument.get_event_instrument("KXGDP")
|
|
43
|
+
if res.status_code == 200:
|
|
44
|
+
print('get_event_instrument:', res.json())
|
|
45
|
+
|
|
46
|
+
res = data_client.event_market_data.get_event_snapshot("KXRATECUTCOUNT-25DEC31-T10", Category.US_EVENT.name)
|
|
47
|
+
if res.status_code == 200:
|
|
48
|
+
print('get_event_snapshot:', res.json())
|
|
49
|
+
|
|
50
|
+
res = data_client.event_market_data.get_event_depth("KXRATECUTCOUNT-25DEC31-T10", Category.US_EVENT.name)
|
|
51
|
+
if res.status_code == 200:
|
|
52
|
+
print('get_event_depth:', res.json())
|
|
@@ -0,0 +1,66 @@
|
|
|
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
|
+
# coding=utf-8
|
|
16
|
+
|
|
17
|
+
import logging
|
|
18
|
+
import uuid
|
|
19
|
+
from logging.handlers import TimedRotatingFileHandler
|
|
20
|
+
|
|
21
|
+
from webull.data.common.category import Category
|
|
22
|
+
from webull.data.common.subscribe_type import SubscribeType
|
|
23
|
+
from webull.data.data_streaming_client import DataStreamingClient
|
|
24
|
+
|
|
25
|
+
your_app_key = "</your_app_key>"
|
|
26
|
+
your_app_secret = "</your_app_secret>"
|
|
27
|
+
optional_api_endpoint = "</optional_quotes_endpoint>"
|
|
28
|
+
optional_quotes_endpoint = "</optional_quotes_endpoint>"
|
|
29
|
+
region_id = '<region_id>'
|
|
30
|
+
# The token_dir parameter can be used to specify the directory for storing the 2FA token. Both absolute and relative paths are supported and this option has the highest priority.
|
|
31
|
+
# Alternatively, the storage directory can be configured via an environment variable with the key WEBULL_OPENAPI_TOKEN_DIR, which also supports both absolute and relative paths.
|
|
32
|
+
# If neither is specified, the default configuration will be used, and the token will be stored at conf/token.txt under the current working directory.
|
|
33
|
+
# token_dir = "<your_token_dir>"
|
|
34
|
+
# data_streaming_client.set_token_dir(token_dir)
|
|
35
|
+
|
|
36
|
+
session_id = uuid.uuid4().hex
|
|
37
|
+
data_streaming_client = DataStreamingClient(your_app_key, your_app_secret, region_id, session_id,
|
|
38
|
+
http_host=optional_api_endpoint,
|
|
39
|
+
mqtt_host=optional_quotes_endpoint)
|
|
40
|
+
|
|
41
|
+
if __name__ == '__main__':
|
|
42
|
+
def my_connect_success_func(client, api_client, quotes_session_id):
|
|
43
|
+
print("connect success with session_id:%s" % quotes_session_id)
|
|
44
|
+
# subscribe
|
|
45
|
+
symbols = ['KXNHLGAME-26JAN21ANACOL-ANA', 'KXNBAGAME-26JAN20LACCHI-LAC']
|
|
46
|
+
sub_types = [SubscribeType.QUOTE.name, SubscribeType.SNAPSHOT.name]
|
|
47
|
+
client.subscribe(symbols, Category.US_EVENT.name, sub_types)
|
|
48
|
+
|
|
49
|
+
def my_quotes_message_func(client, topic, quotes):
|
|
50
|
+
print("receive message: topic:%s, quotes:%s" % (topic, quotes))
|
|
51
|
+
|
|
52
|
+
def my_subscribe_success_func(client, api_client, quotes_session_id):
|
|
53
|
+
print("subscribe success with session_id:%s" % quotes_session_id)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
# set connect success callback func
|
|
57
|
+
data_streaming_client.on_connect_success = my_connect_success_func
|
|
58
|
+
# set quotes receiving callback func
|
|
59
|
+
data_streaming_client.on_quotes_message = my_quotes_message_func
|
|
60
|
+
# set subscribe success callback func
|
|
61
|
+
data_streaming_client.on_subscribe_success = my_subscribe_success_func
|
|
62
|
+
|
|
63
|
+
# the sync mode, blocking in current thread
|
|
64
|
+
data_streaming_client.connect_and_loop_forever()
|
|
65
|
+
|
|
66
|
+
|
{webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/samples/trade/trade_client_v3.py
RENAMED
|
@@ -454,4 +454,67 @@ if __name__ == '__main__':
|
|
|
454
454
|
# get futures order history
|
|
455
455
|
res = trade_client.order_v3.get_order_history(account_id, page_size=10)
|
|
456
456
|
if res.status_code == 200:
|
|
457
|
-
print('get order history res:', res.json())
|
|
457
|
+
print('get order history res:', res.json())
|
|
458
|
+
|
|
459
|
+
# ============================================================
|
|
460
|
+
# Algo Order Example
|
|
461
|
+
# ============================================================
|
|
462
|
+
alog_client_order_id = uuid.uuid4().hex
|
|
463
|
+
print('client order id:', alog_client_order_id)
|
|
464
|
+
new_normal_equity_orders = [
|
|
465
|
+
{
|
|
466
|
+
"combo_type": "NORMAL",
|
|
467
|
+
"client_order_id": alog_client_order_id,
|
|
468
|
+
"symbol": "AAPL",
|
|
469
|
+
"instrument_type": "EQUITY",
|
|
470
|
+
"market": "US",
|
|
471
|
+
"order_type": "LIMIT",
|
|
472
|
+
"limit_price": "188",
|
|
473
|
+
"quantity": "1",
|
|
474
|
+
"support_trading_session": "N",
|
|
475
|
+
"side": "BUY",
|
|
476
|
+
"time_in_force": "DAY",
|
|
477
|
+
"entrust_type": "QTY",
|
|
478
|
+
"algo_start_time": "16:00:00",
|
|
479
|
+
"algo_end_time": "23:00:00",
|
|
480
|
+
"target_vol_percent": "10",
|
|
481
|
+
"algo_type": "POV"
|
|
482
|
+
}
|
|
483
|
+
]
|
|
484
|
+
|
|
485
|
+
res = trade_client.order_v3.preview_order(account_id, new_normal_equity_orders)
|
|
486
|
+
if res.status_code == 200:
|
|
487
|
+
print('preview algo order res:', res.json())
|
|
488
|
+
|
|
489
|
+
res = trade_client.order_v3.place_order(account_id, new_normal_equity_orders)
|
|
490
|
+
if res.status_code == 200:
|
|
491
|
+
print('place algo order res:', res.json())
|
|
492
|
+
sleep(3)
|
|
493
|
+
|
|
494
|
+
replace_normal_equity_orders = [
|
|
495
|
+
{
|
|
496
|
+
"client_order_id": alog_client_order_id,
|
|
497
|
+
"quantity": "100",
|
|
498
|
+
"limit_price": "200"
|
|
499
|
+
}
|
|
500
|
+
]
|
|
501
|
+
res = trade_client.order_v3.replace_order(account_id, replace_normal_equity_orders)
|
|
502
|
+
if res.status_code == 200:
|
|
503
|
+
print('replace algo order res:', res.json())
|
|
504
|
+
sleep(3)
|
|
505
|
+
|
|
506
|
+
res = trade_client.order_v3.cancel_order(account_id, alog_client_order_id)
|
|
507
|
+
if res.status_code == 200:
|
|
508
|
+
print('cancel algo order res:', res.json())
|
|
509
|
+
|
|
510
|
+
res = trade_client.order_v3.get_order_open(account_id=account_id)
|
|
511
|
+
if res.status_code == 200:
|
|
512
|
+
print("order_open_res=" + json.dumps(res.json(), indent=4))
|
|
513
|
+
|
|
514
|
+
res = trade_client.order_v3.get_order_history(account_id)
|
|
515
|
+
if res.status_code == 200:
|
|
516
|
+
print('get order history res:', res.json())
|
|
517
|
+
|
|
518
|
+
res = trade_client.order_v3.get_order_detail(account_id, alog_client_order_id)
|
|
519
|
+
if res.status_code == 200:
|
|
520
|
+
print('get order detail res:', res.json())
|
|
@@ -0,0 +1,102 @@
|
|
|
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
|
+
# The token_dir parameter can be used to specify the directory for storing the 2FA token. Both absolute and relative paths are supported and this option has the highest priority.
|
|
28
|
+
# Alternatively, the storage directory can be configured via an environment variable with the key WEBULL_OPENAPI_TOKEN_DIR, which also supports both absolute and relative paths.
|
|
29
|
+
# If neither is specified, the default configuration will be used, and the token will be stored at conf/token.txt under the current working directory.
|
|
30
|
+
# token_dir = "<your_token_dir>"
|
|
31
|
+
# api_client.set_token_dir(token_dir)
|
|
32
|
+
|
|
33
|
+
api_client = ApiClient(your_app_key, your_app_secret, region_id)
|
|
34
|
+
api_client.add_endpoint(region_id, optional_api_endpoint)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
if __name__ == '__main__':
|
|
38
|
+
trade_client = TradeClient(api_client)
|
|
39
|
+
|
|
40
|
+
res = trade_client.account_v2.get_account_list()
|
|
41
|
+
if res.status_code == 200:
|
|
42
|
+
print('get account list:', res.json())
|
|
43
|
+
|
|
44
|
+
res = trade_client.account_v2.get_account_balance(account_id)
|
|
45
|
+
if res.status_code == 200:
|
|
46
|
+
print('get account balance res:', res.json())
|
|
47
|
+
|
|
48
|
+
res = trade_client.account_v2.get_account_position(account_id)
|
|
49
|
+
if res.status_code == 200:
|
|
50
|
+
print('get account position res:', res.json())
|
|
51
|
+
|
|
52
|
+
# normal event order
|
|
53
|
+
normal_event_client_order_id = uuid.uuid4().hex
|
|
54
|
+
print('event client order id:', normal_event_client_order_id)
|
|
55
|
+
new_normal_event_orders = [
|
|
56
|
+
{
|
|
57
|
+
"combo_type": "NORMAL",
|
|
58
|
+
"client_order_id": normal_event_client_order_id,
|
|
59
|
+
"instrument_type": "EVENT",
|
|
60
|
+
"market": "US",
|
|
61
|
+
"symbol": "KXRATECUTCOUNT-25DEC31-T9",
|
|
62
|
+
"order_type": "LIMIT",
|
|
63
|
+
"entrust_type": "QTY",
|
|
64
|
+
"time_in_force": "DAY",
|
|
65
|
+
"side": "BUY",
|
|
66
|
+
"quantity": "1",
|
|
67
|
+
"limit_price": "0.1",
|
|
68
|
+
"event_outcome": "yes"
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
|
|
72
|
+
res = trade_client.order_v3.preview_order(account_id, new_normal_event_orders)
|
|
73
|
+
if res.status_code == 200:
|
|
74
|
+
print('preview normal event order res:', res.json())
|
|
75
|
+
|
|
76
|
+
res = trade_client.order_v3.place_order(account_id, new_normal_event_orders)
|
|
77
|
+
if res.status_code == 200:
|
|
78
|
+
print('place normal event order res:', res.json())
|
|
79
|
+
sleep(3)
|
|
80
|
+
|
|
81
|
+
# normal event order replace
|
|
82
|
+
replace_normal_event_orders = [
|
|
83
|
+
{
|
|
84
|
+
"client_order_id": normal_event_client_order_id,
|
|
85
|
+
"quantity": "10",
|
|
86
|
+
"limit_price": "0.1"
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
res = trade_client.order_v3.replace_order(account_id, replace_normal_event_orders)
|
|
90
|
+
if res.status_code == 200:
|
|
91
|
+
print('replace normal event order res:', res.json())
|
|
92
|
+
sleep(3)
|
|
93
|
+
|
|
94
|
+
# normal event order cancel
|
|
95
|
+
res = trade_client.order_v3.cancel_order(account_id, normal_event_client_order_id)
|
|
96
|
+
if res.status_code == 200:
|
|
97
|
+
print('cancel normal event order res:', res.json())
|
|
98
|
+
|
|
99
|
+
# get event order detail
|
|
100
|
+
res = trade_client.order_v3.get_order_detail(account_id, normal_event_client_order_id)
|
|
101
|
+
if res.status_code == 200:
|
|
102
|
+
print('get event order detail res:', res.json())
|
|
@@ -14,7 +14,8 @@
|
|
|
14
14
|
|
|
15
15
|
import logging
|
|
16
16
|
|
|
17
|
-
from webull.trade.events.types import ORDER_STATUS_CHANGED, EVENT_TYPE_ORDER
|
|
17
|
+
from webull.trade.events.types import ORDER_STATUS_CHANGED, EVENT_TYPE_ORDER, EVENT_TYPE_POSITION, \
|
|
18
|
+
POSITION_STATUS_CHANGED
|
|
18
19
|
from webull.trade.trade_events_client import TradeEventsClient
|
|
19
20
|
|
|
20
21
|
your_app_key = "<your_app_key>"
|
|
@@ -32,6 +33,8 @@ def my_on_events_message(event_type, subscribe_type, payload, raw_message):
|
|
|
32
33
|
if EVENT_TYPE_ORDER == event_type and ORDER_STATUS_CHANGED == subscribe_type:
|
|
33
34
|
print('----request_id:%s----' % payload['request_id'])
|
|
34
35
|
print(payload)
|
|
36
|
+
if EVENT_TYPE_POSITION == event_type and POSITION_STATUS_CHANGED == subscribe_type:
|
|
37
|
+
print('event payload:%s' % payload)
|
|
35
38
|
|
|
36
39
|
if __name__ == '__main__':
|
|
37
40
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '1.1.0'
|
{webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/data_client.py
RENAMED
|
@@ -19,6 +19,7 @@ import sys
|
|
|
19
19
|
|
|
20
20
|
from webull.core.http.initializer.client_initializer import ClientInitializer
|
|
21
21
|
from webull.data.quotes.crypto_market_data import CryptoMarketData
|
|
22
|
+
from webull.data.quotes.event_market_data import EventMarketData
|
|
22
23
|
from webull.data.quotes.futures_market_data import FuturesMarketData
|
|
23
24
|
from webull.data.quotes.instrument import Instrument
|
|
24
25
|
from webull.data.quotes.market_data import MarketData
|
|
@@ -32,6 +33,7 @@ class DataClient:
|
|
|
32
33
|
self.market_data = MarketData(api_client)
|
|
33
34
|
self.crypto_market_data = CryptoMarketData(api_client)
|
|
34
35
|
self.futures_market_data = FuturesMarketData(api_client)
|
|
36
|
+
self.event_market_data = EventMarketData(api_client)
|
|
35
37
|
|
|
36
38
|
def _init_logger(self, api_client):
|
|
37
39
|
# No logger configured, using default console and local file logging.
|
|
@@ -16,7 +16,10 @@
|
|
|
16
16
|
|
|
17
17
|
from webull.data.internal.quotes_client import QuotesClient, LOG_ERR
|
|
18
18
|
from webull.data.quotes.market_streaming_data import MarketDataStreaming
|
|
19
|
-
from webull.data.quotes.subscribe.
|
|
19
|
+
from webull.data.quotes.subscribe.event_depth_decoder import EventDepthDecoder
|
|
20
|
+
from webull.data.quotes.subscribe.event_snapshot_decoder import EventSnapshotDecoder
|
|
21
|
+
from webull.data.quotes.subscribe.payload_type import PAYLOAD_TYPE_QUOTE, PAYLOAD_TYPE_SHAPSHOT, PAYLOAD_TYPE_TICK, \
|
|
22
|
+
PAYLOAD_TYPE_EVENT_SHAPSHOT, PAYLOAD_TYPE_EVENT_DEPTH
|
|
20
23
|
from webull.data.quotes.subscribe.quote_decoder import QuoteDecoder
|
|
21
24
|
from webull.data.quotes.subscribe.snapshot_decoder import SnapshotDecoder
|
|
22
25
|
from webull.data.quotes.subscribe.tick_decoder import TickDecoder
|
|
@@ -39,6 +42,8 @@ class DataStreamingClient(QuotesClient):
|
|
|
39
42
|
self.register_payload_decoder(PAYLOAD_TYPE_QUOTE, QuoteDecoder())
|
|
40
43
|
self.register_payload_decoder(PAYLOAD_TYPE_SHAPSHOT, SnapshotDecoder())
|
|
41
44
|
self.register_payload_decoder(PAYLOAD_TYPE_TICK, TickDecoder())
|
|
45
|
+
self.register_payload_decoder(PAYLOAD_TYPE_EVENT_DEPTH, EventDepthDecoder())
|
|
46
|
+
self.register_payload_decoder(PAYLOAD_TYPE_EVENT_SHAPSHOT, EventSnapshotDecoder())
|
|
42
47
|
|
|
43
48
|
@property
|
|
44
49
|
def on_connect_success(self):
|
|
@@ -0,0 +1,50 @@
|
|
|
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
|
+
from webull.data.common.category import Category
|
|
15
|
+
from webull.data.request.get_event_depth_request import GetEventDepthRequest
|
|
16
|
+
from webull.data.request.get_event_snapshot_request import GetEventSnapshotRequest
|
|
17
|
+
|
|
18
|
+
class EventMarketData:
|
|
19
|
+
def __init__(self, api_client):
|
|
20
|
+
self.client = api_client
|
|
21
|
+
|
|
22
|
+
def get_event_snapshot(self, symbols, category=Category.US_EVENT.name):
|
|
23
|
+
"""
|
|
24
|
+
Get real-time market snapshot data for a event instrument. Price unit is based on usd_cent.
|
|
25
|
+
|
|
26
|
+
:param symbols: Symbol of the event market, supports JSON array format, multiple symbols separated by commas; maximum 100 symbols per query.
|
|
27
|
+
:param category: default is US_EVENT, currently only US_EVENT is supported.
|
|
28
|
+
"""
|
|
29
|
+
snapshot_request = GetEventSnapshotRequest()
|
|
30
|
+
snapshot_request.set_symbols(symbols)
|
|
31
|
+
snapshot_request.set_category(category)
|
|
32
|
+
response = self.client.get_response(snapshot_request)
|
|
33
|
+
return response
|
|
34
|
+
|
|
35
|
+
def get_event_depth(self, symbol, category=Category.US_EVENT.name, depth=10):
|
|
36
|
+
"""
|
|
37
|
+
Get the current order book for a specific event instrument.
|
|
38
|
+
The order book shows all active bid orders for both yes and no sides of a binary market.
|
|
39
|
+
It returns yes bids and no bids only (no asks are returned). Price unit is based on usd_cent.
|
|
40
|
+
|
|
41
|
+
:param symbol:Symbol of the event market.
|
|
42
|
+
:param category: default is US_EVENT, currently only US_EVENT is supported.
|
|
43
|
+
:param depth: Depth of buying and selling orders, default 10 levels, etc.
|
|
44
|
+
"""
|
|
45
|
+
quote_request = GetEventDepthRequest()
|
|
46
|
+
quote_request.set_symbol(symbol)
|
|
47
|
+
quote_request.set_category(category)
|
|
48
|
+
quote_request.set_depth(depth)
|
|
49
|
+
response = self.client.get_response(quote_request)
|
|
50
|
+
return response
|
{webull_openapi_python_sdk-1.0.9 → webull_openapi_python_sdk-1.1.0}/webull/data/quotes/instrument.py
RENAMED
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
14
|
from webull.data.common.category import Category
|
|
15
|
+
from webull.data.request.get_event_instrument_request import GetEventInstrumentRequest
|
|
16
|
+
from webull.data.request.get_event_series_request import GetEventSeriesRequest
|
|
15
17
|
from webull.data.request.get_instruments_request import GetInstrumentsRequest
|
|
16
18
|
from webull.data.request.get_crypto_instruments_request import GetCryptoInstrumentsRequest
|
|
17
19
|
from webull.data.request.get_futures_instruments_request import GetFuturesInstrumentsRequest
|
|
@@ -108,3 +110,44 @@ class Instrument:
|
|
|
108
110
|
futures_instrument_request.set_contract_type(contract_type)
|
|
109
111
|
response = self.client.get_response(futures_instrument_request)
|
|
110
112
|
return response
|
|
113
|
+
|
|
114
|
+
def get_event_series(self, category, last_instrument_id=None, page_size=500):
|
|
115
|
+
"""
|
|
116
|
+
Retrieve multiple series with specified filters.
|
|
117
|
+
A series represents a template for recurring events that follow the same format and rules (e.g., “Monthly Jobs Report” ).
|
|
118
|
+
This endpoint allows you to browse and discover available series templates by category.
|
|
119
|
+
|
|
120
|
+
:param category: The category which this series belongs to.Allowed values:
|
|
121
|
+
ECONOMICS, FINANCIALS, POLITICS, ENTERTAINMENT, SCIENCE_TECHNOLOGY,
|
|
122
|
+
CLIMATE_WEATHER, TRANSPORTATION, CRYPTO, SPORTS
|
|
123
|
+
:param last_instrument_id: Last series id for pagination.
|
|
124
|
+
:param page_size: Page size, default 500.
|
|
125
|
+
"""
|
|
126
|
+
|
|
127
|
+
event_series_request = GetEventSeriesRequest()
|
|
128
|
+
event_series_request.set_category(category)
|
|
129
|
+
if last_instrument_id:
|
|
130
|
+
event_series_request.set_last_instrument_id(last_instrument_id)
|
|
131
|
+
event_series_request.set_page_size(page_size)
|
|
132
|
+
response = self.client.get_response(event_series_request)
|
|
133
|
+
return response
|
|
134
|
+
|
|
135
|
+
def get_event_instrument(self, series_symbol, expiration_date_after=None, last_instrument_id=None, page_size=500):
|
|
136
|
+
"""
|
|
137
|
+
Retrieve profile information for event contract markets based on the series symbol.
|
|
138
|
+
|
|
139
|
+
:param series_symbol: Symbol that identifies this series.
|
|
140
|
+
:param expiration_date_after: Used to filter items whose expiration date is later than a specified date; the default selection is the current day (inclusive).
|
|
141
|
+
:param last_instrument_id: Last series id for pagination.
|
|
142
|
+
:param page_size: Page size, default 500.
|
|
143
|
+
"""
|
|
144
|
+
|
|
145
|
+
event_instrument_request = GetEventInstrumentRequest()
|
|
146
|
+
event_instrument_request.set_series_symbol(series_symbol)
|
|
147
|
+
if expiration_date_after:
|
|
148
|
+
event_instrument_request.set_expiration_date_after(expiration_date_after)
|
|
149
|
+
if last_instrument_id:
|
|
150
|
+
event_instrument_request.set_last_instrument_id(last_instrument_id)
|
|
151
|
+
event_instrument_request.set_page_size(page_size)
|
|
152
|
+
response = self.client.get_response(event_instrument_request)
|
|
153
|
+
return response
|
|
@@ -22,11 +22,11 @@ class AskBidResult:
|
|
|
22
22
|
self.price = Decimal(ask_bid.price) if ask_bid.price else None
|
|
23
23
|
self.size = ask_bid.size
|
|
24
24
|
self.order = []
|
|
25
|
-
if ask_bid.order:
|
|
25
|
+
if hasattr(ask_bid, 'order') and ask_bid.order:
|
|
26
26
|
for order in ask_bid.order:
|
|
27
27
|
self.order.append(Order(order))
|
|
28
28
|
self.broker = []
|
|
29
|
-
if ask_bid.broker:
|
|
29
|
+
if hasattr(ask_bid, 'broker') and ask_bid.broker:
|
|
30
30
|
for broker in ask_bid.broker:
|
|
31
31
|
self.broker.append(Broker(broker))
|
|
32
32
|
|
|
@@ -43,7 +43,13 @@ class AskBidResult:
|
|
|
43
43
|
return self.broker
|
|
44
44
|
|
|
45
45
|
def __repr__(self):
|
|
46
|
-
|
|
46
|
+
result = f"price:{self.price},size:{self.size}"
|
|
47
|
+
# 可选字段
|
|
48
|
+
if self.order:
|
|
49
|
+
result += f",order:{str(self.order)}"
|
|
50
|
+
if self.broker:
|
|
51
|
+
result += f",broker:{str(self.broker)}"
|
|
52
|
+
return result
|
|
47
53
|
|
|
48
54
|
def __str__(self):
|
|
49
55
|
return self.__repr__()
|
|
@@ -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
|
+
# coding=utf-8
|
|
15
|
+
|
|
16
|
+
from webull.data.quotes.subscribe.message_pb2 import EventQuote
|
|
17
|
+
from webull.data.quotes.subscribe.event_depth_result import EventDepthResult
|
|
18
|
+
from webull.data.internal.quotes_payload_decoder import BaseQuotesPayloadDecoder
|
|
19
|
+
|
|
20
|
+
class EventDepthDecoder(BaseQuotesPayloadDecoder):
|
|
21
|
+
def __init__(self):
|
|
22
|
+
super().__init__()
|
|
23
|
+
|
|
24
|
+
def parse(self, payload):
|
|
25
|
+
eventQuote = EventQuote()
|
|
26
|
+
eventQuote.ParseFromString(payload)
|
|
27
|
+
return EventDepthResult(eventQuote)
|
|
@@ -0,0 +1,46 @@
|
|
|
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
|
+
# coding=utf-8
|
|
16
|
+
|
|
17
|
+
from webull.data.quotes.subscribe.basic_result import BasicResult
|
|
18
|
+
from webull.data.quotes.subscribe.ask_bid_result import AskBidResult
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class EventDepthResult:
|
|
22
|
+
def __init__(self, pb_event_depth):
|
|
23
|
+
self.basic = BasicResult(pb_event_depth.basic)
|
|
24
|
+
self.yes_bids = []
|
|
25
|
+
if pb_event_depth.yes_bids:
|
|
26
|
+
for bid in pb_event_depth.yes_bids:
|
|
27
|
+
self.yes_bids.append(AskBidResult(bid))
|
|
28
|
+
self.no_bids = []
|
|
29
|
+
if pb_event_depth.no_bids:
|
|
30
|
+
for bid in pb_event_depth.no_bids:
|
|
31
|
+
self.no_bids.append(AskBidResult(bid))
|
|
32
|
+
|
|
33
|
+
def get_basic(self):
|
|
34
|
+
return self.basic
|
|
35
|
+
|
|
36
|
+
def get_yes_bids(self):
|
|
37
|
+
return self.yes_bids
|
|
38
|
+
|
|
39
|
+
def get_no_bids(self):
|
|
40
|
+
return self.no_bids
|
|
41
|
+
|
|
42
|
+
def __repr__(self):
|
|
43
|
+
return "basic: %s,yes_bids:%s,no_bids:%s" % (self.basic, self.yes_bids, self.no_bids)
|
|
44
|
+
|
|
45
|
+
def __str__(self):
|
|
46
|
+
return self.__repr__()
|
|
@@ -0,0 +1,29 @@
|
|
|
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
|
+
# coding=utf-8
|
|
15
|
+
|
|
16
|
+
from webull.data.quotes.subscribe.message_pb2 import EventSnapshot
|
|
17
|
+
from webull.data.quotes.subscribe.event_snapshot_result import EventSnapshotResult
|
|
18
|
+
from webull.data.internal.quotes_payload_decoder import BaseQuotesPayloadDecoder
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class EventSnapshotDecoder(BaseQuotesPayloadDecoder):
|
|
23
|
+
def __init__(self):
|
|
24
|
+
super().__init__()
|
|
25
|
+
|
|
26
|
+
def parse(self, payload):
|
|
27
|
+
eventSnapshot = EventSnapshot()
|
|
28
|
+
eventSnapshot.ParseFromString(payload)
|
|
29
|
+
return EventSnapshotResult(eventSnapshot)
|