Skip to content

Commit 5e08f6a

Browse files
committed
Merge branch 'dev' into 'master'
Dev->master See merge request server/openapi/openapi-python-sdk!182
2 parents 8087137 + 161a920 commit 5e08f6a

29 files changed

+501
-28
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 3.0.1 (2023-06-21)
2+
### New
3+
- 历史K线额度接口
4+
- 持仓对象新增按均价计算的盈亏字段
5+
- 长链接新增榜单数据推送
6+
17
## 3.0.0 (2023-06-08)
28
### Breaking
39
- 长链接由默认stomp改为默认使用protobuf

tigeropen/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@
44
55
@author: gaoan
66
"""
7-
__VERSION__ = '3.0.0'
7+
__VERSION__ = '3.0.1'

tigeropen/common/consts/__init__.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,3 +215,18 @@ class ComboType(Enum):
215215
DIAGONAL = 'DIAGONAL'
216216
SYNTHETIC = 'SYNTHETIC'
217217
CUSTOM = 'CUSTOM'
218+
219+
class StockRankingIndicator(Enum):
220+
ChangeRate = "changeRate"
221+
ChangeRate5Min = "changeRate5Min"
222+
TurnoverRate = "turnoverRate"
223+
Amount = "amount" # trade amount
224+
Volume = "volume" # trade volume
225+
Amplitude = "amplitude"
226+
227+
class OptionRankingIndicator(Enum):
228+
BigOrder = "bigOrder"
229+
Volume = "volume"
230+
Amount = "amount"
231+
OpenInt = "openInt"
232+

tigeropen/common/consts/service_types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
CAPITAL_FLOW = "capital_flow" # 股票资金流向
7070
WARRANT_FILTER = "warrant_filter"
7171
WARRANT_REAL_TIME_QUOTE = "warrant_real_time_quote"
72+
KLINE_QUOTA = "kline_quota" # 历史k线额度
7273

7374
# 期权行情
7475
OPTION_EXPIRATION = "option_expiration"

tigeropen/examples/push_client_demo.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,16 @@
88
# from tigeropen.common.consts import QuoteKeyType
99
import pandas as pd
1010

11+
from tigeropen.common.consts import StockRankingIndicator, OptionRankingIndicator
1112
from tigeropen.push.pb.AssetData_pb2 import AssetData
13+
from tigeropen.push.pb.OptionTopData_pb2 import OptionTopData
1214
from tigeropen.push.pb.OrderStatusData_pb2 import OrderStatusData
1315
from tigeropen.push.pb.OrderTransactionData_pb2 import OrderTransactionData
1416
from tigeropen.push.pb.PositionData_pb2 import PositionData
1517
from tigeropen.push.pb.QuoteBBOData_pb2 import QuoteBBOData
1618
from tigeropen.push.pb.QuoteBasicData_pb2 import QuoteBasicData
1719
from tigeropen.push.pb.QuoteDepthData_pb2 import QuoteDepthData
20+
from tigeropen.push.pb.StockTopData_pb2 import StockTopData
1821
from tigeropen.push.pb.TradeTickData_pb2 import TradeTickData
1922
from tigeropen.push.pb.trade_tick import TradeTick
2023
from tigeropen.push.push_client import PushClient
@@ -161,6 +164,11 @@ def on_tick_changed(frame: TradeTick):
161164
"""
162165
print(frame)
163166

167+
def on_stock_top_changed(frame: StockTopData):
168+
print(f'stock top changed: {frame}')
169+
170+
def on_option_top_changed(frame: OptionTopData):
171+
print(f'option top changed: {frame}')
164172

165173
def on_order_changed(frame: OrderStatusData):
166174
"""订单回调
@@ -312,6 +320,12 @@ def disconnect_callback():
312320
# 持仓变动回调
313321
push_client.position_changed = on_position_changed
314322

323+
# 股票榜单回调
324+
push_client.stock_top_changed = on_stock_top_changed
325+
# 期权榜单回调
326+
push_client.option_top_changed = on_option_top_changed
327+
328+
315329
# 订阅成功与否的回调
316330
push_client.subscribe_callback = subscribe_callback
317331
# 退订成功与否的回调
@@ -348,5 +362,10 @@ def disconnect_callback():
348362
# 查询已订阅的 symbol
349363
push_client.query_subscribed_quote()
350364

365+
# 订阅股票榜单数据
366+
push_client.subscribe_stock_top("HK", [StockRankingIndicator.Amount, StockRankingIndicator.ChangeRate])
367+
# 订阅期权榜单数据
368+
push_client.subscribe_option_top("US", [OptionRankingIndicator.Amount])
369+
351370
time.sleep(600)
352371
push_client.disconnect()
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
syntax = "proto3";
2+
3+
package tigeropen.push.pb;
4+
5+
message OptionTopData {
6+
string market = 1;
7+
int64 timestamp = 2;
8+
repeated TopData topData = 3;
9+
10+
message TopData {
11+
string targetName = 1; // bigOrder, volume, amount, openInt
12+
repeated BigOrder bigOrder = 2; // large order(bigOrder)
13+
repeated OptionItem item = 3; // target value top list(volume, amount, openInt)
14+
}
15+
16+
message BigOrder {
17+
string symbol = 1;
18+
string expiry = 2; // formate:yyyyMMdd
19+
string strike = 3; // strike price
20+
string right = 4; // CALL/PUT
21+
string dir = 5; // BUY/SELL
22+
double volume = 6; // target value: volume > 1000
23+
double price = 7; // trade price
24+
double amount = 8; // trade amount
25+
int64 tradeTime = 9;// trade timestamp
26+
}
27+
28+
message OptionItem {
29+
string symbol = 1;
30+
string expiry = 2; // formate:yyyyMMdd
31+
string strike = 3; // strike price
32+
string right = 4; // CALL/PUT
33+
double totalAmount = 5; // total trade amount
34+
double totalVolume = 6; // total trade volume
35+
double totalOpenInt = 7; // open interest
36+
double volumeToOpenInt = 8; // Volume to Open Interest
37+
double latestPrice = 9; // option latest price
38+
int64 updateTime = 10; // uptate timestamp
39+
}
40+
}

tigeropen/push/pb/OptionTopData_pb2.py

Lines changed: 31 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
from google.protobuf.internal import containers as _containers
2+
from google.protobuf import descriptor as _descriptor
3+
from google.protobuf import message as _message
4+
from typing import ClassVar as _ClassVar, Iterable as _Iterable, Mapping as _Mapping, Optional as _Optional, Union as _Union
5+
6+
DESCRIPTOR: _descriptor.FileDescriptor
7+
8+
class OptionTopData(_message.Message):
9+
__slots__ = ["market", "timestamp", "topData"]
10+
class BigOrder(_message.Message):
11+
__slots__ = ["amount", "dir", "expiry", "price", "right", "strike", "symbol", "tradeTime", "volume"]
12+
AMOUNT_FIELD_NUMBER: _ClassVar[int]
13+
DIR_FIELD_NUMBER: _ClassVar[int]
14+
EXPIRY_FIELD_NUMBER: _ClassVar[int]
15+
PRICE_FIELD_NUMBER: _ClassVar[int]
16+
RIGHT_FIELD_NUMBER: _ClassVar[int]
17+
STRIKE_FIELD_NUMBER: _ClassVar[int]
18+
SYMBOL_FIELD_NUMBER: _ClassVar[int]
19+
TRADETIME_FIELD_NUMBER: _ClassVar[int]
20+
VOLUME_FIELD_NUMBER: _ClassVar[int]
21+
amount: float
22+
dir: str
23+
expiry: str
24+
price: float
25+
right: str
26+
strike: str
27+
symbol: str
28+
tradeTime: int
29+
volume: float
30+
def __init__(self, symbol: _Optional[str] = ..., expiry: _Optional[str] = ..., strike: _Optional[str] = ..., right: _Optional[str] = ..., dir: _Optional[str] = ..., volume: _Optional[float] = ..., price: _Optional[float] = ..., amount: _Optional[float] = ..., tradeTime: _Optional[int] = ...) -> None: ...
31+
class OptionItem(_message.Message):
32+
__slots__ = ["expiry", "latestPrice", "right", "strike", "symbol", "totalAmount", "totalOpenInt", "totalVolume", "updateTime", "volumeToOpenInt"]
33+
EXPIRY_FIELD_NUMBER: _ClassVar[int]
34+
LATESTPRICE_FIELD_NUMBER: _ClassVar[int]
35+
RIGHT_FIELD_NUMBER: _ClassVar[int]
36+
STRIKE_FIELD_NUMBER: _ClassVar[int]
37+
SYMBOL_FIELD_NUMBER: _ClassVar[int]
38+
TOTALAMOUNT_FIELD_NUMBER: _ClassVar[int]
39+
TOTALOPENINT_FIELD_NUMBER: _ClassVar[int]
40+
TOTALVOLUME_FIELD_NUMBER: _ClassVar[int]
41+
UPDATETIME_FIELD_NUMBER: _ClassVar[int]
42+
VOLUMETOOPENINT_FIELD_NUMBER: _ClassVar[int]
43+
expiry: str
44+
latestPrice: float
45+
right: str
46+
strike: str
47+
symbol: str
48+
totalAmount: float
49+
totalOpenInt: float
50+
totalVolume: float
51+
updateTime: int
52+
volumeToOpenInt: float
53+
def __init__(self, symbol: _Optional[str] = ..., expiry: _Optional[str] = ..., strike: _Optional[str] = ..., right: _Optional[str] = ..., totalAmount: _Optional[float] = ..., totalVolume: _Optional[float] = ..., totalOpenInt: _Optional[float] = ..., volumeToOpenInt: _Optional[float] = ..., latestPrice: _Optional[float] = ..., updateTime: _Optional[int] = ...) -> None: ...
54+
class TopData(_message.Message):
55+
__slots__ = ["bigOrder", "item", "targetName"]
56+
BIGORDER_FIELD_NUMBER: _ClassVar[int]
57+
ITEM_FIELD_NUMBER: _ClassVar[int]
58+
TARGETNAME_FIELD_NUMBER: _ClassVar[int]
59+
bigOrder: _containers.RepeatedCompositeFieldContainer[OptionTopData.BigOrder]
60+
item: _containers.RepeatedCompositeFieldContainer[OptionTopData.OptionItem]
61+
targetName: str
62+
def __init__(self, targetName: _Optional[str] = ..., bigOrder: _Optional[_Iterable[_Union[OptionTopData.BigOrder, _Mapping]]] = ..., item: _Optional[_Iterable[_Union[OptionTopData.OptionItem, _Mapping]]] = ...) -> None: ...
63+
MARKET_FIELD_NUMBER: _ClassVar[int]
64+
TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
65+
TOPDATA_FIELD_NUMBER: _ClassVar[int]
66+
market: str
67+
timestamp: int
68+
topData: _containers.RepeatedCompositeFieldContainer[OptionTopData.TopData]
69+
def __init__(self, market: _Optional[str] = ..., timestamp: _Optional[int] = ..., topData: _Optional[_Iterable[_Union[OptionTopData.TopData, _Mapping]]] = ...) -> None: ...

tigeropen/push/pb/PushData.proto

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import public "tigeropen/push/pb/QuoteData.proto";
77
import public "tigeropen/push/pb/QuoteDepthData.proto";
88
import public "tigeropen/push/pb/TradeTickData.proto";
99
import public "tigeropen/push/pb/OrderTransactionData.proto";
10+
import public "tigeropen/push/pb/StockTopData.proto";
11+
import public "tigeropen/push/pb/OptionTopData.proto";
1012

1113
package tigeropen.push.pb;
1214

@@ -20,5 +22,7 @@ message PushData {
2022
AssetData assetData = 6;
2123
OrderStatusData orderStatusData = 7;
2224
OrderTransactionData orderTransactionData = 8;
25+
StockTopData stockTopData = 9;
26+
OptionTopData optionTopData = 10;
2327
}
2428
}

tigeropen/push/pb/PushData_pb2.py

Lines changed: 7 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)