webull-openapi-python-sdk 1.0.7__tar.gz → 1.0.9__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.7 → webull_openapi_python_sdk-1.0.9}/PKG-INFO +1 -1
- webull_openapi_python_sdk-1.0.9/samples/__init__.py +1 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/data/data_client.py +8 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/trade/trade_client_v3.py +32 -1
- webull_openapi_python_sdk-1.0.9/webull/__init__.py +1 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/__init__.py +1 -1
- webull_openapi_python_sdk-1.0.9/webull/data/__init__.py +3 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/timespan.py +2 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/futures_market_data.py +24 -2
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/market_data.py +24 -0
- webull_openapi_python_sdk-1.0.9/webull/data/quotes/subscribe/message_pb2.py +37 -0
- webull_openapi_python_sdk-1.0.9/webull/data/quotes/subscribe/snapshot_result.py +133 -0
- webull_openapi_python_sdk-1.0.9/webull/data/request/get_footprint_request.py +45 -0
- webull_openapi_python_sdk-1.0.9/webull/data/request/get_futures_footprint_request.py +45 -0
- webull_openapi_python_sdk-1.0.9/webull/trade/__init__.py +1 -0
- webull_openapi_python_sdk-1.0.9/webull/trade/request/v3/batch_place_order_request.py +52 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/v3/order_opration_v3.py +13 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull_openapi_python_sdk.egg-info/PKG-INFO +1 -1
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull_openapi_python_sdk.egg-info/SOURCES.txt +3 -0
- webull_openapi_python_sdk-1.0.7/samples/__init__.py +0 -1
- webull_openapi_python_sdk-1.0.7/webull/__init__.py +0 -1
- webull_openapi_python_sdk-1.0.7/webull/data/__init__.py +0 -3
- webull_openapi_python_sdk-1.0.7/webull/data/quotes/subscribe/message_pb2.py +0 -37
- webull_openapi_python_sdk-1.0.7/webull/data/quotes/subscribe/snapshot_result.py +0 -69
- webull_openapi_python_sdk-1.0.7/webull/trade/__init__.py +0 -1
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/ChangeLog.txt +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/LICENSE +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/MANIFEST.in +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/NOTICE +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/README.rst +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/account/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/account/account_client.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/assets/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/assets/assets_client.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/data/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/data/data_streaming_client.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/data/data_streaming_client_async.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/order/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/order/order_option_client.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/order/order_stock_client.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/trade/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/trade/trade_client.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/trade/trade_client_v2.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/trade/trade_event_client.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/setup.cfg +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/setup.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/algorithm/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/algorithm/sha_hmac1.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/algorithm/sha_hmac256.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/composer/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/composer/default_signature_composer.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/credentials.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/signers/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/signers/app_key_signer.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/signers/signer.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/auth/signers/signer_factory.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/cache/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/client.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/common/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/common/api_type.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/common/easy_enum.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/common/region.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/compat.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/context/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/context/request_context_holder.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/data/endpoints.json +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/data/retry_config.json +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/endpoint/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/endpoint/chained_endpoint_resolver.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/endpoint/default_endpoint_resolver.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/endpoint/local_config_regional_endpoint_resolver.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/endpoint/resolver_endpoint_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/endpoint/user_customized_endpoint_resolver.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/exception/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/exception/error_code.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/exception/error_msg.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/exception/exceptions.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/headers.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/client_initializer.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/config/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/config/bean/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/config/bean/query_config_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/config/config_operation.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/bean/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/bean/access_token.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/bean/check_token_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/bean/create_token_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/bean/refresh_token_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/token_manager.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/token_operation.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/initializer/token/token_storage.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/method_type.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/protocol_type.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/http/response.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/retry/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/retry/backoff_strategy.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/retry/retry_condition.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/retry/retry_policy.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/retry/retry_policy_context.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/utils/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/utils/common.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/utils/data.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/utils/desensitize.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/utils/validation.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/__version__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/_internal_utils.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/adapters.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/api.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/auth.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/certs.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/compat.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/cookies.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/exceptions.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/help.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/hooks.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/models.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/certifi/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/certifi/__main__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/certifi/cacert.pem +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/certifi/core.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/big5freq.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/big5prober.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/chardistribution.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/charsetgroupprober.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/charsetprober.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/cli/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/cli/chardetect.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/codingstatemachine.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/compat.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/cp949prober.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/enums.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/escprober.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/escsm.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/eucjpprober.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/euckrfreq.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/euckrprober.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/euctwfreq.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/euctwprober.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/gb2312freq.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/gb2312prober.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/hebrewprober.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/jisfreq.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/jpcntx.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/langbulgarianmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/langcyrillicmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/langgreekmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/langhebrewmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/langhungarianmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/langthaimodel.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/langturkishmodel.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/latin1prober.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/mbcharsetprober.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/mbcsgroupprober.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/mbcssm.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/sbcharsetprober.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/sbcsgroupprober.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/sjisprober.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/universaldetector.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/utf8prober.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/chardet/version.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/_collections.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/connection.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/connectionpool.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/_appengine_environ.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/bindings.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/low_level.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/appengine.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/ntlmpool.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/pyopenssl.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/securetransport.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/contrib/socks.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/exceptions.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/fields.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/filepost.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/packages/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/packages/backports/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/packages/backports/makefile.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/packages/ordered_dict.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/packages/six.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/packages/socks.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/poolmanager.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/response.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/connection.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/queue.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/response.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/retry.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/selectors.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/ssl_.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/timeout.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/url.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages/urllib3/util/wait.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/packages.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/sessions.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/status_codes.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/structures.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/requests/utils.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/core/vendored/six.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/category.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/connect_ack.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/contract_type.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/direction.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/exchange_code.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/exercise_style.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/expiration_cycle.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/instrument_status.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/option_type.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/common/subscribe_type.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/data_client.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/data_streaming_client.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/internal/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/internal/default_retry_policy.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/internal/exceptions.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/internal/quotes_client.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/internal/quotes_decoder.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/internal/quotes_payload_decoder.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/internal/quotes_topic.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/crypto_market_data.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/instrument.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/market_streaming_data.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/ask_bid_result.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/basic_result.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/broker_result.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/order_result.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/payload_type.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/quote_decoder.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/quote_result.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/snapshot_decoder.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/tick_decoder.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/quotes/subscribe/tick_result.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_batch_historical_bars_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_corp_action_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_crypto_historical_bars_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_crypto_instruments_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_crypto_snapshot_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_eod_bars_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_futures_depth_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_futures_historical_bars_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_futures_instruments_by_code_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_futures_instruments_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_futures_products_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_futures_snapshot_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_futures_tick_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_historical_bars_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_instruments_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_quotes_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_snapshot_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/get_tick_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/subscribe_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/data/request/unsubscribe_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/account_type.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/category.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/combo_ticker_type.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/combo_type.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/currency.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/forbid_reason.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/instrument_type.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/markets.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/order_entrust_type.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/order_side.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/order_status.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/order_tif.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/order_type.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/trade_policy.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/trading_date_type.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/common/trailing_type.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/events/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/events/default_retry_policy.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/events/events_pb2.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/events/events_pb2_grpc.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/events/signature_composer.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/events/types.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/cancel_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_account_balance_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_account_positions_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_account_profile_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_app_subscriptions.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_open_orders_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_order_detail_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_today_orders_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_trade_calendar_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_trade_instrument_detail_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_trade_security_detail_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/get_tradeable_instruments_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/palce_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/place_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/place_order_request_v2.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/replace_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/replace_order_request_v2.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/cancel_option_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/cancel_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/get_account_balance_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/get_account_list.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/get_account_list_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/get_account_positions_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/get_order_detail_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/get_order_history_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/get_order_open_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/palce_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/place_option_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/place_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/preview_option_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/preview_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/replace_option_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v2/replace_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v3/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v3/cancel_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v3/get_order_detail_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v3/get_order_history_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v3/get_order_open_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v3/place_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v3/preview_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/request/v3/replace_order_request.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/account_info.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/order_operation.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/trade_calendar.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/trade_instrument.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/v2/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/v2/account_info_v2.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/v2/order_operation_v2.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade/v3/__init__.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade_client.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull/trade/trade_events_client.py +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull_openapi_python_sdk.egg-info/dependency_links.txt +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull_openapi_python_sdk.egg-info/requires.txt +0 -0
- {webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/webull_openapi_python_sdk.egg-info/top_level.txt +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '1.0.9'
|
{webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/data/data_client.py
RENAMED
|
@@ -74,6 +74,10 @@ if __name__ == '__main__':
|
|
|
74
74
|
if res.status_code == 200:
|
|
75
75
|
print('get_tick:', res.json())
|
|
76
76
|
|
|
77
|
+
res = data_client.market_data.get_footprint("AAPL", Category.US_STOCK.name, Timespan.S5.name)
|
|
78
|
+
if res.status_code == 200:
|
|
79
|
+
print('get_footprint:', res.json())
|
|
80
|
+
|
|
77
81
|
res = data_client.market_data.get_quotes("AAPL", Category.US_STOCK.name, depth=1, overnight_required=True)
|
|
78
82
|
if res.status_code == 200:
|
|
79
83
|
print('get_quotes:', res.json())
|
|
@@ -94,6 +98,10 @@ if __name__ == '__main__':
|
|
|
94
98
|
if res.status_code == 200:
|
|
95
99
|
print('get_futures_snapshot:', res.json())
|
|
96
100
|
|
|
101
|
+
res = data_client.futures_market_data.get_futures_footprint("SILZ5,6BM6", Category.US_FUTURES.name, Timespan.S5.name)
|
|
102
|
+
if res.status_code == 200:
|
|
103
|
+
print('get_futures_footprint:', res.json())
|
|
104
|
+
|
|
97
105
|
res = data_client.instrument.get_futures_products(Category.US_FUTURES.name)
|
|
98
106
|
if res.status_code == 200:
|
|
99
107
|
print('get_futures_products:', res.json())
|
{webull_openapi_python_sdk-1.0.7 → webull_openapi_python_sdk-1.0.9}/samples/trade/trade_client_v3.py
RENAMED
|
@@ -208,7 +208,38 @@ if __name__ == '__main__':
|
|
|
208
208
|
if res.status_code == 200:
|
|
209
209
|
print('get master order detail res:', res.json())
|
|
210
210
|
|
|
211
|
-
|
|
211
|
+
# batch place order
|
|
212
|
+
batch_place_orders = [
|
|
213
|
+
{
|
|
214
|
+
"combo_type": "NORMAL",
|
|
215
|
+
"client_order_id": uuid.uuid4().hex,
|
|
216
|
+
"instrument_type": "EQUITY",
|
|
217
|
+
"market": "US",
|
|
218
|
+
"symbol": "AAPL",
|
|
219
|
+
"order_type": "MARKET",
|
|
220
|
+
"entrust_type": "QTY",
|
|
221
|
+
"support_trading_session": "CORE",
|
|
222
|
+
"time_in_force": "DAY",
|
|
223
|
+
"side": "BUY",
|
|
224
|
+
"quantity": "1"
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
"combo_type": "NORMAL",
|
|
228
|
+
"client_order_id": uuid.uuid4().hex,
|
|
229
|
+
"instrument_type": "EQUITY",
|
|
230
|
+
"market": "US",
|
|
231
|
+
"symbol": "TESL",
|
|
232
|
+
"order_type": "MARKET",
|
|
233
|
+
"entrust_type": "QTY",
|
|
234
|
+
"support_trading_session": "CORE",
|
|
235
|
+
"time_in_force": "DAY",
|
|
236
|
+
"side": "BUY",
|
|
237
|
+
"quantity": "1"
|
|
238
|
+
}
|
|
239
|
+
]
|
|
240
|
+
res = trade_client.order_v3.batch_place_order(account_id, batch_place_orders)
|
|
241
|
+
if res.status_code == 200:
|
|
242
|
+
print('batch place normal equity order res:', res.json())
|
|
212
243
|
|
|
213
244
|
|
|
214
245
|
# ============================================================
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '1.0.9'
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
from webull.data.common.category import Category
|
|
15
|
+
from webull.data.request.get_futures_footprint_request import GetFuturesFootprintRequest
|
|
16
16
|
from webull.data.request.get_futures_historical_bars_request import GetFuturesHistoricalBarsRequest
|
|
17
17
|
from webull.data.request.get_futures_snapshot_request import GetFuturesSnapshotRequest
|
|
18
18
|
from webull.data.request.get_futures_depth_request import GetFuturesDepthRequest
|
|
@@ -86,4 +86,26 @@ class FuturesMarketData:
|
|
|
86
86
|
tick_request.set_category(category)
|
|
87
87
|
tick_request.set_count(count)
|
|
88
88
|
response = self.client.get_response(tick_request)
|
|
89
|
+
return response
|
|
90
|
+
|
|
91
|
+
def get_futures_footprint(self, symbols, category, timespan, count=None,
|
|
92
|
+
real_time_required=None, trading_sessions=None):
|
|
93
|
+
"""
|
|
94
|
+
Search the futures footprint based on the list of futures codes and futures types.
|
|
95
|
+
|
|
96
|
+
:param symbols: Futures Securities symbol, such as: BITH6,BITF26.
|
|
97
|
+
:param category: Security type, enumeration.
|
|
98
|
+
:param timespan: Time granularity.
|
|
99
|
+
:param count: Number of entries: 200 by default, maximum 1200.
|
|
100
|
+
:param real_time_required: Whether to include the latest data or candlestick charts that are not yet finalized. The default is false, meaning they are not included. This option is only used for minute candlestick charts.
|
|
101
|
+
:param trading_sessions: RTH: During trading hours, PRE: Before trading hours, ATH: After trading hours. Default: RTH.
|
|
102
|
+
"""
|
|
103
|
+
footprint_request = GetFuturesFootprintRequest()
|
|
104
|
+
footprint_request.set_symbols(symbols)
|
|
105
|
+
footprint_request.set_category(category)
|
|
106
|
+
footprint_request.set_timespan(timespan)
|
|
107
|
+
footprint_request.set_count(count)
|
|
108
|
+
footprint_request.set_real_time_required(real_time_required)
|
|
109
|
+
footprint_request.set_trading_sessions(trading_sessions)
|
|
110
|
+
response = self.client.get_response(footprint_request)
|
|
89
111
|
return response
|
|
@@ -11,9 +11,11 @@
|
|
|
11
11
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
12
|
# See the License for the specific language governing permissions and
|
|
13
13
|
# limitations under the License.
|
|
14
|
+
from webull.data.common.category import Category
|
|
14
15
|
from webull.data.request.get_batch_historical_bars_request import BatchHistoricalBarsRequest
|
|
15
16
|
from webull.data.request.get_corp_action_request import GetCorpActionRequest
|
|
16
17
|
from webull.data.request.get_eod_bars_request import GetEodBarsRequest
|
|
18
|
+
from webull.data.request.get_footprint_request import GetFootprintRequest
|
|
17
19
|
from webull.data.request.get_historical_bars_request import GetHistoricalBarsRequest
|
|
18
20
|
from webull.data.request.get_quotes_request import GetQuotesRequest
|
|
19
21
|
from webull.data.request.get_snapshot_request import GetSnapshotRequest
|
|
@@ -183,3 +185,25 @@ class MarketData:
|
|
|
183
185
|
eod_corp_action_request.set_last_update_time(last_update_time)
|
|
184
186
|
response = self.client.get_response(eod_corp_action_request)
|
|
185
187
|
return response
|
|
188
|
+
|
|
189
|
+
def get_footprint(self, symbols, category, timespan, count=None,
|
|
190
|
+
real_time_required=None, trading_sessions=None):
|
|
191
|
+
"""
|
|
192
|
+
Search the footprint based on the list of security codes and security types.
|
|
193
|
+
|
|
194
|
+
:param symbols: Securities symbol, such as: 00700,00981.
|
|
195
|
+
:param category: Security type, enumeration.
|
|
196
|
+
:param timespan: Time granularity.
|
|
197
|
+
:param count: Number of entries: 200 by default, maximum 1200.
|
|
198
|
+
:param real_time_required: Whether to include the latest data or candlestick charts that are not yet finalized. The default is false, meaning they are not included. This option is only used for minute candlestick charts.
|
|
199
|
+
:param trading_sessions: RTH: During trading hours, PRE: Before trading hours, ATH: After trading hours. Default: RTH.
|
|
200
|
+
"""
|
|
201
|
+
footprint_request = GetFootprintRequest()
|
|
202
|
+
footprint_request.set_symbols(symbols)
|
|
203
|
+
footprint_request.set_category(category)
|
|
204
|
+
footprint_request.set_timespan(timespan)
|
|
205
|
+
footprint_request.set_count(count)
|
|
206
|
+
footprint_request.set_real_time_required(real_time_required)
|
|
207
|
+
footprint_request.set_trading_sessions(trading_sessions)
|
|
208
|
+
response = self.client.get_response(footprint_request)
|
|
209
|
+
return response
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# -*- coding: utf-8 -*-
|
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
+
# source: message.proto
|
|
4
|
+
"""Generated protocol buffer code."""
|
|
5
|
+
from google.protobuf.internal import builder as _builder
|
|
6
|
+
from google.protobuf import descriptor as _descriptor
|
|
7
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
8
|
+
from google.protobuf import symbol_database as _symbol_database
|
|
9
|
+
# @@protoc_insertion_point(imports)
|
|
10
|
+
|
|
11
|
+
_sym_db = _symbol_database.Default()
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rmessage.proto\"Z\n\x05\x42\x61sic\x12\x0e\n\x06symbol\x18\x01 \x01(\t\x12\x15\n\rinstrument_id\x18\x02 \x01(\t\x12\x11\n\ttimestamp\x18\x03 \x01(\t\x12\x17\n\x0ftrading_session\x18\x04 \x01(\t\"\xd6\x03\n\x08Snapshot\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\x12\n\ntrade_time\x18\x02 \x01(\t\x12\r\n\x05price\x18\x03 \x01(\t\x12\x0c\n\x04open\x18\x04 \x01(\t\x12\x0c\n\x04high\x18\x05 \x01(\t\x12\x0b\n\x03low\x18\x06 \x01(\t\x12\x11\n\tpre_close\x18\x07 \x01(\t\x12\x0e\n\x06volume\x18\x08 \x01(\t\x12\x0e\n\x06\x63hange\x18\t \x01(\t\x12\x14\n\x0c\x63hange_ratio\x18\n \x01(\t\x12\x16\n\x0e\x65xt_trade_time\x18\x0b \x01(\t\x12\x11\n\text_price\x18\x0c \x01(\t\x12\x10\n\x08\x65xt_high\x18\r \x01(\t\x12\x0f\n\x07\x65xt_low\x18\x0e \x01(\t\x12\x12\n\next_volume\x18\x0f \x01(\t\x12\x12\n\next_change\x18\x10 \x01(\t\x12\x18\n\x10\x65xt_change_ratio\x18\x11 \x01(\t\x12\x16\n\x0eovn_trade_time\x18\x12 \x01(\t\x12\x11\n\tovn_price\x18\x13 \x01(\t\x12\x10\n\x08ovn_high\x18\x14 \x01(\t\x12\x0f\n\x07ovn_low\x18\x15 \x01(\t\x12\x12\n\novn_volume\x18\x16 \x01(\t\x12\x12\n\novn_change\x18\x17 \x01(\t\x12\x18\n\x10ovn_change_ratio\x18\x18 \x01(\t\"L\n\x05Quote\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\x15\n\x04\x61sks\x18\x02 \x03(\x0b\x32\x07.AskBid\x12\x15\n\x04\x62ids\x18\x03 \x03(\x0b\x32\x07.AskBid\"X\n\x04Tick\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\x0c\n\x04time\x18\x02 \x01(\t\x12\r\n\x05price\x18\x03 \x01(\t\x12\x0e\n\x06volume\x18\x04 \x01(\t\x12\x0c\n\x04side\x18\x05 \x01(\t\"U\n\x06\x41skBid\x12\r\n\x05price\x18\x01 \x01(\t\x12\x0c\n\x04size\x18\x02 \x01(\t\x12\x15\n\x05order\x18\x03 \x03(\x0b\x32\x06.Order\x12\x17\n\x06\x62roker\x18\x04 \x03(\x0b\x32\x07.Broker\"#\n\x05Order\x12\x0c\n\x04mpid\x18\x01 \x01(\t\x12\x0c\n\x04size\x18\x02 \x01(\t\"#\n\x06\x42roker\x12\x0b\n\x03\x62id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\tb\x06proto3')
|
|
17
|
+
|
|
18
|
+
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
|
|
19
|
+
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'message_pb2', globals())
|
|
20
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
21
|
+
|
|
22
|
+
DESCRIPTOR._options = None
|
|
23
|
+
_BASIC._serialized_start=17
|
|
24
|
+
_BASIC._serialized_end=107
|
|
25
|
+
_SNAPSHOT._serialized_start=110
|
|
26
|
+
_SNAPSHOT._serialized_end=580
|
|
27
|
+
_QUOTE._serialized_start=582
|
|
28
|
+
_QUOTE._serialized_end=658
|
|
29
|
+
_TICK._serialized_start=660
|
|
30
|
+
_TICK._serialized_end=748
|
|
31
|
+
_ASKBID._serialized_start=750
|
|
32
|
+
_ASKBID._serialized_end=835
|
|
33
|
+
_ORDER._serialized_start=837
|
|
34
|
+
_ORDER._serialized_end=872
|
|
35
|
+
_BROKER._serialized_start=874
|
|
36
|
+
_BROKER._serialized_end=909
|
|
37
|
+
# @@protoc_insertion_point(module_scope)
|
|
@@ -0,0 +1,133 @@
|
|
|
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 decimal import Decimal
|
|
18
|
+
from webull.data.quotes.subscribe.basic_result import BasicResult
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class SnapshotResult:
|
|
22
|
+
def __init__(self, pb_snapshot):
|
|
23
|
+
self.basic = BasicResult(pb_snapshot.basic)
|
|
24
|
+
self.last_trade_time = int(pb_snapshot.trade_time) if pb_snapshot.trade_time else None
|
|
25
|
+
self.price = Decimal(pb_snapshot.price) if pb_snapshot.price else None
|
|
26
|
+
self.open = Decimal(pb_snapshot.open) if pb_snapshot.open else None
|
|
27
|
+
self.high = Decimal(pb_snapshot.high) if pb_snapshot.high else None
|
|
28
|
+
self.low = Decimal(pb_snapshot.low) if pb_snapshot.low else None
|
|
29
|
+
self.pre_close = Decimal(pb_snapshot.pre_close) if pb_snapshot.pre_close else None
|
|
30
|
+
self.close = Decimal(pb_snapshot.open) if pb_snapshot.open else None
|
|
31
|
+
self.volume = Decimal(pb_snapshot.volume) if pb_snapshot.volume else None
|
|
32
|
+
self.change = Decimal(pb_snapshot.change) if pb_snapshot.change else None
|
|
33
|
+
self.change_ratio = Decimal(pb_snapshot.change_ratio) if pb_snapshot.change_ratio else None
|
|
34
|
+
self.ext_trade_time = int(pb_snapshot.ext_trade_time) if pb_snapshot.ext_trade_time else None
|
|
35
|
+
self.ext_price = Decimal(pb_snapshot.ext_price) if pb_snapshot.ext_price else None
|
|
36
|
+
self.ext_high = Decimal(pb_snapshot.ext_high) if pb_snapshot.ext_high else None
|
|
37
|
+
self.ext_low = Decimal(pb_snapshot.ext_low) if pb_snapshot.ext_low else None
|
|
38
|
+
self.ext_volume = Decimal(pb_snapshot.ext_volume) if pb_snapshot.ext_volume else None
|
|
39
|
+
self.ext_change = Decimal(pb_snapshot.ext_change) if pb_snapshot.ext_change else None
|
|
40
|
+
self.ext_change_ratio = Decimal(pb_snapshot.ext_change_ratio) if pb_snapshot.ext_change_ratio else None
|
|
41
|
+
self.ovn_trade_time = int(pb_snapshot.ovn_trade_time) if pb_snapshot.ovn_trade_time else None
|
|
42
|
+
self.ovn_price = Decimal(pb_snapshot.ovn_price) if pb_snapshot.ovn_price else None
|
|
43
|
+
self.ovn_high = Decimal(pb_snapshot.ovn_high) if pb_snapshot.ovn_high else None
|
|
44
|
+
self.ovn_low = Decimal(pb_snapshot.ovn_low) if pb_snapshot.ovn_low else None
|
|
45
|
+
self.ovn_volume = Decimal(pb_snapshot.ovn_volume) if pb_snapshot.ovn_volume else None
|
|
46
|
+
self.ovn_change = Decimal(pb_snapshot.ovn_change) if pb_snapshot.ovn_change else None
|
|
47
|
+
self.ovn_change_ratio = Decimal(pb_snapshot.ovn_change_ratio) if pb_snapshot.ovn_change_ratio else None
|
|
48
|
+
|
|
49
|
+
def get_basic(self):
|
|
50
|
+
return self.basic
|
|
51
|
+
|
|
52
|
+
def get_last_trade_time(self):
|
|
53
|
+
return self.last_trade_time
|
|
54
|
+
|
|
55
|
+
def get_price(self):
|
|
56
|
+
return self.price
|
|
57
|
+
|
|
58
|
+
def get_open(self):
|
|
59
|
+
return self.open
|
|
60
|
+
|
|
61
|
+
def get_high(self):
|
|
62
|
+
return self.high
|
|
63
|
+
|
|
64
|
+
def get_low(self):
|
|
65
|
+
return self.low
|
|
66
|
+
|
|
67
|
+
def get_pre_close(self):
|
|
68
|
+
return self.pre_close
|
|
69
|
+
|
|
70
|
+
def get_close(self):
|
|
71
|
+
return self.close
|
|
72
|
+
|
|
73
|
+
def get_volume(self):
|
|
74
|
+
return self.volume
|
|
75
|
+
|
|
76
|
+
def get_change(self):
|
|
77
|
+
return self.change
|
|
78
|
+
|
|
79
|
+
def get_change_ratio(self):
|
|
80
|
+
return self.change_ratio
|
|
81
|
+
|
|
82
|
+
def get_ext_trade_time(self):
|
|
83
|
+
return self.ext_trade_time
|
|
84
|
+
|
|
85
|
+
def get_ext_price(self):
|
|
86
|
+
return self.ext_price
|
|
87
|
+
|
|
88
|
+
def get_ext_high(self):
|
|
89
|
+
return self.ext_high
|
|
90
|
+
|
|
91
|
+
def get_ext_low(self):
|
|
92
|
+
return self.ext_low
|
|
93
|
+
|
|
94
|
+
def get_ext_volume(self):
|
|
95
|
+
return self.ext_volume
|
|
96
|
+
|
|
97
|
+
def get_ext_change(self):
|
|
98
|
+
return self.ext_change
|
|
99
|
+
|
|
100
|
+
def get_ext_change_ratio(self):
|
|
101
|
+
return self.ext_change_ratio
|
|
102
|
+
|
|
103
|
+
def get_ovn_trade_time(self):
|
|
104
|
+
return self.ovn_trade_time
|
|
105
|
+
|
|
106
|
+
def get_ovn_price(self):
|
|
107
|
+
return self.ovn_price
|
|
108
|
+
|
|
109
|
+
def get_ovn_high(self):
|
|
110
|
+
return self.ovn_high
|
|
111
|
+
|
|
112
|
+
def get_ovn_low(self):
|
|
113
|
+
return self.ovn_low
|
|
114
|
+
|
|
115
|
+
def get_ovn_volume(self):
|
|
116
|
+
return self.ovn_volume
|
|
117
|
+
|
|
118
|
+
def get_ovn_change(self):
|
|
119
|
+
return self.ovn_change
|
|
120
|
+
|
|
121
|
+
def get_ovn_change_ratio(self):
|
|
122
|
+
return self.ovn_change_ratio
|
|
123
|
+
|
|
124
|
+
def __repr__(self):
|
|
125
|
+
attrs = ['last_trade_time', 'price', 'open', 'high', 'low', 'pre_close', 'close', 'volume', 'change', 'change_ratio']
|
|
126
|
+
ext_attrs = [f"ext_{name}" for name in ['trade_time', 'price', 'high', 'low', 'volume', 'change', 'change_ratio']]
|
|
127
|
+
ovn_attrs = [f"ovn_{name}" for name in ['trade_time', 'price', 'high', 'low', 'volume', 'change', 'change_ratio']]
|
|
128
|
+
all_attrs = attrs + ext_attrs + ovn_attrs
|
|
129
|
+
attr_str = ', '.join(f"{name}:{getattr(self, name)}" for name in all_attrs)
|
|
130
|
+
return f"{self.basic}, {attr_str}"
|
|
131
|
+
|
|
132
|
+
def __str__(self):
|
|
133
|
+
return self.__repr__()
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
+
from webull.core.request import ApiRequest
|
|
17
|
+
|
|
18
|
+
class GetFootprintRequest(ApiRequest):
|
|
19
|
+
def __init__(self):
|
|
20
|
+
ApiRequest.__init__(self, "/openapi/market-data/stock/footprint", version='v2', method="GET", query_params={})
|
|
21
|
+
|
|
22
|
+
def set_symbols(self, symbols):
|
|
23
|
+
if isinstance(symbols, str):
|
|
24
|
+
self.add_query_param("symbols", symbols)
|
|
25
|
+
elif isinstance(symbols, list):
|
|
26
|
+
self.add_query_param("symbols", ",".join(symbols))
|
|
27
|
+
|
|
28
|
+
def set_category(self, category):
|
|
29
|
+
self.add_query_param("category", category)
|
|
30
|
+
|
|
31
|
+
def set_timespan(self, timespan):
|
|
32
|
+
if timespan:
|
|
33
|
+
self.add_query_param("timespan", timespan)
|
|
34
|
+
|
|
35
|
+
def set_count(self, count):
|
|
36
|
+
if count:
|
|
37
|
+
self.add_query_param("count", count)
|
|
38
|
+
|
|
39
|
+
def set_real_time_required(self, real_time_required):
|
|
40
|
+
if real_time_required:
|
|
41
|
+
self.add_query_param("real_time_required", real_time_required)
|
|
42
|
+
|
|
43
|
+
def set_trading_sessions(self, trading_sessions):
|
|
44
|
+
if trading_sessions:
|
|
45
|
+
self.add_query_param("trading_sessions", trading_sessions)
|
|
@@ -0,0 +1,45 @@
|
|
|
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
|
+
from webull.core.request import ApiRequest
|
|
17
|
+
|
|
18
|
+
class GetFuturesFootprintRequest(ApiRequest):
|
|
19
|
+
def __init__(self):
|
|
20
|
+
ApiRequest.__init__(self, "/openapi/market-data/futures/footprint", version='v2', method="GET", query_params={})
|
|
21
|
+
|
|
22
|
+
def set_symbols(self, symbols):
|
|
23
|
+
if isinstance(symbols, str):
|
|
24
|
+
self.add_query_param("symbols", symbols)
|
|
25
|
+
elif isinstance(symbols, list):
|
|
26
|
+
self.add_query_param("symbols", ",".join(symbols))
|
|
27
|
+
|
|
28
|
+
def set_category(self, category):
|
|
29
|
+
self.add_query_param("category", category)
|
|
30
|
+
|
|
31
|
+
def set_timespan(self, timespan):
|
|
32
|
+
if timespan:
|
|
33
|
+
self.add_query_param("timespan", timespan)
|
|
34
|
+
|
|
35
|
+
def set_count(self, count):
|
|
36
|
+
if count:
|
|
37
|
+
self.add_query_param("count", count)
|
|
38
|
+
|
|
39
|
+
def set_real_time_required(self, real_time_required):
|
|
40
|
+
if real_time_required:
|
|
41
|
+
self.add_query_param("real_time_required", real_time_required)
|
|
42
|
+
|
|
43
|
+
def set_trading_sessions(self, trading_sessions):
|
|
44
|
+
if trading_sessions:
|
|
45
|
+
self.add_query_param("trading_sessions", trading_sessions)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = '1.0.9'
|
|
@@ -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
|
+
import json
|
|
15
|
+
# coding=utf-8
|
|
16
|
+
|
|
17
|
+
from webull.core.request import ApiRequest
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class BatchPlaceOrderRequest(ApiRequest):
|
|
21
|
+
def __init__(self):
|
|
22
|
+
super().__init__("/openapi/trade/order/batch-place", version='v2', method="POST", body_params={})
|
|
23
|
+
|
|
24
|
+
def set_account_id(self, account_id):
|
|
25
|
+
self.add_body_params("account_id", account_id)
|
|
26
|
+
|
|
27
|
+
def set_batch_orders(self, batch_orders):
|
|
28
|
+
self.add_body_params("batch_orders", batch_orders)
|
|
29
|
+
|
|
30
|
+
def add_custom_headers_from_order(self, batch_orders):
|
|
31
|
+
if not batch_orders:
|
|
32
|
+
return
|
|
33
|
+
|
|
34
|
+
if isinstance(batch_orders, list) and batch_orders[0]:
|
|
35
|
+
first_order = batch_orders[0]
|
|
36
|
+
leg_list = first_order.get("legs")
|
|
37
|
+
if leg_list is not None and isinstance(leg_list, list):
|
|
38
|
+
for sub_leg in leg_list:
|
|
39
|
+
if (sub_leg and isinstance(sub_leg, dict)
|
|
40
|
+
and sub_leg.get("instrument_type") == "OPTION"):
|
|
41
|
+
instrument_type = sub_leg.get("instrument_type")
|
|
42
|
+
market = sub_leg.get("market")
|
|
43
|
+
category = market + "_" + instrument_type
|
|
44
|
+
if category is not None:
|
|
45
|
+
self.add_header("category", category)
|
|
46
|
+
return
|
|
47
|
+
|
|
48
|
+
market = first_order.get("market")
|
|
49
|
+
instrument_type = first_order.get("instrument_type")
|
|
50
|
+
category = market + "_" + instrument_type
|
|
51
|
+
if category is not None:
|
|
52
|
+
self.add_header("category", category)
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
# coding=utf-8
|
|
15
15
|
from webull.trade.request.v3.preview_order_request import PreviewOrderRequest
|
|
16
16
|
from webull.trade.request.v3.place_order_request import PlaceOrderRequest
|
|
17
|
+
from webull.trade.request.v3.batch_place_order_request import BatchPlaceOrderRequest
|
|
17
18
|
from webull.trade.request.v3.replace_order_request import ReplaceOrderRequest
|
|
18
19
|
from webull.trade.request.v3.cancel_order_request import CancelOrderRequest
|
|
19
20
|
from webull.trade.request.v3.get_order_detail_request import OrderDetailRequest
|
|
@@ -50,6 +51,18 @@ class OrderOperationV3:
|
|
|
50
51
|
response = self.client.get_response(place_order_request)
|
|
51
52
|
return response
|
|
52
53
|
|
|
54
|
+
def batch_place_order(self, account_id, batch_orders):
|
|
55
|
+
"""
|
|
56
|
+
This interface is currently supported only for Webull US.
|
|
57
|
+
Support for other regions will be available in future updates.
|
|
58
|
+
"""
|
|
59
|
+
batch_place_order_request = BatchPlaceOrderRequest()
|
|
60
|
+
batch_place_order_request.set_account_id(account_id=account_id)
|
|
61
|
+
batch_place_order_request.set_batch_orders(batch_orders=batch_orders)
|
|
62
|
+
batch_place_order_request.add_custom_headers_from_order(batch_orders)
|
|
63
|
+
response = self.client.get_response(batch_place_order_request)
|
|
64
|
+
return response
|
|
65
|
+
|
|
53
66
|
def replace_order(self, account_id, modify_orders, client_combo_order_id=None):
|
|
54
67
|
"""
|
|
55
68
|
This interface is currently supported only for Webull US.
|
|
@@ -241,7 +241,9 @@ webull/data/request/get_crypto_historical_bars_request.py
|
|
|
241
241
|
webull/data/request/get_crypto_instruments_request.py
|
|
242
242
|
webull/data/request/get_crypto_snapshot_request.py
|
|
243
243
|
webull/data/request/get_eod_bars_request.py
|
|
244
|
+
webull/data/request/get_footprint_request.py
|
|
244
245
|
webull/data/request/get_futures_depth_request.py
|
|
246
|
+
webull/data/request/get_futures_footprint_request.py
|
|
245
247
|
webull/data/request/get_futures_historical_bars_request.py
|
|
246
248
|
webull/data/request/get_futures_instruments_by_code_request.py
|
|
247
249
|
webull/data/request/get_futures_instruments_request.py
|
|
@@ -317,6 +319,7 @@ webull/trade/request/v2/preview_order_request.py
|
|
|
317
319
|
webull/trade/request/v2/replace_option_request.py
|
|
318
320
|
webull/trade/request/v2/replace_order_request.py
|
|
319
321
|
webull/trade/request/v3/__init__.py
|
|
322
|
+
webull/trade/request/v3/batch_place_order_request.py
|
|
320
323
|
webull/trade/request/v3/cancel_order_request.py
|
|
321
324
|
webull/trade/request/v3/get_order_detail_request.py
|
|
322
325
|
webull/trade/request/v3/get_order_history_request.py
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '1.0.7'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = '1.0.7'
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
|
3
|
-
# source: message.proto
|
|
4
|
-
"""Generated protocol buffer code."""
|
|
5
|
-
from google.protobuf.internal import builder as _builder
|
|
6
|
-
from google.protobuf import descriptor as _descriptor
|
|
7
|
-
from google.protobuf import descriptor_pool as _descriptor_pool
|
|
8
|
-
from google.protobuf import symbol_database as _symbol_database
|
|
9
|
-
# @@protoc_insertion_point(imports)
|
|
10
|
-
|
|
11
|
-
_sym_db = _symbol_database.Default()
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\rmessage.proto\"Z\n\x05\x42\x61sic\x12\x0e\n\x06symbol\x18\x01 \x01(\t\x12\x15\n\rinstrument_id\x18\x02 \x01(\t\x12\x11\n\ttimestamp\x18\x03 \x01(\t\x12\x17\n\x0ftrading_session\x18\x04 \x01(\t\"\xb6\x01\n\x08Snapshot\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\x12\n\ntrade_time\x18\x02 \x01(\t\x12\r\n\x05price\x18\x03 \x01(\t\x12\x0c\n\x04open\x18\x04 \x01(\t\x12\x0c\n\x04high\x18\x05 \x01(\t\x12\x0b\n\x03low\x18\x06 \x01(\t\x12\x11\n\tpre_close\x18\x07 \x01(\t\x12\x0e\n\x06volume\x18\x08 \x01(\t\x12\x0e\n\x06\x63hange\x18\t \x01(\t\x12\x14\n\x0c\x63hange_ratio\x18\n \x01(\t\"L\n\x05Quote\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\x15\n\x04\x61sks\x18\x02 \x03(\x0b\x32\x07.AskBid\x12\x15\n\x04\x62ids\x18\x03 \x03(\x0b\x32\x07.AskBid\"X\n\x04Tick\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\x0c\n\x04time\x18\x02 \x01(\t\x12\r\n\x05price\x18\x03 \x01(\t\x12\x0e\n\x06volume\x18\x04 \x01(\t\x12\x0c\n\x04side\x18\x05 \x01(\t\"U\n\x06\x41skBid\x12\r\n\x05price\x18\x01 \x01(\t\x12\x0c\n\x04size\x18\x02 \x01(\t\x12\x15\n\x05order\x18\x03 \x03(\x0b\x32\x06.Order\x12\x17\n\x06\x62roker\x18\x04 \x03(\x0b\x32\x07.Broker\"#\n\x05Order\x12\x0c\n\x04mpid\x18\x01 \x01(\t\x12\x0c\n\x04size\x18\x02 \x01(\t\"#\n\x06\x42roker\x12\x0b\n\x03\x62id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\tb\x06proto3')
|
|
17
|
-
|
|
18
|
-
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
|
|
19
|
-
_builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'message_pb2', globals())
|
|
20
|
-
if _descriptor._USE_C_DESCRIPTORS == False:
|
|
21
|
-
|
|
22
|
-
DESCRIPTOR._options = None
|
|
23
|
-
_BASIC._serialized_start=17
|
|
24
|
-
_BASIC._serialized_end=107
|
|
25
|
-
_SNAPSHOT._serialized_start=110
|
|
26
|
-
_SNAPSHOT._serialized_end=292
|
|
27
|
-
_QUOTE._serialized_start=294
|
|
28
|
-
_QUOTE._serialized_end=370
|
|
29
|
-
_TICK._serialized_start=372
|
|
30
|
-
_TICK._serialized_end=460
|
|
31
|
-
_ASKBID._serialized_start=462
|
|
32
|
-
_ASKBID._serialized_end=547
|
|
33
|
-
_ORDER._serialized_start=549
|
|
34
|
-
_ORDER._serialized_end=584
|
|
35
|
-
_BROKER._serialized_start=586
|
|
36
|
-
_BROKER._serialized_end=621
|
|
37
|
-
# @@protoc_insertion_point(module_scope)
|