Skip to content

Commit db34a96

Browse files
committed
delay quote api
1 parent 3549899 commit db34a96

File tree

3 files changed

+64
-1
lines changed

3 files changed

+64
-1
lines changed

tigeropen/common/consts/service_types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
KLINE = "kline"
4141
TRADE_TICK = "trade_tick"
4242
QUOTE_REAL_TIME = "quote_real_time"
43+
QUOTE_DELAY = "quote_delay"
4344
QUOTE_SHORTABLE_STOCKS = "quote_shortable_stocks"
4445
QUOTE_STOCK_TRADE = "quote_stock_trade"
4546
QUOTE_DEPTH = "quote_depth" # level2 深度行情

tigeropen/quote/quote_client.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
from tigeropen.common.consts import Market, Language, QuoteRight, BarPeriod
1414
from tigeropen.common.consts import THREAD_LOCAL, SecurityType, CorporateActionType, IndustryLevel
15-
from tigeropen.common.consts.service_types import GRAB_QUOTE_PERMISSION
15+
from tigeropen.common.consts.service_types import GRAB_QUOTE_PERMISSION, QUOTE_DELAY
1616
from tigeropen.common.consts.service_types import MARKET_STATE, ALL_SYMBOLS, ALL_SYMBOL_NAMES, BRIEF, \
1717
TIMELINE, KLINE, TRADE_TICK, OPTION_EXPIRATION, OPTION_CHAIN, FUTURE_EXCHANGE, OPTION_BRIEF, \
1818
OPTION_KLINE, OPTION_TRADE_TICK, FUTURE_KLINE, FUTURE_TICK, FUTURE_CONTRACT_BY_EXCHANGE_CODE, \
@@ -49,6 +49,7 @@
4949
from tigeropen.quote.response.option_quote_ticks_response import OptionTradeTickResponse
5050
from tigeropen.quote.response.quote_bar_response import QuoteBarResponse
5151
from tigeropen.quote.response.quote_brief_response import QuoteBriefResponse
52+
from tigeropen.quote.response.quote_delay_briefs_response import DelayBriefsResponse
5253
from tigeropen.quote.response.quote_depth_response import DepthQuoteResponse
5354
from tigeropen.quote.response.quote_grab_permission_response import QuoteGrabPermissionResponse
5455
from tigeropen.quote.response.quote_ticks_response import TradeTickResponse
@@ -246,6 +247,36 @@ def get_stock_briefs(self, symbols, lang=None):
246247

247248
return None
248249

250+
def get_delay_briefs(self, symbols, lang=None):
251+
"""
252+
获取股票延迟行情
253+
:param symbols: 标的代号列表
254+
:param lang: 语言支持: tigeropen.common.consts.Language: zh_CN,zh_TW,en_US
255+
:return: pandas.DataFrame. 各 column 含义如下:
256+
symbol: 证券代码
257+
pre_close: 前收价
258+
time: 时间
259+
volume: 成交量
260+
open: 开盘价
261+
high: 最高价
262+
low: 最低价
263+
"""
264+
params = MultipleQuoteParams()
265+
params.symbols = symbols
266+
params.lang = lang.value if lang else self._lang.value
267+
268+
request = OpenApiRequest(QUOTE_DELAY, biz_model=params)
269+
response_content = self.__fetch_data(request)
270+
if response_content:
271+
response = DelayBriefsResponse()
272+
response.parse_response_content(response_content)
273+
if response.is_success():
274+
return response.briefs
275+
else:
276+
raise ApiException(response.code, response.message)
277+
278+
return None
279+
249280
def get_stock_details(self, symbols, lang=None):
250281
"""
251282
获取股票详情
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# -*- coding: utf-8 -*-
2+
"""
3+
Created on 2021/11/11
4+
5+
@author: sukai
6+
"""
7+
8+
import pandas as pd
9+
10+
from tigeropen.common.response import TigerResponse
11+
12+
COLUMNS = ['symbol', 'ask_price', 'ask_size', 'bid_price', 'bid_size', 'pre_close', 'latest_price', 'latest_time',
13+
'volume', 'open', 'high', 'low', 'status']
14+
BRIEF_FIELD_MAPPINGS = {'askPrice': 'ask_price', 'askSize': 'ask_size', 'bidPrice': 'bid_price', 'bidSize': 'bid_size',
15+
'latestPrice': 'latest_price', 'preClose': 'pre_close', 'latestTime': 'latest_time',
16+
'avgPrice': 'avg_price', 'adjPreClose': 'adj_pre_close'}
17+
18+
19+
class DelayBriefsResponse(TigerResponse):
20+
def __init__(self):
21+
super(DelayBriefsResponse, self).__init__()
22+
self.briefs = None
23+
self._is_success = None
24+
25+
def parse_response_content(self, response_content):
26+
response = super(DelayBriefsResponse, self).parse_response_content(response_content)
27+
if 'is_success' in response:
28+
self._is_success = response['is_success']
29+
30+
if self.data and isinstance(self.data, list):
31+
self.briefs = pd.DataFrame(self.data).rename(columns=BRIEF_FIELD_MAPPINGS)

0 commit comments

Comments
 (0)