webull-openapi-python-sdk 2.0.1__py3-none-any.whl → 2.0.2__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.
- samples/__init__.py +1 -1
- samples/data/data_streaming_client_event.py +1 -1
- samples/trade/trade_client_v3.py +2 -0
- webull/__init__.py +1 -1
- webull/core/__init__.py +1 -1
- webull/data/__init__.py +1 -1
- webull/data/data_streaming_client.py +3 -1
- webull/data/quotes/subscribe/event_tick_decoder.py +30 -0
- webull/data/quotes/subscribe/event_tick_result.py +56 -0
- webull/data/quotes/subscribe/message_pb2.py +3 -1
- webull/data/quotes/subscribe/payload_type.py +2 -1
- webull/trade/__init__.py +1 -1
- webull/trade/common/position_intent.py +24 -0
- webull/trade/trade_events_client.py +5 -1
- {webull_openapi_python_sdk-2.0.1.dist-info → webull_openapi_python_sdk-2.0.2.dist-info}/METADATA +1 -1
- {webull_openapi_python_sdk-2.0.1.dist-info → webull_openapi_python_sdk-2.0.2.dist-info}/RECORD +20 -17
- {webull_openapi_python_sdk-2.0.1.dist-info → webull_openapi_python_sdk-2.0.2.dist-info}/WHEEL +0 -0
- {webull_openapi_python_sdk-2.0.1.dist-info → webull_openapi_python_sdk-2.0.2.dist-info}/licenses/LICENSE +0 -0
- {webull_openapi_python_sdk-2.0.1.dist-info → webull_openapi_python_sdk-2.0.2.dist-info}/licenses/NOTICE +0 -0
- {webull_openapi_python_sdk-2.0.1.dist-info → webull_openapi_python_sdk-2.0.2.dist-info}/top_level.txt +0 -0
samples/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = '2.0.
|
|
1
|
+
__version__ = '2.0.2'
|
|
@@ -43,7 +43,7 @@ if __name__ == '__main__':
|
|
|
43
43
|
print("connect success with session_id:%s" % quotes_session_id)
|
|
44
44
|
# subscribe
|
|
45
45
|
symbols = ['KXNHLGAME-26JAN21ANACOL-ANA', 'KXNBAGAME-26JAN20LACCHI-LAC']
|
|
46
|
-
sub_types = [SubscribeType.QUOTE.name, SubscribeType.SNAPSHOT.name]
|
|
46
|
+
sub_types = [SubscribeType.QUOTE.name, SubscribeType.SNAPSHOT.name, SubscribeType.TICK.name]
|
|
47
47
|
client.subscribe(symbols, Category.US_EVENT.name, sub_types)
|
|
48
48
|
|
|
49
49
|
def my_quotes_message_func(client, topic, quotes):
|
samples/trade/trade_client_v3.py
CHANGED
|
@@ -247,6 +247,7 @@ if __name__ == '__main__':
|
|
|
247
247
|
# ============================================================
|
|
248
248
|
|
|
249
249
|
# normal option order
|
|
250
|
+
# position_intent: Currently, only the US market is supported, and only options orders are allowed.
|
|
250
251
|
normal_option_client_order_id = uuid.uuid4().hex
|
|
251
252
|
new_normal_option_orders = [
|
|
252
253
|
{
|
|
@@ -259,6 +260,7 @@ if __name__ == '__main__':
|
|
|
259
260
|
"side": "BUY",
|
|
260
261
|
"time_in_force": "GTC",
|
|
261
262
|
"entrust_type": "QTY",
|
|
263
|
+
"position_intent": "BUY_TO_OPEN",
|
|
262
264
|
"legs": [
|
|
263
265
|
{
|
|
264
266
|
"side": "BUY",
|
webull/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = '2.0.
|
|
1
|
+
__version__ = '2.0.2'
|
webull/core/__init__.py
CHANGED
webull/data/__init__.py
CHANGED
|
@@ -18,8 +18,9 @@ from webull.data.internal.quotes_client import QuotesClient, LOG_ERR
|
|
|
18
18
|
from webull.data.quotes.market_streaming_data import MarketDataStreaming
|
|
19
19
|
from webull.data.quotes.subscribe.event_depth_decoder import EventDepthDecoder
|
|
20
20
|
from webull.data.quotes.subscribe.event_snapshot_decoder import EventSnapshotDecoder
|
|
21
|
+
from webull.data.quotes.subscribe.event_tick_decoder import EventTickDecoder
|
|
21
22
|
from webull.data.quotes.subscribe.payload_type import PAYLOAD_TYPE_QUOTE, PAYLOAD_TYPE_SHAPSHOT, PAYLOAD_TYPE_TICK, \
|
|
22
|
-
PAYLOAD_TYPE_EVENT_SHAPSHOT, PAYLOAD_TYPE_EVENT_DEPTH
|
|
23
|
+
PAYLOAD_TYPE_EVENT_SHAPSHOT, PAYLOAD_TYPE_EVENT_DEPTH, PAYLOAD_TYPE_EVENT_TICK
|
|
23
24
|
from webull.data.quotes.subscribe.quote_decoder import QuoteDecoder
|
|
24
25
|
from webull.data.quotes.subscribe.snapshot_decoder import SnapshotDecoder
|
|
25
26
|
from webull.data.quotes.subscribe.tick_decoder import TickDecoder
|
|
@@ -44,6 +45,7 @@ class DataStreamingClient(QuotesClient):
|
|
|
44
45
|
self.register_payload_decoder(PAYLOAD_TYPE_TICK, TickDecoder())
|
|
45
46
|
self.register_payload_decoder(PAYLOAD_TYPE_EVENT_DEPTH, EventDepthDecoder())
|
|
46
47
|
self.register_payload_decoder(PAYLOAD_TYPE_EVENT_SHAPSHOT, EventSnapshotDecoder())
|
|
48
|
+
self.register_payload_decoder(PAYLOAD_TYPE_EVENT_TICK, EventTickDecoder())
|
|
47
49
|
|
|
48
50
|
@property
|
|
49
51
|
def on_connect_success(self):
|
|
@@ -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
|
+
# coding=utf-8
|
|
15
|
+
|
|
16
|
+
from webull.data.quotes.subscribe.message_pb2 import EventTick
|
|
17
|
+
from webull.data.quotes.subscribe.event_tick_result import EventTickResult
|
|
18
|
+
|
|
19
|
+
from webull.data.internal.quotes_payload_decoder import BaseQuotesPayloadDecoder
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class EventTickDecoder(BaseQuotesPayloadDecoder):
|
|
24
|
+
def __init__(self):
|
|
25
|
+
super().__init__()
|
|
26
|
+
|
|
27
|
+
def parse(self, payload):
|
|
28
|
+
eventTick = EventTick()
|
|
29
|
+
eventTick.ParseFromString(payload)
|
|
30
|
+
return EventTickResult(eventTick)
|
|
@@ -0,0 +1,56 @@
|
|
|
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 EventTickResult:
|
|
22
|
+
def __init__(self, pb_event_tick):
|
|
23
|
+
self.basic = BasicResult(pb_event_tick.basic)
|
|
24
|
+
self.time = pb_event_tick.time
|
|
25
|
+
self.yes_price = Decimal(pb_event_tick.yes_price) if pb_event_tick.yes_price else None
|
|
26
|
+
self.no_price = Decimal(pb_event_tick.no_price) if pb_event_tick.no_price else None
|
|
27
|
+
self.volume = pb_event_tick.volume
|
|
28
|
+
self.side = pb_event_tick.side
|
|
29
|
+
self.trade_id = pb_event_tick.trade_id
|
|
30
|
+
|
|
31
|
+
def get_basic(self):
|
|
32
|
+
return self.basic
|
|
33
|
+
|
|
34
|
+
def get_time(self):
|
|
35
|
+
return self.time
|
|
36
|
+
|
|
37
|
+
def get_yes_price(self):
|
|
38
|
+
return self.yes_price
|
|
39
|
+
|
|
40
|
+
def get_no_price(self):
|
|
41
|
+
return self.no_price
|
|
42
|
+
|
|
43
|
+
def get_volume(self):
|
|
44
|
+
return self.volume
|
|
45
|
+
|
|
46
|
+
def get_side(self):
|
|
47
|
+
return self.side
|
|
48
|
+
|
|
49
|
+
def get_trade_id(self):
|
|
50
|
+
return self.trade_id
|
|
51
|
+
|
|
52
|
+
def __repr__(self):
|
|
53
|
+
return "basic: %s,time: %s,yes_price: %s,no_price:%s,volume:%s,side:%s,trade_id:%s" % (self.basic, self.time, self.yes_price, self.no_price, self.volume, self.side, self.trade_id)
|
|
54
|
+
|
|
55
|
+
def __str__(self):
|
|
56
|
+
return self.__repr__()
|
|
@@ -13,7 +13,7 @@ _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(\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')
|
|
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(\t\"\x85\x01\n\tEventTick\x12\x15\n\x05\x62\x61sic\x18\x01 \x01(\x0b\x32\x06.Basic\x12\x11\n\tyes_price\x18\x02 \x01(\t\x12\x10\n\x08no_price\x18\x03 \x01(\t\x12\x0e\n\x06volume\x18\x04 \x01(\t\x12\x0c\n\x04side\x18\x05 \x01(\t\x12\x10\n\x08trade_id\x18\x06 \x01(\t\x12\x0c\n\x04time\x18\x07 \x01(\tb\x06proto3')
|
|
17
17
|
|
|
18
18
|
_globals = globals()
|
|
19
19
|
_builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
|
|
@@ -40,4 +40,6 @@ if _descriptor._USE_C_DESCRIPTORS == False:
|
|
|
40
40
|
_globals['_EVENTQUOTE']._serialized_end=1281
|
|
41
41
|
_globals['_EVENTASKBID']._serialized_start=1283
|
|
42
42
|
_globals['_EVENTASKBID']._serialized_end=1325
|
|
43
|
+
_globals['_EVENTTICK']._serialized_start=1328
|
|
44
|
+
_globals['_EVENTTICK']._serialized_end=1461
|
|
43
45
|
# @@protoc_insertion_point(module_scope)
|
|
@@ -18,4 +18,5 @@ PAYLOAD_TYPE_QUOTE = 'quote'
|
|
|
18
18
|
PAYLOAD_TYPE_SHAPSHOT = 'snapshot'
|
|
19
19
|
PAYLOAD_TYPE_TICK = 'tick'
|
|
20
20
|
PAYLOAD_TYPE_EVENT_DEPTH = 'event-quote'
|
|
21
|
-
PAYLOAD_TYPE_EVENT_SHAPSHOT = 'event-snapshot'
|
|
21
|
+
PAYLOAD_TYPE_EVENT_SHAPSHOT = 'event-snapshot'
|
|
22
|
+
PAYLOAD_TYPE_EVENT_TICK = 'event-tick'
|
webull/trade/__init__.py
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
__version__ = '
|
|
1
|
+
__version__ = '2.0.2'
|
|
@@ -0,0 +1,24 @@
|
|
|
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
|
+
|
|
19
|
+
|
|
20
|
+
class OrderStatus(EasyEnum):
|
|
21
|
+
BUY_TO_OPEN = (1, "BUY_TO_OPEN")
|
|
22
|
+
BUY_TO_CLOSE = (2, "BUY_TO_CLOSE")
|
|
23
|
+
SELL_TO_OPEN = (3, "SELL_TO_OPEN")
|
|
24
|
+
SELL_TO_CLOSE = (4, "SELL_TO_CLOSE")
|
|
@@ -68,8 +68,12 @@ class TradeEventsClient():
|
|
|
68
68
|
self._on_log = None
|
|
69
69
|
|
|
70
70
|
def _build_request(self, app_key, app_secret, accounts):
|
|
71
|
+
if self._region_id == 'us':
|
|
72
|
+
subscribeType = 3
|
|
73
|
+
else:
|
|
74
|
+
subscribeType = 1
|
|
71
75
|
request = pb.SubscribeRequest(
|
|
72
|
-
subscribeType=
|
|
76
|
+
subscribeType= subscribeType, # 1、2、3 allowed now
|
|
73
77
|
timestamp=int(time.time() * 1000), # millis
|
|
74
78
|
accounts=accounts,
|
|
75
79
|
)
|
{webull_openapi_python_sdk-2.0.1.dist-info → webull_openapi_python_sdk-2.0.2.dist-info}/RECORD
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
samples/__init__.py,sha256=
|
|
1
|
+
samples/__init__.py,sha256=kumiGImhzOTlTrRM-6jDo2mNnVHGO_2vxtrhB0nzAiw,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
|
|
@@ -8,18 +8,18 @@ samples/data/data_client.py,sha256=8FR5ZOY8jWCGfN3XohzyvLdFxYv-TdqfWRKw3E827WY,5
|
|
|
8
8
|
samples/data/data_client_event.py,sha256=u6Bebo2hTE0Ri1bQHa8nhFEe-fBbdxfNwLpTZh3E1WY,3046
|
|
9
9
|
samples/data/data_streaming_client.py,sha256=2da21SE_Mneo7zbM_l1rkpdBBbI4avrpnSPMxsZIalw,4085
|
|
10
10
|
samples/data/data_streaming_client_async.py,sha256=o_u1ch8JdbcYnLCvDCCUzO-Z1IG7BUKncu_GB_kCbOs,4443
|
|
11
|
-
samples/data/data_streaming_client_event.py,sha256=
|
|
11
|
+
samples/data/data_streaming_client_event.py,sha256=688YhVFA53AWkYBq5-PBXMKIBICf626LpgN6ESHaRSA,3075
|
|
12
12
|
samples/order/__init__.py,sha256=eoZ6GfifbqhMLNzjlqRDVil-yyBkOmVN9ujSgJWNBlY,15
|
|
13
13
|
samples/order/order_option_client.py,sha256=njxr1QZc69_VbHsp9D9cOv1_-AekO2uNYKiY7o0-1Eg,3602
|
|
14
14
|
samples/order/order_stock_client.py,sha256=hYwVwVFVERk-YS7gRcW-LuGfAvcF8VJHZs1qwLcFhYU,3529
|
|
15
15
|
samples/trade/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
16
|
samples/trade/trade_client.py,sha256=LyWSvZJH4ByCkRORqP9WdkXfx65A2b6fhc9_GzL8DOM,6258
|
|
17
17
|
samples/trade/trade_client_v2.py,sha256=IO-zmRiUnCmIetTdiYunPh8jVK2VaPrOR77Dwvz1auY,10771
|
|
18
|
-
samples/trade/trade_client_v3.py,sha256=
|
|
18
|
+
samples/trade/trade_client_v3.py,sha256=0PPa8Ws8xquKkoxLNI9kdpHqbmIDvjrX449NCW-dwYs,18933
|
|
19
19
|
samples/trade/trade_client_v3_event.py,sha256=91HlT04KlK8Q5gUnsB8F5ErCFdJRnpDABKkBfYRc-YE,3932
|
|
20
20
|
samples/trade/trade_event_client.py,sha256=BWdD1L41LXmDlaig6ku9T3t3fSCCZEdj5nxH1xI1AZA,2653
|
|
21
|
-
webull/__init__.py,sha256=
|
|
22
|
-
webull/core/__init__.py,sha256=
|
|
21
|
+
webull/__init__.py,sha256=kumiGImhzOTlTrRM-6jDo2mNnVHGO_2vxtrhB0nzAiw,22
|
|
22
|
+
webull/core/__init__.py,sha256=Ylr7nRvr6kvXjQi7itfhWrS1jw3gBhZft9UJvKU5NME,225
|
|
23
23
|
webull/core/client.py,sha256=QTH_2CuPdtl5hgfjZMMHV9XkC2NkHe929t_EC-oCYqs,16314
|
|
24
24
|
webull/core/compat.py,sha256=_r6Y_f3vTo_DoxOaCvLjnvOo1KRkD2Z9kXSh8OijEIA,3088
|
|
25
25
|
webull/core/headers.py,sha256=7aMt3_YtaL9Yhqj2T1g7ESQgkI78SAXIk7hMX5U5FgE,2019
|
|
@@ -84,9 +84,9 @@ webull/core/utils/common.py,sha256=iQ-HWNhpg8EhtIKS7Iqp2xHrQmwEwcK9PrMwlTmu1C4,1
|
|
|
84
84
|
webull/core/utils/data.py,sha256=YUyoWY68_2RkKanh3jsDscgGx__FIPh5VNEGXr1Qotc,852
|
|
85
85
|
webull/core/utils/desensitize.py,sha256=f8_ps9BrG3WfXD8ZAw873-_YoGeke1Q55CeDwRmYkqA,1104
|
|
86
86
|
webull/core/utils/validation.py,sha256=gJcIrHYtgo48yVJ0q6O-f5buTYWOcr6ShhDIBhTp-Yg,1957
|
|
87
|
-
webull/data/__init__.py,sha256
|
|
87
|
+
webull/data/__init__.py,sha256=VneTYPdxN13uMVBkCiHF3l7IKhv6hDMTctOC82Pdacg,38
|
|
88
88
|
webull/data/data_client.py,sha256=1_jrNHrqes7vygUkA1GRI_CIMJp4zcv_Ny8XUDyck1E,1997
|
|
89
|
-
webull/data/data_streaming_client.py,sha256=
|
|
89
|
+
webull/data/data_streaming_client.py,sha256=TQBAilvOLCbcMqacByrniXGr9VjSwjym-4-LUOiqKx8,4456
|
|
90
90
|
webull/data/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
91
91
|
webull/data/common/category.py,sha256=7zp-C6ex1eBHw4jTKgeg4X_JASjAM619pLpzQK9XTbc,942
|
|
92
92
|
webull/data/common/connect_ack.py,sha256=PGhtTzb1hAciHRvMSqMUasyEMC6vdV52taP8RbTB8t8,1209
|
|
@@ -121,9 +121,11 @@ webull/data/quotes/subscribe/event_depth_decoder.py,sha256=-2mOw4o32HWO1a7MuB3hg
|
|
|
121
121
|
webull/data/quotes/subscribe/event_depth_result.py,sha256=30hUvNqQZNnwGNngmqPO3eFtCkJXd6OjjV8FadN7uXE,1510
|
|
122
122
|
webull/data/quotes/subscribe/event_snapshot_decoder.py,sha256=R1Pnz-Ktmwo3vZ7CVTSY9labn-nZealarE6c0cSieRU,1090
|
|
123
123
|
webull/data/quotes/subscribe/event_snapshot_result.py,sha256=npGS47XNpxP8-u6-3K2mLnLeiI8ofgotOOleqfHkUsc,3327
|
|
124
|
-
webull/data/quotes/subscribe/
|
|
124
|
+
webull/data/quotes/subscribe/event_tick_decoder.py,sha256=-zwRK6E82ZZcl9bh8EizoI6P9u43vTmXJil1Rpd9CVI,1055
|
|
125
|
+
webull/data/quotes/subscribe/event_tick_result.py,sha256=t2N8l6YoXCZA5IntPAQTd4fMFIf_X0uSicmfeCMWJt8,1801
|
|
126
|
+
webull/data/quotes/subscribe/message_pb2.py,sha256=A0Efl43sUsebfaGxKc1J-2MZgykMgxuCBQimT5cbelI,4836
|
|
125
127
|
webull/data/quotes/subscribe/order_result.py,sha256=bqLjRzCDK0jpQBMm00QxfgV-SPg04lOLYxc8SgpkFDw,912
|
|
126
|
-
webull/data/quotes/subscribe/payload_type.py,sha256=
|
|
128
|
+
webull/data/quotes/subscribe/payload_type.py,sha256=2b-Xd0RzME0ou-SaKarLZ5ZRwBZVwA7TevIH4075IHU,801
|
|
127
129
|
webull/data/quotes/subscribe/quote_decoder.py,sha256=vTDKi3TaQ79ODTydVcEEiJR2g0fQLPf5hUOqo7Mi1gw,1016
|
|
128
130
|
webull/data/quotes/subscribe/quote_result.py,sha256=2SoRzSGANphAut1jleNnfZtUhpqqbELRcs1biu440p8,1442
|
|
129
131
|
webull/data/quotes/subscribe/snapshot_decoder.py,sha256=dukBHXa971LHp9oPkgQ4mqL_8yIAU5XSlUIUjpMz2NY,1045
|
|
@@ -161,9 +163,9 @@ webull/data/request/get_snapshot_request.py,sha256=OD2PiaxmBCboFDaU8DFTwvfNd2zOb
|
|
|
161
163
|
webull/data/request/get_tick_request.py,sha256=rUHhQgC8Z_6ensLyCkg3DDK55SlEi0Bc_dhpCIIspDs,1366
|
|
162
164
|
webull/data/request/subscribe_request.py,sha256=dm93Q5Q4gigAMqAobolaYYSs3wM6QddPUZOjEtJsX-8,1471
|
|
163
165
|
webull/data/request/unsubscribe_request.py,sha256=hQA4mYM64PgmQEA2otl47-3nCXqjsSY_weFA3_wNbMM,1446
|
|
164
|
-
webull/trade/__init__.py,sha256=
|
|
166
|
+
webull/trade/__init__.py,sha256=GAIRmJowMWRtWQeCyC7ifwuM8E1mb_c41kcL-Cp0kAc,21
|
|
165
167
|
webull/trade/trade_client.py,sha256=_6lH4KO-jKgKWU28fWNsc9-KEHto-WvaP0gT96BJ_dw,2184
|
|
166
|
-
webull/trade/trade_events_client.py,sha256=
|
|
168
|
+
webull/trade/trade_events_client.py,sha256=Vl4qsIEuDagjI7csqKr7K0fqHXbu-iN-5Ti28HBcub4,9017
|
|
167
169
|
webull/trade/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
168
170
|
webull/trade/common/account_type.py,sha256=haVAB33MERN6XyPsbrfVQhK9_CpU90VltI6_KDkxzlE,715
|
|
169
171
|
webull/trade/common/category.py,sha256=GJ9pDCMkwq7062o9L9o5aPvqHoYxuMqEbInlkfxD65U,911
|
|
@@ -178,6 +180,7 @@ webull/trade/common/order_side.py,sha256=9kfuMnMzG3a_8Qq9jbeei9tQCVn3sTFA0jYAu6u
|
|
|
178
180
|
webull/trade/common/order_status.py,sha256=A9fSZR3x2EyQ87IFtj08QvPHxoxNJ7yTN0162u877FU,828
|
|
179
181
|
webull/trade/common/order_tif.py,sha256=ehP2gFgReW11aiqQFcO4k3EtqVC7NRaqldIPEfE6EOY,759
|
|
180
182
|
webull/trade/common/order_type.py,sha256=dXOaTtRQiubudg3A5sj3imaGjaedqUJvG_6bkco7vxc,1099
|
|
183
|
+
webull/trade/common/position_intent.py,sha256=nfO6vihp3z_rk4QUpOlUuFEiLL3KVWja2G-Dd-UtslU,821
|
|
181
184
|
webull/trade/common/trade_policy.py,sha256=Tm3RN2_fZSXl5APPWeg8riEHlrvFURPt-dGIK6zDbPU,800
|
|
182
185
|
webull/trade/common/trading_date_type.py,sha256=xw8-oxBZNB-jdF25-PRv_5gwpXs8MksVZyZ7ZXRMLqY,747
|
|
183
186
|
webull/trade/common/trailing_type.py,sha256=w-wi2Gy-v-8b2oUprQHobwql639Je4FIlPKxojlagz4,729
|
|
@@ -241,9 +244,9 @@ webull/trade/trade/v2/account_info_v2.py,sha256=IGY_BGTrZ0h7yQ_nDodNtmKen9gXW6he
|
|
|
241
244
|
webull/trade/trade/v2/order_operation_v2.py,sha256=m54RH2j45CBBWEnqe4KxrsltAF44XKtPMT4kv8t7djQ,12745
|
|
242
245
|
webull/trade/trade/v3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
243
246
|
webull/trade/trade/v3/order_opration_v3.py,sha256=_L10--m_XhoMe8YeYjQXVvRoTAWoRRzLU59UeneyMrU,7428
|
|
244
|
-
webull_openapi_python_sdk-2.0.
|
|
245
|
-
webull_openapi_python_sdk-2.0.
|
|
246
|
-
webull_openapi_python_sdk-2.0.
|
|
247
|
-
webull_openapi_python_sdk-2.0.
|
|
248
|
-
webull_openapi_python_sdk-2.0.
|
|
249
|
-
webull_openapi_python_sdk-2.0.
|
|
247
|
+
webull_openapi_python_sdk-2.0.2.dist-info/licenses/LICENSE,sha256=ALOnsLtb1aHxmDJg3-oMi0BO-i-cjfyZaOBfnnavKMc,11359
|
|
248
|
+
webull_openapi_python_sdk-2.0.2.dist-info/licenses/NOTICE,sha256=X5TApte6CPV10b96Cb70IRLusXmiRmK_R-dB-1tQM_I,2018
|
|
249
|
+
webull_openapi_python_sdk-2.0.2.dist-info/METADATA,sha256=5f5IQbNnYzJhQpI4ifg6cU8FbrqvDs6qRrDCwN-OfW4,1032
|
|
250
|
+
webull_openapi_python_sdk-2.0.2.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
251
|
+
webull_openapi_python_sdk-2.0.2.dist-info/top_level.txt,sha256=h8pEjNDGWS2ZUZ2vYFpUShoMQT0ZRIQaD57QJWD8_aI,15
|
|
252
|
+
webull_openapi_python_sdk-2.0.2.dist-info/RECORD,,
|
{webull_openapi_python_sdk-2.0.1.dist-info → webull_openapi_python_sdk-2.0.2.dist-info}/WHEEL
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|