Skip to content

Commit 07163a6

Browse files
committed
Merge branch 'feat_traderank' into 'master'
Feat traderank See merge request server/openapi/openapi-python-sdk!231
2 parents 762b412 + 5cbf152 commit 07163a6

File tree

6 files changed

+53
-2
lines changed

6 files changed

+53
-2
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 3.3.2 (2025-02-25)
2+
### New
3+
- `QuoteClient.get_trade_rank` 热门交易榜
4+
### Mod
5+
- Contract 添加属性 lot_size
6+
17
## 3.3.1 (2024-12-31)
28
### New
39
- `TradeClient.get_funding_history` 出入金历史查询

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.3.1'
7+
__VERSION__ = '3.3.2'

tigeropen/common/consts/service_types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@
7272
WARRANT_REAL_TIME_QUOTE = "warrant_real_time_quote"
7373
KLINE_QUOTA = "kline_quota" # 历史k线额度
7474
STOCK_FUNDAMENTAL = "stock_fundamental"
75+
TRADE_RANK = "trade_rank"
7576

7677
# 期权行情
7778
OPTION_EXPIRATION = "option_expiration"

tigeropen/quote/quote_client.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
from tigeropen.common.consts import THREAD_LOCAL, SecurityType, CorporateActionType, IndustryLevel
1616
from tigeropen.common.consts.filter_fields import FieldBelongType
1717
from tigeropen.common.consts.service_types import GRAB_QUOTE_PERMISSION, QUOTE_DELAY, GET_QUOTE_PERMISSION, \
18-
HISTORY_TIMELINE, FUTURE_CONTRACT_BY_CONTRACT_CODE, STOCK_FUNDAMENTAL, TRADING_CALENDAR, FUTURE_CONTRACTS, MARKET_SCANNER, \
18+
HISTORY_TIMELINE, FUTURE_CONTRACT_BY_CONTRACT_CODE, STOCK_FUNDAMENTAL, TRADE_RANK, TRADING_CALENDAR, FUTURE_CONTRACTS, MARKET_SCANNER, \
1919
STOCK_BROKER, CAPITAL_FLOW, CAPITAL_DISTRIBUTION, WARRANT_REAL_TIME_QUOTE, WARRANT_FILTER, MARKET_SCANNER_TAGS, \
2020
KLINE_QUOTA, FUND_ALL_SYMBOLS, FUND_CONTRACTS, FUND_QUOTE, FUND_HISTORY_QUOTE, FINANCIAL_CURRENCY, \
2121
FINANCIAL_EXCHANGE_RATE, ALL_HK_OPTION_SYMBOLS, OPTION_DEPTH
@@ -79,6 +79,7 @@
7979
from tigeropen.quote.response.stock_trade_meta_response import TradeMetaResponse
8080
from tigeropen.quote.response.symbol_names_response import SymbolNamesResponse
8181
from tigeropen.quote.response.symbols_response import SymbolsResponse
82+
from tigeropen.quote.response.trade_rank_response import TradeRankResponse
8283
from tigeropen.quote.response.trading_calendar_response import TradingCalendarResponse
8384
from tigeropen.quote.response.warrant_briefs_response import WarrantBriefsResponse
8485
from tigeropen.quote.response.warrant_filter_response import WarrantFilterResponse
@@ -1887,4 +1888,18 @@ def get_stock_fundamental(self, symbols, market):
18871888
else:
18881889
raise ApiException(response.code, response.message)
18891890

1891+
def get_trade_rank(self, market, lang=Language.en_US):
1892+
params = MarketParams()
1893+
params.market = get_enum_value(market)
1894+
params.lang = get_enum_value(lang)
1895+
request = OpenApiRequest(TRADE_RANK, biz_model=params)
1896+
response_content = self.__fetch_data(request)
1897+
if response_content:
1898+
response = TradeRankResponse()
1899+
response.parse_response_content(response_content)
1900+
if response.is_success():
1901+
return response.result
1902+
else:
1903+
raise ApiException(response.code, response.message)
1904+
18901905

tigeropen/quote/request/model.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1479,3 +1479,4 @@ def to_openapi_dict(self):
14791479
if self.with_details is not None:
14801480
params['with_details'] = self.with_details
14811481
return params
1482+
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from tigeropen.common.response import TigerResponse
2+
import pandas as pd
3+
from tigeropen.common.util.string_utils import camel_to_underline_obj
4+
5+
class TradeRankResponse(TigerResponse):
6+
def __init__(self):
7+
super(TradeRankResponse, self).__init__()
8+
self.result = pd.DataFrame()
9+
self._is_success = None
10+
11+
def parse_response_content(self, response_content):
12+
response = super(TradeRankResponse, self).parse_response_content(response_content)
13+
if 'is_success' in response:
14+
self._is_success = response['is_success']
15+
16+
if self.data:
17+
df_data = []
18+
for item in self.data:
19+
formated_item = camel_to_underline_obj(item)
20+
hour_trading = formated_item.pop('hour_trading', None)
21+
if hour_trading:
22+
for key, value in hour_trading.items():
23+
formated_item['hour_trading_' + key] = value
24+
df_data.append(formated_item)
25+
26+
self.result = pd.DataFrame(df_data)
27+
28+

0 commit comments

Comments
 (0)