webull-openapi-python-sdk 1.0.8__py3-none-any.whl → 1.1.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. samples/__init__.py +1 -1
  2. samples/data/data_client.py +8 -0
  3. samples/data/data_client_event.py +52 -0
  4. samples/data/data_streaming_client_event.py +66 -0
  5. samples/trade/trade_client_v3.py +64 -1
  6. samples/trade/trade_client_v3_event.py +102 -0
  7. samples/trade/trade_event_client.py +4 -1
  8. webull/__init__.py +1 -1
  9. webull/core/__init__.py +1 -1
  10. webull/data/__init__.py +1 -1
  11. webull/data/common/category.py +1 -0
  12. webull/data/common/timespan.py +2 -0
  13. webull/data/data_client.py +2 -0
  14. webull/data/data_streaming_client.py +6 -1
  15. webull/data/quotes/event_market_data.py +50 -0
  16. webull/data/quotes/futures_market_data.py +24 -2
  17. webull/data/quotes/instrument.py +43 -0
  18. webull/data/quotes/market_data.py +24 -0
  19. webull/data/quotes/subscribe/ask_bid_result.py +9 -3
  20. webull/data/quotes/subscribe/event_depth_decoder.py +27 -0
  21. webull/data/quotes/subscribe/event_depth_result.py +46 -0
  22. webull/data/quotes/subscribe/event_snapshot_decoder.py +29 -0
  23. webull/data/quotes/subscribe/event_snapshot_result.py +85 -0
  24. webull/data/quotes/subscribe/message_pb2.py +25 -19
  25. webull/data/quotes/subscribe/payload_type.py +3 -1
  26. webull/data/request/get_event_depth_request.py +32 -0
  27. webull/data/request/get_event_instrument_request.py +33 -0
  28. webull/data/request/get_event_series_request.py +30 -0
  29. webull/data/request/get_event_snapshot_request.py +31 -0
  30. webull/data/request/get_footprint_request.py +45 -0
  31. webull/data/request/get_futures_footprint_request.py +45 -0
  32. webull/trade/__init__.py +1 -1
  33. webull/trade/events/types.py +1 -1
  34. webull/trade/trade_events_client.py +1 -1
  35. {webull_openapi_python_sdk-1.0.8.dist-info → webull_openapi_python_sdk-1.1.0.dist-info}/METADATA +1 -1
  36. {webull_openapi_python_sdk-1.0.8.dist-info → webull_openapi_python_sdk-1.1.0.dist-info}/RECORD +40 -26
  37. {webull_openapi_python_sdk-1.0.8.dist-info → webull_openapi_python_sdk-1.1.0.dist-info}/WHEEL +1 -1
  38. {webull_openapi_python_sdk-1.0.8.dist-info → webull_openapi_python_sdk-1.1.0.dist-info}/licenses/LICENSE +0 -0
  39. {webull_openapi_python_sdk-1.0.8.dist-info → webull_openapi_python_sdk-1.1.0.dist-info}/licenses/NOTICE +0 -0
  40. {webull_openapi_python_sdk-1.0.8.dist-info → webull_openapi_python_sdk-1.1.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,46 @@
1
+ # Copyright 2022 Webull
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ # coding=utf-8
16
+
17
+ from webull.data.quotes.subscribe.basic_result import BasicResult
18
+ from webull.data.quotes.subscribe.ask_bid_result import AskBidResult
19
+
20
+
21
+ class EventDepthResult:
22
+ def __init__(self, pb_event_depth):
23
+ self.basic = BasicResult(pb_event_depth.basic)
24
+ self.yes_bids = []
25
+ if pb_event_depth.yes_bids:
26
+ for bid in pb_event_depth.yes_bids:
27
+ self.yes_bids.append(AskBidResult(bid))
28
+ self.no_bids = []
29
+ if pb_event_depth.no_bids:
30
+ for bid in pb_event_depth.no_bids:
31
+ self.no_bids.append(AskBidResult(bid))
32
+
33
+ def get_basic(self):
34
+ return self.basic
35
+
36
+ def get_yes_bids(self):
37
+ return self.yes_bids
38
+
39
+ def get_no_bids(self):
40
+ return self.no_bids
41
+
42
+ def __repr__(self):
43
+ return "basic: %s,yes_bids:%s,no_bids:%s" % (self.basic, self.yes_bids, self.no_bids)
44
+
45
+ def __str__(self):
46
+ return self.__repr__()
@@ -0,0 +1,29 @@
1
+ # Copyright 2022 Webull
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+ # coding=utf-8
15
+
16
+ from webull.data.quotes.subscribe.message_pb2 import EventSnapshot
17
+ from webull.data.quotes.subscribe.event_snapshot_result import EventSnapshotResult
18
+ from webull.data.internal.quotes_payload_decoder import BaseQuotesPayloadDecoder
19
+
20
+
21
+
22
+ class EventSnapshotDecoder(BaseQuotesPayloadDecoder):
23
+ def __init__(self):
24
+ super().__init__()
25
+
26
+ def parse(self, payload):
27
+ eventSnapshot = EventSnapshot()
28
+ eventSnapshot.ParseFromString(payload)
29
+ return EventSnapshotResult(eventSnapshot)
@@ -0,0 +1,85 @@
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 EventSnapshotResult:
22
+ def __init__(self, pb_event_snapshot):
23
+ self.basic = BasicResult(pb_event_snapshot.basic)
24
+ self.price = Decimal(pb_event_snapshot.price) if pb_event_snapshot.price else None
25
+ self.volume = Decimal(pb_event_snapshot.volume) if pb_event_snapshot.volume else None
26
+ self.last_trade_time = int(pb_event_snapshot.last_trade_time) if pb_event_snapshot.last_trade_time else None
27
+ self.open_interest = Decimal(pb_event_snapshot.open_interest) if pb_event_snapshot.open_interest else None
28
+ self.yes_ask = Decimal(pb_event_snapshot.yes_ask) if pb_event_snapshot.yes_ask else None
29
+ self.yes_ask_size = Decimal(pb_event_snapshot.yes_ask_size) if pb_event_snapshot.yes_ask_size else None
30
+ self.yes_bid = Decimal(pb_event_snapshot.yes_bid) if pb_event_snapshot.yes_bid else None
31
+ self.yes_bid_size = Decimal(pb_event_snapshot.yes_bid_size) if pb_event_snapshot.yes_bid_size else None
32
+ self.no_bid = Decimal(pb_event_snapshot.no_bid) if pb_event_snapshot.no_bid else None
33
+ self.no_bid_size = Decimal(pb_event_snapshot.no_bid_size) if pb_event_snapshot.no_bid_size else None
34
+ self.no_ask = Decimal(pb_event_snapshot.no_ask) if pb_event_snapshot.no_ask else None
35
+ self.no_ask_size = Decimal(pb_event_snapshot.no_ask_size) if pb_event_snapshot.no_ask_size else None
36
+
37
+ def get_basic(self):
38
+ return self.basic
39
+
40
+ def get_price(self):
41
+ return self.price
42
+
43
+ def get_volume(self):
44
+ return self.volume
45
+
46
+ def get_last_trade_time(self):
47
+ return self.last_trade_time
48
+
49
+ def get_open_interest(self):
50
+ return self.open_interest
51
+
52
+ def get_yes_bid(self):
53
+ return self.yes_bid
54
+
55
+ def get_yes_bid_size(self):
56
+ return self.yes_bid_size
57
+
58
+ def get_yes_ask(self):
59
+ return self.yes_ask
60
+
61
+ def get_yes_ask_size(self):
62
+ return self.yes_ask_size
63
+
64
+ def get_no_bid(self):
65
+ return self.no_bid
66
+
67
+ def get_no_bid_size(self):
68
+ return self.no_bid_size
69
+
70
+ def get_no_ask(self):
71
+ return self.no_ask
72
+
73
+ def get_no_ask_size(self):
74
+ return self.no_ask_size
75
+
76
+ def __repr__(self):
77
+ attrs = ['price', 'volume', 'last_trade_time', 'open_interest']
78
+ yes_attrs = [f"yes_{name}" for name in ['bid', 'bid_size', 'ask', 'ask_size']]
79
+ no_attrs = [f"no_{name}" for name in ['bid', 'bid_size', 'ask', 'ask_size']]
80
+ all_attrs = attrs + yes_attrs + no_attrs
81
+ attr_str = ', '.join(f"{name}:{getattr(self, name)}" for name in all_attrs)
82
+ return f"{self.basic}, {attr_str}"
83
+
84
+ def __str__(self):
85
+ return self.__repr__()
@@ -2,10 +2,10 @@
2
2
  # Generated by the protocol buffer compiler. DO NOT EDIT!
3
3
  # source: message.proto
4
4
  """Generated protocol buffer code."""
5
- from google.protobuf.internal import builder as _builder
6
5
  from google.protobuf import descriptor as _descriptor
7
6
  from google.protobuf import descriptor_pool as _descriptor_pool
8
7
  from google.protobuf import symbol_database as _symbol_database
8
+ from google.protobuf.internal import builder as _builder
9
9
  # @@protoc_insertion_point(imports)
10
10
 
11
11
  _sym_db = _symbol_database.Default()
@@ -13,25 +13,31 @@ _sym_db = _symbol_database.Default()
13
13
 
14
14
 
15
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')
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(\t\"\x8d\x02\n\rEventSnapshot\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\r\n\x05price\x18\x02 \x01(\t\x12\x0e\n\x06volume\x18\x03 \x01(\t\x12\x17\n\x0flast_trade_time\x18\x04 \x01(\t\x12\x15\n\ropen_interest\x18\x05 \x01(\t\x12\x0f\n\x07yes_ask\x18\x06 \x01(\t\x12\x0f\n\x07yes_bid\x18\x07 \x01(\t\x12\x14\n\x0cyes_ask_size\x18\x08 \x01(\t\x12\x14\n\x0cyes_bid_size\x18\t \x01(\t\x12\x0e\n\x06no_ask\x18\n \x01(\t\x12\x0e\n\x06no_bid\x18\x0b \x01(\t\x12\x13\n\x0bno_ask_size\x18\x0c \x01(\t\x12\x13\n\x0bno_bid_size\x18\r \x01(\t\"b\n\nEventQuote\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\x1e\n\x08yes_bids\x18\x02 \x03(\x0b\x32\x0c.EventAskBid\x12\x1d\n\x07no_bids\x18\x03 \x03(\x0b\x32\x0c.EventAskBid\"*\n\x0b\x45ventAskBid\x12\r\n\x05price\x18\x01 \x01(\t\x12\x0c\n\x04size\x18\x02 \x01(\tb\x06proto3')
17
17
 
18
- _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, globals())
19
- _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'message_pb2', globals())
18
+ _globals = globals()
19
+ _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
20
+ _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'message_pb2', _globals)
20
21
  if _descriptor._USE_C_DESCRIPTORS == False:
21
-
22
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
23
+ _globals['_BASIC']._serialized_start=17
24
+ _globals['_BASIC']._serialized_end=107
25
+ _globals['_SNAPSHOT']._serialized_start=110
26
+ _globals['_SNAPSHOT']._serialized_end=580
27
+ _globals['_QUOTE']._serialized_start=582
28
+ _globals['_QUOTE']._serialized_end=658
29
+ _globals['_TICK']._serialized_start=660
30
+ _globals['_TICK']._serialized_end=748
31
+ _globals['_ASKBID']._serialized_start=750
32
+ _globals['_ASKBID']._serialized_end=835
33
+ _globals['_ORDER']._serialized_start=837
34
+ _globals['_ORDER']._serialized_end=872
35
+ _globals['_BROKER']._serialized_start=874
36
+ _globals['_BROKER']._serialized_end=909
37
+ _globals['_EVENTSNAPSHOT']._serialized_start=912
38
+ _globals['_EVENTSNAPSHOT']._serialized_end=1181
39
+ _globals['_EVENTQUOTE']._serialized_start=1183
40
+ _globals['_EVENTQUOTE']._serialized_end=1281
41
+ _globals['_EVENTASKBID']._serialized_start=1283
42
+ _globals['_EVENTASKBID']._serialized_end=1325
37
43
  # @@protoc_insertion_point(module_scope)
@@ -16,4 +16,6 @@
16
16
 
17
17
  PAYLOAD_TYPE_QUOTE = 'quote'
18
18
  PAYLOAD_TYPE_SHAPSHOT = 'snapshot'
19
- PAYLOAD_TYPE_TICK = 'tick'
19
+ PAYLOAD_TYPE_TICK = 'tick'
20
+ PAYLOAD_TYPE_EVENT_DEPTH = 'event-quote'
21
+ PAYLOAD_TYPE_EVENT_SHAPSHOT = 'event-snapshot'
@@ -0,0 +1,32 @@
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.request import ApiRequest
18
+
19
+
20
+ class GetEventDepthRequest(ApiRequest):
21
+ def __init__(self):
22
+ ApiRequest.__init__(self, "/openapi/market-data/event/depth", version='v2', method="GET", query_params={})
23
+
24
+ def set_symbol(self, symbol):
25
+ self.add_query_param("symbol", symbol)
26
+
27
+ def set_category(self, category):
28
+ self.add_query_param("category", category)
29
+
30
+ def set_depth(self, depth):
31
+ if depth:
32
+ self.add_query_param("depth", depth)
@@ -0,0 +1,33 @@
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.request import ApiRequest
18
+
19
+ class GetEventInstrumentRequest(ApiRequest):
20
+ def __init__(self):
21
+ ApiRequest.__init__(self, "/openapi/instrument/event/market/list", version='v2', method="GET", query_params={})
22
+
23
+ def set_series_symbol(self, series_symbol):
24
+ self.add_query_param("series_symbol", series_symbol)
25
+
26
+ def set_expiration_date_after(self, expiration_date_after):
27
+ self.add_query_param("expiration_date_after", expiration_date_after)
28
+
29
+ def set_last_instrument_id(self, last_instrument_id):
30
+ self.add_query_param("last_instrument_id", last_instrument_id)
31
+
32
+ def set_page_size(self, page_size):
33
+ self.add_query_param("page_size", page_size)
@@ -0,0 +1,30 @@
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.request import ApiRequest
18
+
19
+ class GetEventSeriesRequest(ApiRequest):
20
+ def __init__(self):
21
+ ApiRequest.__init__(self, "/openapi/instrument/event/series/list", version='v2', method="GET", query_params={})
22
+
23
+ def set_category(self, category):
24
+ self.add_query_param("category", category)
25
+
26
+ def set_last_instrument_id(self, last_instrument_id):
27
+ self.add_query_param("last_instrument_id", last_instrument_id)
28
+
29
+ def set_page_size(self, page_size):
30
+ self.add_query_param("page_size", page_size)
@@ -0,0 +1,31 @@
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.request import ApiRequest
18
+
19
+
20
+ class GetEventSnapshotRequest(ApiRequest):
21
+ def __init__(self):
22
+ ApiRequest.__init__(self, "/openapi/market-data/event/snapshot", version='v2', method="GET", query_params={})
23
+
24
+ def set_symbols(self, symbols):
25
+ if isinstance(symbols, str):
26
+ self.add_query_param("symbols", symbols)
27
+ elif isinstance(symbols, list):
28
+ self.add_query_param("symbols", ",".join(symbols))
29
+
30
+ def set_category(self, category):
31
+ self.add_query_param("category", category)
@@ -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)
webull/trade/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = '1.0.8'
1
+ __version__ = '1.1.0'
@@ -15,7 +15,7 @@
15
15
  # coding=utf-8
16
16
 
17
17
  EVENT_TYPE_ORDER = 1024
18
- EVENT_TYPE_POSITION = 1025
18
+ EVENT_TYPE_POSITION = 1028
19
19
 
20
20
  ORDER_STATUS_CHANGED = 1
21
21
  POSITION_STATUS_CHANGED = 2
@@ -69,7 +69,7 @@ class TradeEventsClient():
69
69
 
70
70
  def _build_request(self, app_key, app_secret, accounts):
71
71
  request = pb.SubscribeRequest(
72
- subscribeType=1, # only 1 allowed now
72
+ subscribeType= 3, # only 1、2 allowed now
73
73
  timestamp=int(time.time() * 1000), # millis
74
74
  accounts=accounts,
75
75
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: webull-openapi-python-sdk
3
- Version: 1.0.8
3
+ Version: 1.1.0
4
4
  Summary: Webull Python SDK.
5
5
  Home-page:
6
6
  Author: Webull
@@ -1,22 +1,25 @@
1
- samples/__init__.py,sha256=mFFUUCx5TqyW1TTFRrWDhXXVMJDMRxXWrkHanVtp9oY,22
1
+ samples/__init__.py,sha256=mg2kb865UYMe9zOkU2VcRPfv-5zzU182OL3t45SXXWk,22
2
2
  samples/account/__init__.py,sha256=eoZ6GfifbqhMLNzjlqRDVil-yyBkOmVN9ujSgJWNBlY,15
3
3
  samples/account/account_client.py,sha256=vwh-nI_JnjwcIeOr1sQPMzG8pAqZwliUusE49ZmYE3s,1796
4
4
  samples/assets/__init__.py,sha256=eoZ6GfifbqhMLNzjlqRDVil-yyBkOmVN9ujSgJWNBlY,15
5
5
  samples/assets/assets_client.py,sha256=p9LS2Td3gbUMkHn4LD_9RMCFuaQRUbsKvG4PhZBGJDc,1974
6
6
  samples/data/__init__.py,sha256=eoZ6GfifbqhMLNzjlqRDVil-yyBkOmVN9ujSgJWNBlY,15
7
- samples/data/data_client.py,sha256=rH91Yj7oIF6dBOOzF99cUn_12cgDLkw02SNIQM2nB1o,4868
7
+ samples/data/data_client.py,sha256=8FR5ZOY8jWCGfN3XohzyvLdFxYv-TdqfWRKw3E827WY,5248
8
+ samples/data/data_client_event.py,sha256=aqOTvuUOoWhqfac7z8JHWQC1EXWoVaGcnp8tlHO_PVE,2301
8
9
  samples/data/data_streaming_client.py,sha256=IdCUNdfo2_dR9OLgWZuIc9U9s-0-uNjwqkf9aLoG-44,4088
9
10
  samples/data/data_streaming_client_async.py,sha256=o_u1ch8JdbcYnLCvDCCUzO-Z1IG7BUKncu_GB_kCbOs,4443
11
+ samples/data/data_streaming_client_event.py,sha256=BRMxFdkzEHyppLlhvFfzvET0RQZPxHxAHIn3g-dIf10,3050
10
12
  samples/order/__init__.py,sha256=eoZ6GfifbqhMLNzjlqRDVil-yyBkOmVN9ujSgJWNBlY,15
11
13
  samples/order/order_option_client.py,sha256=njxr1QZc69_VbHsp9D9cOv1_-AekO2uNYKiY7o0-1Eg,3602
12
14
  samples/order/order_stock_client.py,sha256=hYwVwVFVERk-YS7gRcW-LuGfAvcF8VJHZs1qwLcFhYU,3529
13
15
  samples/trade/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
16
  samples/trade/trade_client.py,sha256=LyWSvZJH4ByCkRORqP9WdkXfx65A2b6fhc9_GzL8DOM,6258
15
17
  samples/trade/trade_client_v2.py,sha256=IO-zmRiUnCmIetTdiYunPh8jVK2VaPrOR77Dwvz1auY,10771
16
- samples/trade/trade_client_v3.py,sha256=70f4VJYWcSJP3ppA8mRAoftJqjRTn5GTeGZck8eLCTg,16526
17
- samples/trade/trade_event_client.py,sha256=uOx9EwFaves2yaTNm13BHpYC0IHXSoBL8BWPbDLeFw4,2469
18
- webull/__init__.py,sha256=mFFUUCx5TqyW1TTFRrWDhXXVMJDMRxXWrkHanVtp9oY,22
19
- webull/core/__init__.py,sha256=l5SgEaJNDBxUASBJsNGBJYu3AocnG4Mr89RIOokPiTA,225
18
+ samples/trade/trade_client_v3.py,sha256=cyP-gEyzi-mXtrb2RBRou8WmCOZhjEgr75lE27DuEZc,18783
19
+ samples/trade/trade_client_v3_event.py,sha256=91HlT04KlK8Q5gUnsB8F5ErCFdJRnpDABKkBfYRc-YE,3932
20
+ samples/trade/trade_event_client.py,sha256=BWdD1L41LXmDlaig6ku9T3t3fSCCZEdj5nxH1xI1AZA,2653
21
+ webull/__init__.py,sha256=b6-WiVk0Li5MaV2rBnHYl104TsouINojSWKqHDas0js,22
22
+ webull/core/__init__.py,sha256=oLOxMxcWb31kX-WluC8UBbN_qh7Ybd68lBklE_xJOK4,225
20
23
  webull/core/client.py,sha256=OE_ghPA558eE85MmaU_I3Tg0j-osCQFChTk-6dy4OW0,16398
21
24
  webull/core/compat.py,sha256=HDis0D271oQ6OCpA7ViX10NJdhfXdoBfzx6nuV3vrnI,3114
22
25
  webull/core/headers.py,sha256=7aMt3_YtaL9Yhqj2T1g7ESQgkI78SAXIk7hMX5U5FgE,2019
@@ -186,11 +189,11 @@ webull/core/vendored/requests/packages/urllib3/util/ssl_.py,sha256=aRUKc1WIyS-sU
186
189
  webull/core/vendored/requests/packages/urllib3/util/timeout.py,sha256=sAyiBBds7eOk1oM3ulvVMWZiqx1B743puHqK92XwBcY,10325
187
190
  webull/core/vendored/requests/packages/urllib3/util/url.py,sha256=_CgqbyNrQWubrv_y5aWhuutz3mnbj1cvTUe4VYbGYWA,7367
188
191
  webull/core/vendored/requests/packages/urllib3/util/wait.py,sha256=0FHS8R3OrMU-97XWt8AxuUStkSGXTct9CfOwY_fWn7U,5971
189
- webull/data/__init__.py,sha256=s8jHH-qZ5jY8Rsk-YS41NY0gFUU5YjdRBlDw0egN2-4,38
190
- webull/data/data_client.py,sha256=JGouoFd37-sxpP6GyOJ0rRw7UuBmXqoIcis0jiRGJPQ,1871
191
- webull/data/data_streaming_client.py,sha256=hYqrdKTeIB3Xmp7LMjMwN1XE6Y7bKXX0y-lGX1ty6W4,3870
192
+ webull/data/__init__.py,sha256=zA42W1xpbGVCnbQBesHoLxJSnAU9Jk30T5FCHCttTUc,38
193
+ webull/data/data_client.py,sha256=1_jrNHrqes7vygUkA1GRI_CIMJp4zcv_Ny8XUDyck1E,1997
194
+ webull/data/data_streaming_client.py,sha256=W6asCGuEmqciCZhIFf4dLh5CNHoxybixhwjF19p4AJk,4271
192
195
  webull/data/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
193
- webull/data/common/category.py,sha256=r_cMxgc-wJvAvI6xjUR18Tb_VaT9fmwkCtOGmi7VINw,910
196
+ webull/data/common/category.py,sha256=7zp-C6ex1eBHw4jTKgeg4X_JASjAM619pLpzQK9XTbc,942
194
197
  webull/data/common/connect_ack.py,sha256=PGhtTzb1hAciHRvMSqMUasyEMC6vdV52taP8RbTB8t8,1209
195
198
  webull/data/common/contract_type.py,sha256=dQZMIC1kMDbz0TM34ElfsMRI_k2SXsRYyXX6UcI9JG8,715
196
199
  webull/data/common/direction.py,sha256=N0Me8CJD3oQDmx2EpNzlvFQDjmmhxa4qKorpV11OLM0,987
@@ -200,7 +203,7 @@ webull/data/common/expiration_cycle.py,sha256=f1yyOVBnw8jQX16t_QIhyWgfAsaQn8asjd
200
203
  webull/data/common/instrument_status.py,sha256=T8lMZxvhwV-19XprrvbajEfGQ9gaWVjf0p0UASrCxSQ,789
201
204
  webull/data/common/option_type.py,sha256=E4lzZJS-6iX167l6b3mMhWUbNVD0joPxwqGL_mnOGRI,705
202
205
  webull/data/common/subscribe_type.py,sha256=2EpBsPXCDjx5q25GonbUur2upQFfGvT6dcSYQ3BolyY,745
203
- webull/data/common/timespan.py,sha256=Mg-dnvIWclVZRhIkjDiGzRlnOK457PWZ8sY5I8NXRBA,938
206
+ webull/data/common/timespan.py,sha256=Yjr35Zjhj6qyW1k_pnXkDjm6fWWZ-vs44F_gMWCYCKU,991
204
207
  webull/data/internal/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
205
208
  webull/data/internal/default_retry_policy.py,sha256=g94o5LKtbB5XoDiZWHp7yKGOWTTTOT89bz1ZSlT79mI,3307
206
209
  webull/data/internal/exceptions.py,sha256=qtInXjns6ce6KQTtJOxz8M4bywuOJe2sNSAwGJqTWDs,1800
@@ -210,17 +213,22 @@ webull/data/internal/quotes_payload_decoder.py,sha256=x2XGYDu4wSdc1LLrcIo3BXeb5j
210
213
  webull/data/internal/quotes_topic.py,sha256=kG4RZTjj01U0e54qoOrJHlLrPeBzXekySasm2uoyXVo,1138
211
214
  webull/data/quotes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
212
215
  webull/data/quotes/crypto_market_data.py,sha256=UQlxUz0GntvwcRS-Vh_h7cXbhQ045MqPlG5AhWUoQI4,3063
213
- webull/data/quotes/futures_market_data.py,sha256=cS_VMbVsqz8JGF1zM3Hc5fQBR-30yoRM30jIw8HBD3A,4131
214
- webull/data/quotes/instrument.py,sha256=4mrL8VEftiPmbEl_7qdpnrgFDuty54tb6C9j_Hh8iME,5089
215
- webull/data/quotes/market_data.py,sha256=6Md4a30byQiJuglKP0EJW28LCYPCHgJmD1NEAkNocUA,9907
216
+ webull/data/quotes/event_market_data.py,sha256=qWOgJoQWO8-RHdoC80EQt2eYdMRgcmUB84mFXAVodTU,2382
217
+ webull/data/quotes/futures_market_data.py,sha256=fc9giYNy1LcdLHOJV31zMbPBKtWDH8kBW5xRFgHzQUA,5596
218
+ webull/data/quotes/instrument.py,sha256=n-QCRSC0iHWvWMc7Nq5tbJT-XOHeHCCQQ44hGyq59Aw,7470
219
+ webull/data/quotes/market_data.py,sha256=5HjzLQje1F7OxasRrjNPZ2d-tkuYJ-aDMZj3fVEO6cI,11329
216
220
  webull/data/quotes/market_streaming_data.py,sha256=cI9xxGpKV_KDS8cgh9azHifBji0yeSuKmH7Jxaqij38,3139
217
221
  webull/data/quotes/subscribe/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
218
- webull/data/quotes/subscribe/ask_bid_result.py,sha256=EWu5dFMb_BwFGYPLe-f9uCD8_Ftl1wguhpU1qXi2zaY,1552
222
+ webull/data/quotes/subscribe/ask_bid_result.py,sha256=J6Ms_01a44IvzNcw9krwMM0CuA_-zh-5eBGqx2kQbv4,1759
219
223
  webull/data/quotes/subscribe/basic_result.py,sha256=l9pxGlt8HLHwE3plq_6J0OPZ_X4ZjjRfa1f9nExu2dE,1450
220
224
  webull/data/quotes/subscribe/broker_result.py,sha256=E6pM0Ydr6tU_bPSOeyu1KJf7oYgbO-lIXLIdJQANH4I,1013
221
- webull/data/quotes/subscribe/message_pb2.py,sha256=JimxZN9hCEvt_NF0eYRNZJttEsCAc3bWAelE5Tva7yM,3136
225
+ webull/data/quotes/subscribe/event_depth_decoder.py,sha256=-2mOw4o32HWO1a7MuB3hgFoST0ct96Z3PrBFzfCNMJs,1061
226
+ webull/data/quotes/subscribe/event_depth_result.py,sha256=30hUvNqQZNnwGNngmqPO3eFtCkJXd6OjjV8FadN7uXE,1510
227
+ webull/data/quotes/subscribe/event_snapshot_decoder.py,sha256=R1Pnz-Ktmwo3vZ7CVTSY9labn-nZealarE6c0cSieRU,1090
228
+ webull/data/quotes/subscribe/event_snapshot_result.py,sha256=npGS47XNpxP8-u6-3K2mLnLeiI8ofgotOOleqfHkUsc,3327
229
+ webull/data/quotes/subscribe/message_pb2.py,sha256=idUZoqQiG4t0An_sA61CjMr3-v7wTO6mZN3I1LB36pc,4445
222
230
  webull/data/quotes/subscribe/order_result.py,sha256=bqLjRzCDK0jpQBMm00QxfgV-SPg04lOLYxc8SgpkFDw,912
223
- webull/data/quotes/subscribe/payload_type.py,sha256=nacQubAzKjutfddNdilckpsbamCUt6nrBnzrxgMOrWQ,674
231
+ webull/data/quotes/subscribe/payload_type.py,sha256=mkbjRKmiAmGmPvTbJlB74HXWkeJHrz32fiMv2xgqRas,762
224
232
  webull/data/quotes/subscribe/quote_decoder.py,sha256=vTDKi3TaQ79ODTydVcEEiJR2g0fQLPf5hUOqo7Mi1gw,1016
225
233
  webull/data/quotes/subscribe/quote_result.py,sha256=2SoRzSGANphAut1jleNnfZtUhpqqbELRcs1biu440p8,1442
226
234
  webull/data/quotes/subscribe/snapshot_decoder.py,sha256=dukBHXa971LHp9oPkgQ4mqL_8yIAU5XSlUIUjpMz2NY,1045
@@ -234,7 +242,13 @@ webull/data/request/get_crypto_historical_bars_request.py,sha256=FKIp2hB2fPbkMLx
234
242
  webull/data/request/get_crypto_instruments_request.py,sha256=GwOA9oPBH4qNg7yR-lVjrRSGZDF5zfRUBS4PegKLcjk,1549
235
243
  webull/data/request/get_crypto_snapshot_request.py,sha256=W-z9nuBu2RaXqy07zFVHMQs9GP5Hc55vOWWYKoibWVA,1136
236
244
  webull/data/request/get_eod_bars_request.py,sha256=CwbyXeAE-iPKu43zNxcekSw5qOlfEwZsztFxCQvAXuQ,1234
245
+ webull/data/request/get_event_depth_request.py,sha256=g0WzBAc7ab8TdYFJ1EWs9KxOvkrXcvuQrDSS-hNrOkQ,1079
246
+ webull/data/request/get_event_instrument_request.py,sha256=fpfxUhra1d5HP3l_srMiFTZF_VPF-ZgIptV8UPnbGzI,1292
247
+ webull/data/request/get_event_series_request.py,sha256=JR7FXikBnivMDZ_NR347wktJKiAoxWEnjy7uZr3etmE,1126
248
+ webull/data/request/get_event_snapshot_request.py,sha256=rQzdZWQ7eFohYMYmWaZInmdpyNi6rR5KhxgDOPlr_Wc,1133
249
+ webull/data/request/get_footprint_request.py,sha256=MnbKhhe7QMkKqyTxmXl-ztDl5l_3kkFhT1vtql82K3Y,1664
237
250
  webull/data/request/get_futures_depth_request.py,sha256=d6Tl-75pcJlvX6-beAdko15o8hDhdB-486uxH8AeGIk,1083
251
+ webull/data/request/get_futures_footprint_request.py,sha256=I0l-SlXBKqY61Oxq1zn1EWwLY79euuEoUcrvCzPJlA8,1673
238
252
  webull/data/request/get_futures_historical_bars_request.py,sha256=QwvJq33wkJ-_KLZutkh3Z55gQyCDTRkCPwc9UyYcvKU,1330
239
253
  webull/data/request/get_futures_instruments_by_code_request.py,sha256=9WjmisgOtzSim-3umKu_2NaATPZBFQxU-3HQ-jBHU1U,1319
240
254
  webull/data/request/get_futures_instruments_request.py,sha256=3i1B0v0jhQxx3ETN2Jiu-3aoitUWFN6QfwGNnBfK8eo,1136
@@ -248,9 +262,9 @@ webull/data/request/get_snapshot_request.py,sha256=OD2PiaxmBCboFDaU8DFTwvfNd2zOb
248
262
  webull/data/request/get_tick_request.py,sha256=rUHhQgC8Z_6ensLyCkg3DDK55SlEi0Bc_dhpCIIspDs,1366
249
263
  webull/data/request/subscribe_request.py,sha256=dm93Q5Q4gigAMqAobolaYYSs3wM6QddPUZOjEtJsX-8,1471
250
264
  webull/data/request/unsubscribe_request.py,sha256=hQA4mYM64PgmQEA2otl47-3nCXqjsSY_weFA3_wNbMM,1446
251
- webull/trade/__init__.py,sha256=iCEPnhz-knfGRAO4Ep2uQaYf4xwhPIjjcgAcNjga8kc,21
265
+ webull/trade/__init__.py,sha256=XIz3qAg9G9YysQi3Ryp0CN3rtc_JiecHZ9L2vEzcM6s,21
252
266
  webull/trade/trade_client.py,sha256=_6lH4KO-jKgKWU28fWNsc9-KEHto-WvaP0gT96BJ_dw,2184
253
- webull/trade/trade_events_client.py,sha256=4a7qupeT3dKJRKBQqXNhCai6ENzX6PA4yjTDHHxPR0w,8892
267
+ webull/trade/trade_events_client.py,sha256=KCabQmP9zwo6o8mJYOkXL21dz4yb-SFUcVpKfY88hPQ,8897
254
268
  webull/trade/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
255
269
  webull/trade/common/account_type.py,sha256=haVAB33MERN6XyPsbrfVQhK9_CpU90VltI6_KDkxzlE,715
256
270
  webull/trade/common/category.py,sha256=GJ9pDCMkwq7062o9L9o5aPvqHoYxuMqEbInlkfxD65U,911
@@ -273,7 +287,7 @@ webull/trade/events/default_retry_policy.py,sha256=zWoaJFJSUTtHw_qLj9_AIPBzFW6UH
273
287
  webull/trade/events/events_pb2.py,sha256=NLolj5VOws1LJT5YIvnuZab9YYhR4lm2-iCkztaARPo,2440
274
288
  webull/trade/events/events_pb2_grpc.py,sha256=ebxp_VCJHBQFCKvxBKRUMhW67TZoUn6NwCBvKpiTEpg,2482
275
289
  webull/trade/events/signature_composer.py,sha256=zcfBgwQ6XpoEOmeqSnKlgl0j0oDQ0x80_KS_11W3gwA,2496
276
- webull/trade/events/types.py,sha256=jRX198gzHd5z_xke9yzfrJhclEBVTbCsDoln2PA-q0g,689
290
+ webull/trade/events/types.py,sha256=NkBeC3mQPflcg7NDTChVS-DAtDPX_G-od9YJt_FLZTc,689
277
291
  webull/trade/request/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
278
292
  webull/trade/request/cancel_order_request.py,sha256=JbyeVNOVu9xvwzba7Ntw2Sh4BrNVUbBTkYLTKgXIU5U,1016
279
293
  webull/trade/request/get_account_balance_request.py,sha256=S9M1rz6HFlIwRpWfkQKVfRo996_DWF8Qe6bGirSnkV0,1042
@@ -328,9 +342,9 @@ webull/trade/trade/v2/account_info_v2.py,sha256=IGY_BGTrZ0h7yQ_nDodNtmKen9gXW6he
328
342
  webull/trade/trade/v2/order_operation_v2.py,sha256=m54RH2j45CBBWEnqe4KxrsltAF44XKtPMT4kv8t7djQ,12745
329
343
  webull/trade/trade/v3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
330
344
  webull/trade/trade/v3/order_opration_v3.py,sha256=_L10--m_XhoMe8YeYjQXVvRoTAWoRRzLU59UeneyMrU,7428
331
- webull_openapi_python_sdk-1.0.8.dist-info/licenses/LICENSE,sha256=ALOnsLtb1aHxmDJg3-oMi0BO-i-cjfyZaOBfnnavKMc,11359
332
- webull_openapi_python_sdk-1.0.8.dist-info/licenses/NOTICE,sha256=X5TApte6CPV10b96Cb70IRLusXmiRmK_R-dB-1tQM_I,2018
333
- webull_openapi_python_sdk-1.0.8.dist-info/METADATA,sha256=jcAKegwV60urTKWSWSD1BhcsnEPVUU49Cz22cpSAKU8,702
334
- webull_openapi_python_sdk-1.0.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
335
- webull_openapi_python_sdk-1.0.8.dist-info/top_level.txt,sha256=h8pEjNDGWS2ZUZ2vYFpUShoMQT0ZRIQaD57QJWD8_aI,15
336
- webull_openapi_python_sdk-1.0.8.dist-info/RECORD,,
345
+ webull_openapi_python_sdk-1.1.0.dist-info/licenses/LICENSE,sha256=ALOnsLtb1aHxmDJg3-oMi0BO-i-cjfyZaOBfnnavKMc,11359
346
+ webull_openapi_python_sdk-1.1.0.dist-info/licenses/NOTICE,sha256=X5TApte6CPV10b96Cb70IRLusXmiRmK_R-dB-1tQM_I,2018
347
+ webull_openapi_python_sdk-1.1.0.dist-info/METADATA,sha256=SoLm3zYNjQ1YlShV_dBgS8UZ6_CoQt7FEmu3xqYciGQ,702
348
+ webull_openapi_python_sdk-1.1.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
349
+ webull_openapi_python_sdk-1.1.0.dist-info/top_level.txt,sha256=h8pEjNDGWS2ZUZ2vYFpUShoMQT0ZRIQaD57QJWD8_aI,15
350
+ webull_openapi_python_sdk-1.1.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.2)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5