webull-openapi-python-sdk 1.0.3__tar.gz → 1.0.5__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.
Files changed (339) hide show
  1. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/PKG-INFO +1 -1
  2. webull_openapi_python_sdk-1.0.5/samples/__init__.py +1 -0
  3. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/samples/data/data_client.py +27 -0
  4. webull_openapi_python_sdk-1.0.5/samples/trade/trade_client_v3.py +420 -0
  5. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/samples/trade/trade_event_client.py +3 -1
  6. webull_openapi_python_sdk-1.0.5/webull/__init__.py +1 -0
  7. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/__init__.py +1 -1
  8. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/data/endpoints.json +1 -1
  9. webull_openapi_python_sdk-1.0.5/webull/data/__init__.py +3 -0
  10. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/common/category.py +3 -2
  11. webull_openapi_python_sdk-1.0.5/webull/data/common/contract_type.py +20 -0
  12. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/data_client.py +4 -0
  13. webull_openapi_python_sdk-1.0.5/webull/data/quotes/crypto_market_data.py +58 -0
  14. webull_openapi_python_sdk-1.0.5/webull/data/quotes/futures_market_data.py +89 -0
  15. webull_openapi_python_sdk-1.0.5/webull/data/quotes/instrument.py +110 -0
  16. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/quotes/market_data.py +0 -2
  17. webull_openapi_python_sdk-1.0.5/webull/data/request/get_crypto_historical_bars_request.py +40 -0
  18. webull_openapi_python_sdk-1.0.5/webull/data/request/get_crypto_instruments_request.py +44 -0
  19. webull_openapi_python_sdk-1.0.3/webull/data/request/get_instruments_request.py → webull_openapi_python_sdk-1.0.5/webull/data/request/get_crypto_snapshot_request.py +5 -4
  20. webull_openapi_python_sdk-1.0.5/webull/data/request/get_futures_depth_request.py +32 -0
  21. webull_openapi_python_sdk-1.0.5/webull/data/request/get_futures_historical_bars_request.py +36 -0
  22. webull_openapi_python_sdk-1.0.5/webull/data/request/get_futures_instruments_by_code_request.py +36 -0
  23. webull_openapi_python_sdk-1.0.5/webull/data/request/get_futures_instruments_request.py +31 -0
  24. webull_openapi_python_sdk-1.0.5/webull/data/request/get_futures_products_request.py +25 -0
  25. webull_openapi_python_sdk-1.0.5/webull/data/request/get_futures_snapshot_request.py +31 -0
  26. webull_openapi_python_sdk-1.0.5/webull/data/request/get_futures_tick_request.py +31 -0
  27. webull_openapi_python_sdk-1.0.5/webull/data/request/get_instruments_request.py +42 -0
  28. webull_openapi_python_sdk-1.0.5/webull/trade/__init__.py +2 -0
  29. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/common/category.py +2 -3
  30. webull_openapi_python_sdk-1.0.3/webull/trade/request/v2/place_order_request.py → webull_openapi_python_sdk-1.0.5/webull/trade/request/v2/palce_order_request.py +8 -6
  31. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/v2/place_option_request.py +7 -7
  32. webull_openapi_python_sdk-1.0.3/webull/trade/request/v2/palce_order_request.py → webull_openapi_python_sdk-1.0.5/webull/trade/request/v2/place_order_request.py +4 -6
  33. webull_openapi_python_sdk-1.0.5/webull/trade/request/v3/cancel_order_request.py +28 -0
  34. webull_openapi_python_sdk-1.0.5/webull/trade/request/v3/get_order_detail_request.py +26 -0
  35. webull_openapi_python_sdk-1.0.5/webull/trade/request/v3/get_order_history_request.py +35 -0
  36. webull_openapi_python_sdk-1.0.5/webull/trade/request/v3/get_order_open_request.py +29 -0
  37. webull_openapi_python_sdk-1.0.5/webull/trade/request/v3/place_order_request.py +56 -0
  38. webull_openapi_python_sdk-1.0.5/webull/trade/request/v3/preview_order_request.py +31 -0
  39. webull_openapi_python_sdk-1.0.5/webull/trade/request/v3/replace_order_request.py +31 -0
  40. webull_openapi_python_sdk-1.0.5/webull/trade/trade/v2/__init__.py +0 -0
  41. webull_openapi_python_sdk-1.0.5/webull/trade/trade/v3/__init__.py +0 -0
  42. webull_openapi_python_sdk-1.0.5/webull/trade/trade/v3/order_opration_v3.py +134 -0
  43. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/trade_client.py +2 -0
  44. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull_openapi_python_sdk.egg-info/PKG-INFO +1 -1
  45. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull_openapi_python_sdk.egg-info/SOURCES.txt +24 -0
  46. webull_openapi_python_sdk-1.0.3/samples/__init__.py +0 -1
  47. webull_openapi_python_sdk-1.0.3/webull/__init__.py +0 -1
  48. webull_openapi_python_sdk-1.0.3/webull/data/__init__.py +0 -3
  49. webull_openapi_python_sdk-1.0.3/webull/data/quotes/instrument.py +0 -33
  50. webull_openapi_python_sdk-1.0.3/webull/trade/__init__.py +0 -2
  51. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/ChangeLog.txt +0 -0
  52. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/LICENSE +0 -0
  53. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/MANIFEST.in +0 -0
  54. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/NOTICE +0 -0
  55. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/README.rst +0 -0
  56. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/samples/data/__init__.py +0 -0
  57. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/samples/data/data_streaming_client.py +0 -0
  58. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/samples/data/data_streaming_client_async.py +0 -0
  59. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/samples/trade/__init__.py +0 -0
  60. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/samples/trade/trade_client.py +0 -0
  61. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/samples/trade/trade_client_v2.py +0 -0
  62. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/setup.cfg +0 -0
  63. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/setup.py +0 -0
  64. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/auth/__init__.py +0 -0
  65. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/auth/algorithm/__init__.py +0 -0
  66. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/auth/algorithm/sha_hmac1.py +0 -0
  67. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/auth/algorithm/sha_hmac256.py +0 -0
  68. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/auth/composer/__init__.py +0 -0
  69. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/auth/composer/default_signature_composer.py +0 -0
  70. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/auth/credentials.py +0 -0
  71. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/auth/signers/__init__.py +0 -0
  72. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/auth/signers/app_key_signer.py +0 -0
  73. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/auth/signers/signer.py +0 -0
  74. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/auth/signers/signer_factory.py +0 -0
  75. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/cache/__init__.py +0 -0
  76. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/client.py +0 -0
  77. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/common/__init__.py +0 -0
  78. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/common/api_type.py +0 -0
  79. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/common/easy_enum.py +0 -0
  80. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/common/region.py +0 -0
  81. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/compat.py +0 -0
  82. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/context/__init__.py +0 -0
  83. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/context/request_context_holder.py +0 -0
  84. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/data/retry_config.json +0 -0
  85. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/endpoint/__init__.py +0 -0
  86. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/endpoint/chained_endpoint_resolver.py +0 -0
  87. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/endpoint/default_endpoint_resolver.py +0 -0
  88. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/endpoint/local_config_regional_endpoint_resolver.py +0 -0
  89. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/endpoint/resolver_endpoint_request.py +0 -0
  90. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/endpoint/user_customized_endpoint_resolver.py +0 -0
  91. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/exception/__init__.py +0 -0
  92. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/exception/error_code.py +0 -0
  93. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/exception/error_msg.py +0 -0
  94. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/exception/exceptions.py +0 -0
  95. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/headers.py +0 -0
  96. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/__init__.py +0 -0
  97. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/initializer/__init__.py +0 -0
  98. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/initializer/client_initializer.py +0 -0
  99. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/initializer/config/__init__.py +0 -0
  100. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/initializer/config/bean/__init__.py +0 -0
  101. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/initializer/config/bean/query_config_request.py +0 -0
  102. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/initializer/config/config_operation.py +0 -0
  103. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/initializer/token/__init__.py +0 -0
  104. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/initializer/token/bean/__init__.py +0 -0
  105. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/initializer/token/bean/access_token.py +0 -0
  106. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/initializer/token/bean/check_token_request.py +0 -0
  107. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/initializer/token/bean/create_token_request.py +0 -0
  108. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/initializer/token/bean/refresh_token_request.py +0 -0
  109. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/initializer/token/token_manager.py +0 -0
  110. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/initializer/token/token_operation.py +0 -0
  111. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/method_type.py +0 -0
  112. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/protocol_type.py +0 -0
  113. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/request.py +0 -0
  114. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/http/response.py +0 -0
  115. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/request.py +0 -0
  116. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/retry/__init__.py +0 -0
  117. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/retry/backoff_strategy.py +0 -0
  118. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/retry/retry_condition.py +0 -0
  119. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/retry/retry_policy.py +0 -0
  120. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/retry/retry_policy_context.py +0 -0
  121. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/utils/__init__.py +0 -0
  122. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/utils/common.py +0 -0
  123. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/utils/data.py +0 -0
  124. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/utils/desensitize.py +0 -0
  125. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/utils/validation.py +0 -0
  126. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/__init__.py +0 -0
  127. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/__init__.py +0 -0
  128. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/__version__.py +0 -0
  129. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/_internal_utils.py +0 -0
  130. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/adapters.py +0 -0
  131. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/api.py +0 -0
  132. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/auth.py +0 -0
  133. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/certs.py +0 -0
  134. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/compat.py +0 -0
  135. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/cookies.py +0 -0
  136. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/exceptions.py +0 -0
  137. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/help.py +0 -0
  138. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/hooks.py +0 -0
  139. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/models.py +0 -0
  140. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/__init__.py +0 -0
  141. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/certifi/__init__.py +0 -0
  142. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/certifi/__main__.py +0 -0
  143. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/certifi/cacert.pem +0 -0
  144. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/certifi/core.py +0 -0
  145. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/__init__.py +0 -0
  146. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/big5freq.py +0 -0
  147. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/big5prober.py +0 -0
  148. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/chardistribution.py +0 -0
  149. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/charsetgroupprober.py +0 -0
  150. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/charsetprober.py +0 -0
  151. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/cli/__init__.py +0 -0
  152. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/cli/chardetect.py +0 -0
  153. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/codingstatemachine.py +0 -0
  154. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/compat.py +0 -0
  155. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/cp949prober.py +0 -0
  156. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/enums.py +0 -0
  157. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/escprober.py +0 -0
  158. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/escsm.py +0 -0
  159. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/eucjpprober.py +0 -0
  160. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/euckrfreq.py +0 -0
  161. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/euckrprober.py +0 -0
  162. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/euctwfreq.py +0 -0
  163. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/euctwprober.py +0 -0
  164. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/gb2312freq.py +0 -0
  165. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/gb2312prober.py +0 -0
  166. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/hebrewprober.py +0 -0
  167. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/jisfreq.py +0 -0
  168. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/jpcntx.py +0 -0
  169. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/langbulgarianmodel.py +0 -0
  170. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/langcyrillicmodel.py +0 -0
  171. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/langgreekmodel.py +0 -0
  172. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/langhebrewmodel.py +0 -0
  173. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/langhungarianmodel.py +0 -0
  174. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/langthaimodel.py +0 -0
  175. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/langturkishmodel.py +0 -0
  176. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/latin1prober.py +0 -0
  177. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/mbcharsetprober.py +0 -0
  178. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/mbcsgroupprober.py +0 -0
  179. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/mbcssm.py +0 -0
  180. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/sbcharsetprober.py +0 -0
  181. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/sbcsgroupprober.py +0 -0
  182. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/sjisprober.py +0 -0
  183. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/universaldetector.py +0 -0
  184. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/utf8prober.py +0 -0
  185. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/chardet/version.py +0 -0
  186. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/__init__.py +0 -0
  187. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/_collections.py +0 -0
  188. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/connection.py +0 -0
  189. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/connectionpool.py +0 -0
  190. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/contrib/__init__.py +0 -0
  191. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/contrib/_appengine_environ.py +0 -0
  192. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/__init__.py +0 -0
  193. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/bindings.py +0 -0
  194. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/contrib/_securetransport/low_level.py +0 -0
  195. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/contrib/appengine.py +0 -0
  196. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/contrib/ntlmpool.py +0 -0
  197. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/contrib/pyopenssl.py +0 -0
  198. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/contrib/securetransport.py +0 -0
  199. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/contrib/socks.py +0 -0
  200. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/exceptions.py +0 -0
  201. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/fields.py +0 -0
  202. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/filepost.py +0 -0
  203. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/packages/__init__.py +0 -0
  204. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/packages/backports/__init__.py +0 -0
  205. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/packages/backports/makefile.py +0 -0
  206. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/packages/ordered_dict.py +0 -0
  207. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/packages/six.py +0 -0
  208. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/packages/socks.py +0 -0
  209. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/packages/ssl_match_hostname/__init__.py +0 -0
  210. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/packages/ssl_match_hostname/_implementation.py +0 -0
  211. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/poolmanager.py +0 -0
  212. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/request.py +0 -0
  213. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/response.py +0 -0
  214. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/util/__init__.py +0 -0
  215. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/util/connection.py +0 -0
  216. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/util/queue.py +0 -0
  217. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/util/request.py +0 -0
  218. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/util/response.py +0 -0
  219. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/util/retry.py +0 -0
  220. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/util/selectors.py +0 -0
  221. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/util/ssl_.py +0 -0
  222. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/util/timeout.py +0 -0
  223. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/util/url.py +0 -0
  224. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages/urllib3/util/wait.py +0 -0
  225. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/packages.py +0 -0
  226. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/sessions.py +0 -0
  227. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/status_codes.py +0 -0
  228. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/structures.py +0 -0
  229. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/requests/utils.py +0 -0
  230. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/core/vendored/six.py +0 -0
  231. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/common/__init__.py +0 -0
  232. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/common/connect_ack.py +0 -0
  233. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/common/direction.py +0 -0
  234. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/common/exchange_code.py +0 -0
  235. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/common/exercise_style.py +0 -0
  236. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/common/expiration_cycle.py +0 -0
  237. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/common/instrument_status.py +0 -0
  238. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/common/option_type.py +0 -0
  239. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/common/subscribe_type.py +0 -0
  240. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/common/timespan.py +0 -0
  241. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/data_streaming_client.py +0 -0
  242. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/internal/__init__.py +0 -0
  243. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/internal/default_retry_policy.py +0 -0
  244. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/internal/exceptions.py +0 -0
  245. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/internal/quotes_client.py +0 -0
  246. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/internal/quotes_decoder.py +0 -0
  247. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/internal/quotes_payload_decoder.py +0 -0
  248. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/internal/quotes_topic.py +0 -0
  249. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/quotes/__init__.py +0 -0
  250. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/quotes/market_streaming_data.py +0 -0
  251. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/quotes/subscribe/__init__.py +0 -0
  252. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/quotes/subscribe/ask_bid_result.py +0 -0
  253. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/quotes/subscribe/basic_result.py +0 -0
  254. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/quotes/subscribe/broker_result.py +0 -0
  255. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/quotes/subscribe/message_pb2.py +0 -0
  256. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/quotes/subscribe/order_result.py +0 -0
  257. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/quotes/subscribe/payload_type.py +0 -0
  258. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/quotes/subscribe/quote_decoder.py +0 -0
  259. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/quotes/subscribe/quote_result.py +0 -0
  260. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/quotes/subscribe/snapshot_decoder.py +0 -0
  261. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/quotes/subscribe/snapshot_result.py +0 -0
  262. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/quotes/subscribe/tick_decoder.py +0 -0
  263. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/quotes/subscribe/tick_result.py +0 -0
  264. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/request/__init__.py +0 -0
  265. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/request/get_batch_historical_bars_request.py +0 -0
  266. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/request/get_corp_action_request.py +0 -0
  267. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/request/get_eod_bars_request.py +0 -0
  268. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/request/get_historical_bars_request.py +0 -0
  269. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/request/get_quotes_request.py +0 -0
  270. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/request/get_snapshot_request.py +0 -0
  271. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/request/get_tick_request.py +0 -0
  272. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/request/subscribe_request.py +0 -0
  273. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/data/request/unsubscribe_request.py +0 -0
  274. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/common/__init__.py +0 -0
  275. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/common/account_type.py +0 -0
  276. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/common/combo_ticker_type.py +0 -0
  277. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/common/combo_type.py +0 -0
  278. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/common/currency.py +0 -0
  279. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/common/forbid_reason.py +0 -0
  280. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/common/instrument_type.py +0 -0
  281. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/common/markets.py +0 -0
  282. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/common/order_entrust_type.py +0 -0
  283. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/common/order_side.py +0 -0
  284. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/common/order_status.py +0 -0
  285. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/common/order_tif.py +0 -0
  286. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/common/order_type.py +0 -0
  287. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/common/trade_policy.py +0 -0
  288. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/common/trading_date_type.py +0 -0
  289. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/common/trailing_type.py +0 -0
  290. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/events/__init__.py +0 -0
  291. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/events/default_retry_policy.py +0 -0
  292. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/events/events_pb2.py +0 -0
  293. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/events/events_pb2_grpc.py +0 -0
  294. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/events/signature_composer.py +0 -0
  295. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/events/types.py +0 -0
  296. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/__init__.py +0 -0
  297. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/cancel_order_request.py +0 -0
  298. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/get_account_balance_request.py +0 -0
  299. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/get_account_positions_request.py +0 -0
  300. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/get_account_profile_request.py +0 -0
  301. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/get_app_subscriptions.py +0 -0
  302. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/get_open_orders_request.py +0 -0
  303. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/get_order_detail_request.py +0 -0
  304. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/get_today_orders_request.py +0 -0
  305. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/get_trade_calendar_request.py +0 -0
  306. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/get_trade_instrument_detail_request.py +0 -0
  307. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/get_trade_security_detail_request.py +0 -0
  308. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/get_tradeable_instruments_request.py +0 -0
  309. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/palce_order_request.py +0 -0
  310. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/place_order_request.py +0 -0
  311. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/place_order_request_v2.py +0 -0
  312. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/replace_order_request.py +0 -0
  313. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/replace_order_request_v2.py +0 -0
  314. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/v2/__init__.py +0 -0
  315. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/v2/cancel_option_request.py +0 -0
  316. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/v2/cancel_order_request.py +0 -0
  317. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/v2/get_account_balance_request.py +0 -0
  318. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/v2/get_account_list.py +0 -0
  319. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/v2/get_account_list_request.py +0 -0
  320. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/v2/get_account_positions_request.py +0 -0
  321. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/v2/get_order_detail_request.py +0 -0
  322. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/v2/get_order_history_request.py +0 -0
  323. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/v2/get_order_open_request.py +0 -0
  324. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/v2/preview_option_request.py +0 -0
  325. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/v2/preview_order_request.py +0 -0
  326. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/v2/replace_option_request.py +0 -0
  327. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/request/v2/replace_order_request.py +0 -0
  328. {webull_openapi_python_sdk-1.0.3/webull/trade/trade → webull_openapi_python_sdk-1.0.5/webull/trade/request/v3}/__init__.py +0 -0
  329. {webull_openapi_python_sdk-1.0.3/webull/trade/trade/v2 → webull_openapi_python_sdk-1.0.5/webull/trade/trade}/__init__.py +0 -0
  330. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/trade/account_info.py +0 -0
  331. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/trade/order_operation.py +0 -0
  332. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/trade/trade_calendar.py +0 -0
  333. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/trade/trade_instrument.py +0 -0
  334. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/trade/v2/account_info_v2.py +0 -0
  335. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/trade/v2/order_operation_v2.py +0 -0
  336. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull/trade/trade_events_client.py +0 -0
  337. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull_openapi_python_sdk.egg-info/dependency_links.txt +0 -0
  338. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull_openapi_python_sdk.egg-info/requires.txt +0 -0
  339. {webull_openapi_python_sdk-1.0.3 → webull_openapi_python_sdk-1.0.5}/webull_openapi_python_sdk.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: webull-openapi-python-sdk
3
- Version: 1.0.3
3
+ Version: 1.0.5
4
4
  Summary: Webull Python SDK.
5
5
  Home-page:
6
6
  Author: Webull
@@ -0,0 +1 @@
1
+ __version__ = "1.0.5"
@@ -15,6 +15,7 @@
15
15
  # coding=utf-8
16
16
 
17
17
  from webull.data.common.category import Category
18
+ from webull.data.common.contract_type import ContractType
18
19
  from webull.data.common.timespan import Timespan
19
20
  from webull.core.client import ApiClient
20
21
  from webull.data.data_client import DataClient
@@ -54,4 +55,30 @@ if __name__ == '__main__':
54
55
  if res.status_code == 200:
55
56
  print('get_quotes:', res.json())
56
57
 
58
+ res = data_client.futures_market_data.get_futures_depth("SILZ5", Category.US_FUTURES.name, depth=1)
59
+ if res.status_code == 200:
60
+ print('get_futures_depth:', res.json())
61
+
62
+ res = data_client.futures_market_data.get_futures_history_bars('SILZ5,6BM6', Category.US_FUTURES.name, Timespan.M1.name)
63
+ if res.status_code == 200:
64
+ print('get_futures_history_bars:', res.json())
65
+
66
+ res = data_client.futures_market_data.get_futures_tick("SILZ5", Category.US_FUTURES.name, count=10)
67
+ if res.status_code == 200:
68
+ print('get_futures_tick:', res.json())
69
+
70
+ res = data_client.futures_market_data.get_futures_snapshot("SILZ5,6BM6", Category.US_FUTURES.name)
71
+ if res.status_code == 200:
72
+ print('get_futures_snapshot:', res.json())
73
+
74
+ res = data_client.instrument.get_futures_products(Category.US_FUTURES.name)
75
+ if res.status_code == 200:
76
+ print('get_futures_products:', res.json())
57
77
 
78
+ res = data_client.instrument.get_futures_instrument("ESZ5", Category.US_FUTURES.name)
79
+ if res.status_code == 200:
80
+ print('get_futures_instrument:', res.json())
81
+
82
+ res = data_client.instrument.get_futures_instrument_by_code("ES", Category.US_FUTURES.name, ContractType.MONTHLY.name)
83
+ if res.status_code == 200:
84
+ print('get_futures_instrument_by_code:', res.json())
@@ -0,0 +1,420 @@
1
+ # Copyright 2022 Webull
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ import json
16
+ import uuid
17
+ from time import sleep
18
+
19
+ from webull.core.client import ApiClient
20
+ from webull.trade.trade_client import TradeClient
21
+
22
+ optional_api_endpoint = "<api_endpoint>"
23
+ your_app_key = "<your_app_key>"
24
+ your_app_secret = "<your_app_secret>"
25
+ region_id = "<region_id>"
26
+ account_id = "<your_account_id>"
27
+ api_client = ApiClient(your_app_key, your_app_secret, region_id)
28
+ api_client.add_endpoint(region_id, optional_api_endpoint)
29
+
30
+
31
+ if __name__ == '__main__':
32
+ trade_client = TradeClient(api_client)
33
+
34
+ res = trade_client.account_v2.get_account_list()
35
+ if res.status_code == 200:
36
+ print('get account list:', res.json())
37
+
38
+ res = trade_client.account_v2.get_account_balance(account_id)
39
+ if res.status_code == 200:
40
+ print('get account balance res:', res.json())
41
+
42
+ res = trade_client.account_v2.get_account_position(account_id)
43
+ if res.status_code == 200:
44
+ print('get account position res:', res.json())
45
+
46
+ # ============================================================
47
+ # Equity Order Example
48
+ # ============================================================
49
+
50
+ # normal equity order
51
+ normal_equity_client_order_id = uuid.uuid4().hex
52
+ print('client order id:', normal_equity_client_order_id)
53
+ new_normal_equity_orders = [
54
+ {
55
+ "combo_type": "NORMAL",
56
+ "client_order_id": normal_equity_client_order_id,
57
+ "symbol": "AAPL",
58
+ "instrument_type": "EQUITY",
59
+ "market": "US",
60
+ "order_type": "LIMIT",
61
+ "limit_price": "188",
62
+ "quantity": "1",
63
+ "support_trading_session": "N",
64
+ "side": "BUY",
65
+ "time_in_force": "DAY",
66
+ "entrust_type": "QTY"
67
+ }
68
+ ]
69
+
70
+ res = trade_client.order_v3.preview_order(account_id, new_normal_equity_orders)
71
+ if res.status_code == 200:
72
+ print('preview normal equity order res:', res.json())
73
+
74
+ res = trade_client.order_v3.place_order(account_id, new_normal_equity_orders)
75
+ if res.status_code == 200:
76
+ print('place normal equity order res:', res.json())
77
+ sleep(3)
78
+
79
+ replace_normal_equity_orders = [
80
+ {
81
+ "client_order_id": normal_equity_client_order_id,
82
+ "quantity": "100",
83
+ "limit_price": "200"
84
+ }
85
+ ]
86
+ res = trade_client.order_v3.replace_order(account_id, replace_normal_equity_orders)
87
+ if res.status_code == 200:
88
+ print('replace normal equity order res:', res.json())
89
+ sleep(3)
90
+
91
+ res = trade_client.order_v3.cancel_order(account_id, normal_equity_client_order_id)
92
+ if res.status_code == 200:
93
+ print('cancel normal equity order res:', res.json())
94
+
95
+ res = trade_client.order_v3.get_order_open(account_id=account_id)
96
+ if res.status_code == 200:
97
+ print("order_open_res=" + json.dumps(res.json(), indent=4))
98
+
99
+ res = trade_client.order_v3.get_order_history(account_id)
100
+ if res.status_code == 200:
101
+ print('get order history res:', res.json())
102
+
103
+ res = trade_client.order_v3.get_order_detail(account_id, normal_equity_client_order_id)
104
+ if res.status_code == 200:
105
+ print('get order detail res:', res.json())
106
+
107
+
108
+
109
+ # combo equity order
110
+ master_equity_client_order_id = uuid.uuid4().hex
111
+ stop_profit_equity_client_order_id = uuid.uuid4().hex
112
+ stop_loss_equity_client_order_id = uuid.uuid4().hex
113
+ print('normal_equity_master_client_order_id:', master_equity_client_order_id)
114
+ print('stop_profit_equity_client_order_id:', stop_profit_equity_client_order_id)
115
+ print('stop_loss_equity_client_order_id:', stop_loss_equity_client_order_id)
116
+ new_combo_orders = [
117
+ {
118
+ "client_order_id": master_equity_client_order_id,
119
+ "combo_type": "MASTER",
120
+ "symbol": "F",
121
+ "instrument_type": "EQUITY",
122
+ "market": "US",
123
+ "order_type": "LIMIT",
124
+ "quantity": "1",
125
+ "support_trading_session": "N",
126
+ "limit_price": "10.5",
127
+ "side": "BUY",
128
+ "entrust_type": "QTY",
129
+ "time_in_force": "DAY"
130
+ },
131
+ {
132
+ "client_order_id": stop_profit_equity_client_order_id,
133
+ "combo_type": "STOP_PROFIT",
134
+ "symbol": "F",
135
+ "instrument_type": "EQUITY",
136
+ "market": "US",
137
+ "order_type": "LIMIT",
138
+ "quantity": "1",
139
+ "support_trading_session": "N",
140
+ "limit_price": "11.5",
141
+ "side": "SELL",
142
+ "entrust_type": "QTY",
143
+ "time_in_force": "DAY"
144
+ },
145
+ {
146
+ "client_order_id": stop_loss_equity_client_order_id,
147
+ "combo_type": "STOP_LOSS",
148
+ "symbol": "F",
149
+ "instrument_type": "EQUITY",
150
+ "market": "US",
151
+ "order_type": "STOP_LOSS",
152
+ "quantity": "1",
153
+ "support_trading_session": "N",
154
+ "stop_price": "10",
155
+ "side": "SELL",
156
+ "entrust_type": "QTY",
157
+ "time_in_force": "DAY"
158
+ }
159
+ ]
160
+
161
+ res = trade_client.order_v3.preview_order(account_id, new_combo_orders)
162
+ if res.status_code == 200:
163
+ print('preview combo equity order res:', res.json())
164
+
165
+ res = trade_client.order_v3.place_order(account_id, new_combo_orders)
166
+ if res.status_code == 200:
167
+ print('place combo equity order res:', res.json())
168
+ sleep(3)
169
+
170
+ replace_combo_orders = [
171
+ {
172
+ "client_order_id": master_equity_client_order_id,
173
+ "quantity": "2"
174
+ },
175
+ {
176
+ "client_order_id": stop_profit_equity_client_order_id,
177
+ "quantity": "2"
178
+ },
179
+ {
180
+ "client_order_id": stop_loss_equity_client_order_id,
181
+ "quantity": "2"
182
+ }
183
+ ]
184
+ res = trade_client.order_v3.replace_order(account_id, replace_combo_orders)
185
+ if res.status_code == 200:
186
+ print('replace combo equity order res:', res.json())
187
+ sleep(3)
188
+
189
+ res = trade_client.order_v3.cancel_order(account_id, master_equity_client_order_id)
190
+ if res.status_code == 200:
191
+ print('cancel master equity order res:', res.json())
192
+
193
+ res = trade_client.order_v3.get_order_history(account_id)
194
+ if res.status_code == 200:
195
+ print('get order history res:', res.json())
196
+
197
+ res = trade_client.order_v3.get_order_open(account_id=account_id)
198
+ if res.status_code == 200:
199
+ print("order_open_res=" + json.dumps(res.json(), indent=4))
200
+
201
+ res = trade_client.order_v3.get_order_detail(account_id, master_equity_client_order_id)
202
+ if res.status_code == 200:
203
+ print('get master order detail res:', res.json())
204
+
205
+
206
+
207
+
208
+ # ============================================================
209
+ # Option Order Example
210
+ # ============================================================
211
+
212
+ # normal option order
213
+ normal_option_client_order_id = uuid.uuid4().hex
214
+ new_normal_option_orders = [
215
+ {
216
+ "client_order_id": normal_option_client_order_id,
217
+ "combo_type": "NORMAL",
218
+ "order_type": "LIMIT",
219
+ "quantity": "1",
220
+ "limit_price": "21.25",
221
+ "option_strategy": "SINGLE",
222
+ "side": "BUY",
223
+ "time_in_force": "GTC",
224
+ "entrust_type": "QTY",
225
+ "legs": [
226
+ {
227
+ "side": "BUY",
228
+ "quantity": "1",
229
+ "symbol": "TSLA",
230
+ "strike_price": "400",
231
+ "option_expire_date": "2025-12-26",
232
+ "instrument_type": "OPTION",
233
+ "option_type": "CALL",
234
+ "market": "US"
235
+ }
236
+ ]
237
+ }
238
+ ]
239
+
240
+ # preview
241
+ res = trade_client.order_v3.preview_order(account_id, new_normal_option_orders)
242
+ if res.status_code == 200:
243
+ print("preview normal option order res:" + json.dumps(res.json(), indent=4))
244
+
245
+ # place
246
+ res = trade_client.order_v3.place_order(account_id, new_normal_option_orders)
247
+ if res.status_code == 200:
248
+ print("place normal option order res:" + json.dumps(res.json(), indent=4))
249
+ sleep(3)
250
+
251
+ # replace for Webull HK
252
+ # replace_normal_option_orders = [
253
+ # {
254
+ # "client_order_id": normal_option_client_order_id,
255
+ # "quantity": "2",
256
+ # "limit_price": "11.3"
257
+ # }
258
+ # ]
259
+ # res = trade_client.order_v3.replace_option(account_id, replace_normal_option_orders)
260
+ # if res.status_code == 200:
261
+ # print("replace normal option order res:" + json.dumps(res.json(), indent=4))
262
+ # sleep(5)
263
+
264
+ # replace for Webull US
265
+ res = trade_client.order_v3.get_order_detail(account_id, normal_option_client_order_id)
266
+ if res.status_code == 200:
267
+ print('get normal option order detail res:', res.json())
268
+ data = res.json() or {}
269
+ leg_id = (
270
+ data.get("orders", [{}])[0]
271
+ .get("legs", [{}])[0]
272
+ .get("id")
273
+ )
274
+ print('get normal option order detail id :', leg_id)
275
+
276
+ # If it is a multi-leg option, you need to manually match it to the corresponding sub-leg orderId.
277
+ if leg_id:
278
+ replace_normal_option_orders = [
279
+ {
280
+ "client_order_id": normal_option_client_order_id,
281
+ "quantity": "2",
282
+ "limit_price": "21.3",
283
+ "legs": [
284
+ {
285
+ "id": leg_id,
286
+ "quantity": "2"
287
+ }
288
+ ]
289
+ }
290
+ ]
291
+ res = trade_client.order_v3.replace_order(account_id, replace_normal_option_orders)
292
+ if res.status_code == 200:
293
+ print("replace normal option order res:" + json.dumps(res.json(), indent=4))
294
+ sleep(3)
295
+
296
+ # cancel
297
+ res = trade_client.order_v3.cancel_order(account_id, normal_option_client_order_id)
298
+ if res.status_code == 200:
299
+ print("cancel normal option order res:" + json.dumps(res.json(), indent=4))
300
+
301
+ res = trade_client.order_v3.get_order_history(account_id)
302
+ if res.status_code == 200:
303
+ print('get order history res:', res.json())
304
+
305
+ res = trade_client.order_v3.get_order_open(account_id=account_id)
306
+ if res.status_code == 200:
307
+ print("order_open_res=" + json.dumps(res.json(), indent=4))
308
+
309
+ res = trade_client.order_v3.get_order_detail(account_id, normal_option_client_order_id)
310
+ if res.status_code == 200:
311
+ print('get option order detail res:', res.json())
312
+
313
+
314
+
315
+ # ============================================================
316
+ # Crypto Order Example
317
+ # For the cryptocurrency example, please use a cryptocurrency account ID.
318
+ # ============================================================
319
+
320
+ # normal crypto order
321
+ normal_crypto_client_order_id = uuid.uuid4().hex
322
+ print('client order id:', normal_crypto_client_order_id)
323
+ new_normal_crypto_orders = [
324
+ {
325
+ "combo_type": "NORMAL",
326
+ "client_order_id": normal_crypto_client_order_id,
327
+ "symbol": "BTCUSD",
328
+ "instrument_type": "CRYPTO",
329
+ "market": "US",
330
+ "order_type": "LIMIT",
331
+ "limit_price": "80000",
332
+ "quantity": "0.003",
333
+ "side": "BUY",
334
+ "time_in_force": "DAY",
335
+ "entrust_type": "QTY"
336
+ }
337
+ ]
338
+
339
+ res = trade_client.order_v3.place_order(account_id, new_normal_crypto_orders)
340
+ if res.status_code == 200:
341
+ print('place normal crypto order res:', res.json())
342
+ sleep(3)
343
+
344
+ res = trade_client.order_v3.cancel_order(account_id, normal_crypto_client_order_id)
345
+ if res.status_code == 200:
346
+ print('cancel normal crypto order res:', res.json())
347
+
348
+ res = trade_client.order_v3.get_order_open(account_id=account_id)
349
+ if res.status_code == 200:
350
+ print("order_open_res=" + json.dumps(res.json(), indent=4))
351
+
352
+ res = trade_client.order_v3.get_order_history(account_id)
353
+ if res.status_code == 200:
354
+ print('get order history res:', res.json())
355
+
356
+ res = trade_client.order_v3.get_order_detail(account_id, normal_crypto_client_order_id)
357
+ if res.status_code == 200:
358
+ print('get order detail res:', res.json())
359
+
360
+
361
+
362
+ # ============================================================
363
+ # Futures Order Example
364
+ # ============================================================
365
+
366
+ # normal futures order
367
+ normal_futures_client_order_id = uuid.uuid4().hex
368
+ print('futures client order id:', normal_futures_client_order_id)
369
+ new_normal_futures_orders = [
370
+ {
371
+ "combo_type": "NORMAL",
372
+ "client_order_id": normal_futures_client_order_id,
373
+ "symbol": "ESZ5",
374
+ "instrument_type": "FUTURES",
375
+ "market": "US",
376
+ "order_type": "LIMIT",
377
+ "limit_price": "4500",
378
+ "quantity": "1",
379
+ "side": "BUY",
380
+ "time_in_force": "DAY",
381
+ "entrust_type": "QTY"
382
+ }
383
+ ]
384
+ res = trade_client.order_v3.place_order(account_id, new_normal_futures_orders)
385
+ if res.status_code == 200:
386
+ print('place normal futures order res:', res.json())
387
+ sleep(3)
388
+
389
+ # normal futures order replace
390
+ replace_normal_futures_orders = [
391
+ {
392
+ "client_order_id": normal_futures_client_order_id,
393
+ "quantity": "2",
394
+ "limit_price": "4550"
395
+ }
396
+ ]
397
+ res = trade_client.order_v3.replace_order(account_id, replace_normal_futures_orders)
398
+ if res.status_code == 200:
399
+ print('replace normal futures order res:', res.json())
400
+ sleep(3)
401
+
402
+ # normal futures order cancel
403
+ res = trade_client.order_v3.cancel_order(account_id, normal_futures_client_order_id)
404
+ if res.status_code == 200:
405
+ print('cancel normal futures order res:', res.json())
406
+
407
+ # get futures order detail
408
+ res = trade_client.order_v3.get_order_detail(account_id, normal_futures_client_order_id)
409
+ if res.status_code == 200:
410
+ print('get futures order detail res:', res.json())
411
+
412
+ # get futures open orders
413
+ res = trade_client.order_v3.get_order_open(account_id, page_size=10)
414
+ if res.status_code == 200:
415
+ print("order_open_res=" + json.dumps(res.json(), indent=4))
416
+
417
+ # get futures order history
418
+ res = trade_client.order_v3.get_order_history(account_id, page_size=10)
419
+ if res.status_code == 200:
420
+ print('get order history res:', res.json())
@@ -37,7 +37,9 @@ if __name__ == '__main__':
37
37
 
38
38
  # Create EventsClient instance
39
39
  trade_events_client = TradeEventsClient(your_app_key, your_app_secret, region_id)
40
- # For non production environment, you need to set the domain name of the subscription service through eventsclient. For example, the domain name of the UAT environment is set here
40
+ # [Important] For non production environment, you need to set the domain name of the subscription service through events client. For example, the domain name of the UAT environment is set here
41
+ # [Important] For non production environment, you need to set the domain name of the subscription service through events client. For example, the domain name of the UAT environment is set here
42
+ # [Important] For non production environment, you need to set the domain name of the subscription service through events client. For example, the domain name of the UAT environment is set here
41
43
  # trade_events_client = TradeEventsClient(your_app_key, your_app_secret, region_id, host=optional_api_endpoint)
42
44
  trade_events_client.on_log = _on_log
43
45
 
@@ -0,0 +1 @@
1
+ __version__ = "1.0.5"
@@ -1,4 +1,4 @@
1
- __version__ = "1.0.3"
1
+ __version__ = "1.0.5"
2
2
 
3
3
  import logging
4
4
 
@@ -4,7 +4,7 @@
4
4
  "region_mapping": {
5
5
  "us": {
6
6
  "api": "api.webull.com",
7
- "quotes-api": "usquotes-api.webullfintech.com",
7
+ "quotes-api": "data-api.webull.com",
8
8
  "events-api": "events-api.webull.com"
9
9
  },
10
10
  "hk": {
@@ -0,0 +1,3 @@
1
+ # coding=utf-8
2
+
3
+ __version__ = '1.0.5'
@@ -20,7 +20,8 @@ class Category(EasyEnum):
20
20
  US_STOCK = (1, 'US STOCK')
21
21
  US_OPTION = (2, 'US OPTION')
22
22
  HK_STOCK = (3, 'HK STOCK')
23
- CRYPTO = (4, 'CRYPTO')
24
23
  US_ETF = (5, 'US ETF')
25
24
  HK_ETF = (6, 'HK ETF')
26
- CN_STOCK = (7, "CN STOCK")
25
+ CN_STOCK = (7, "CN STOCK")
26
+ US_CRYPTO = (8, "US CRYPTO")
27
+ US_FUTURES = (12, "US FUTURES")
@@ -0,0 +1,20 @@
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.core.common.easy_enum import EasyEnum
18
+ class ContractType(EasyEnum):
19
+ MONTHLY = (1, "MONTHLY")
20
+ MAIN = (2, "MAIN")
@@ -18,6 +18,8 @@ import logging
18
18
  import sys
19
19
 
20
20
  from webull.core.http.initializer.client_initializer import ClientInitializer
21
+ from webull.data.quotes.crypto_market_data import CryptoMarketData
22
+ from webull.data.quotes.futures_market_data import FuturesMarketData
21
23
  from webull.data.quotes.instrument import Instrument
22
24
  from webull.data.quotes.market_data import MarketData
23
25
 
@@ -28,6 +30,8 @@ class DataClient:
28
30
  ClientInitializer.initializer(api_client)
29
31
  self.instrument = Instrument(api_client)
30
32
  self.market_data = MarketData(api_client)
33
+ self.crypto_market_data = CryptoMarketData(api_client)
34
+ self.futures_market_data = FuturesMarketData(api_client)
31
35
 
32
36
  def _init_logger(self, api_client):
33
37
  # No logger configured, using default console and local file logging.
@@ -0,0 +1,58 @@
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_crypto_historical_bars_request import GetCryptoHistoricalBarsRequest
16
+ from webull.data.request.get_crypto_snapshot_request import GetCryptoSnapshotRequest
17
+
18
+
19
+ class CryptoMarketData:
20
+ def __init__(self, api_client):
21
+ self.client = api_client
22
+
23
+ def get_crypto_history_bar(self, symbols, category, timespan, count='200', real_time_required=None):
24
+ """
25
+ Returns to Instrument in the window aggregated data.
26
+ According to the last N K-lines of the stock code, it supports various granularity K-lines such as m1 and m5.
27
+ Currently, only the K-line with the previous weight is provided for the daily K-line and above,
28
+ and only the un-weighted K-line is provided for the minute K.
29
+
30
+ :param symbols: List of security codes (e.g., single: 00700; multiple: BTCUSD,ETHUSD or ['BTCUSD','ETHUSD']).
31
+ :param category: Security type. Fixed value: "US_CRYPTO"
32
+ :param timespan: K-line time granularity
33
+ :param count: The number of lines: the default is 200, and the maximum limit is 1200
34
+ :param real_time_required: Returns the latest trade quote data. By default, the most recent market data is returned.
35
+ By default, only intraday candlestick data is returned.
36
+ """
37
+ crypto_history_bar_request = GetCryptoHistoricalBarsRequest()
38
+ crypto_history_bar_request.set_symbols(symbols)
39
+ crypto_history_bar_request.set_category(category)
40
+ crypto_history_bar_request.set_timespan(timespan)
41
+ crypto_history_bar_request.set_count(count)
42
+ crypto_history_bar_request.set_real_time_required(real_time_required)
43
+ response = self.client.get_response(crypto_history_bar_request)
44
+ return response
45
+
46
+ def get_crypto_snapshot(self, symbols, category=Category.US_CRYPTO.name):
47
+ """
48
+ Query the latest crypto market snapshots in batches according to the security code list.
49
+
50
+ :param symbols: List of security codes (e.g., single: 00700; multiple: BTCUSD,ETHUSD or ['BTCUSD','ETHUSD']).
51
+ Up to 20 symbols can be subscribed per request.
52
+ :param category: Security type. Fixed value: "US_CRYPTO".
53
+ """
54
+ crypto_snapshot_request = GetCryptoSnapshotRequest()
55
+ crypto_snapshot_request.set_symbols(symbols)
56
+ crypto_snapshot_request.set_category(category)
57
+ response = self.client.get_response(crypto_snapshot_request)
58
+ return response