Skip to content

Commit 13e231b

Browse files
committed
Merge branch 'feature_delay_brief' into 'dev'
Feature delay brief See merge request server/openapi/openapi-python-sdk!82
2 parents 883f9a0 + 3116c91 commit 13e231b

File tree

5 files changed

+145
-1
lines changed

5 files changed

+145
-1
lines changed

CHANGELOG.md

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
## 2.0.3
2+
### New
3+
- 期权链查询接口支持过滤 QuoteClient.get_option_chain
4+
- 新增延迟行情接口 QuoteClient.get_stock_delay_briefs
5+
6+
## 2.0.2 (2021-11-01)
7+
### Changed
8+
- 移除 client_config 中不常用的属性
9+
- 长链接订阅优化
10+
11+
## 2.0.1 (2021-09-18)
12+
### Breaking
13+
- 移除 python2 的兼容
14+
15+
## 1.4.0 (2021-06-28)
16+
### New
17+
- 新增深度行情查询及订阅
18+
- 新增行情权限抢占接口
19+
20+
## 1.2.0 (2020-04-02)
21+
### New
22+
- 新增行业接口
23+
24+
## 1.1.10 (2020-01-19)
25+
### New
26+
- 新增公司行动日历数据
27+
- 新增附加订单(仅环球账户)
28+
29+
## 1.1.9 (2019-10-28)
30+
### Fixed
31+
- 修复 1.1.8 的安装问题
32+
33+
## 1.1.8 (2019-10-27)
34+
### New
35+
- 持仓、订单相关接口中增加identifier,做为相关标的的唯一识别符。
36+
- 期权增增加 underlying asset 的历史波动率
37+
38+
## 1.1.7 (2019-08-02)
39+
### New
40+
- 期货行情的推送价格默认处理为小数
41+
- 订单与持仓推送中增加 symbol 字段(请注意标准账户与环球账户的差异)
42+
- 账户资产(asset)推送中新增 segment ,表示推送的账户类型。
43+
- 股票合约中增加保证金交易相关数据
44+
- example 中增加了一个示例策略
45+
- 新增一个生成 client_config 的方法
46+
47+
48+
## 1.1.6 (2019-07-12)
49+
### New
50+
- 支持按照 account 订阅持仓、订单、资产信息
51+
52+
## 1.1.5 (2019-06-27)
53+
### New
54+
- get_contracts 支持批量获取合约
55+
- PushClient 中的行情支持按照成交与报价分类订阅
56+
- PushClient 修复盘前成交推送的bug
57+
- PushClient 中的时间戳改为按需推送,不再需要单独订阅
58+
- 重新梳理了get_assets接口,股票与期货交易使用更加清晰
59+
### Documentation
60+
- SDK 中补全了文档,方便在IDE中快速查看
61+
62+
63+
## 1.1.4 (2019-06-06)
64+
### New
65+
- 创建订单不再需要联网请求合约数据和申请订单号, 减少为 place_order 一个请求
66+
- 获取订单列表,订单列表支持一次查询股票和期货订单
67+
- 行情订阅的 focus_key 订阅逻辑修复, 支持订阅指定字段的推送
68+
- get_order 支持按照 id 查询订单
69+
- get_trade_ticks 返回多只股票
70+
- 新增公司行动数据 API, 含分红以及拆合股数据
71+
- 添加基本面 API,含日级别的估值数据以及财报级别的三大报表及衍生因子
72+
- 增加已成交、待撤销和已撤销的订单列表
73+
- push_client 中新增加分钟分时的推送
74+
- push_client 中的订单状态改为 OrderStatus 对象
75+
- push_client 中增加心跳,减少链接断开的可能
76+
- 期货增加 3min、45min 等周期行情的查询, 修复期货 1min 周期的查询
77+
### Fixed
78+
- 修复 get_orders 的 sec_type 无效的问题

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/examples/quote_client_demo.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ def get_quote():
5151
stock_details = openapi_client.get_stock_details(['AAPL', '03690'])
5252
print(stock_details)
5353

54+
# 获取延迟行情
55+
delay_brief = openapi_client.get_stock_delay_briefs(['AAPL', 'GOOG'])
56+
print(delay_brief)
57+
5458

5559
def get_option_quote():
5660
symbol = 'AAPL'

tigeropen/quote/quote_client.py

Lines changed: 34 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, OPEN_API_SERVICE_VERSION_V3
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, \
@@ -50,6 +50,7 @@
5050
from tigeropen.quote.response.option_quote_ticks_response import OptionTradeTickResponse
5151
from tigeropen.quote.response.quote_bar_response import QuoteBarResponse
5252
from tigeropen.quote.response.quote_brief_response import QuoteBriefResponse
53+
from tigeropen.quote.response.quote_delay_briefs_response import DelayBriefsResponse
5354
from tigeropen.quote.response.quote_depth_response import DepthQuoteResponse
5455
from tigeropen.quote.response.quote_grab_permission_response import QuoteGrabPermissionResponse
5556
from tigeropen.quote.response.quote_ticks_response import TradeTickResponse
@@ -247,6 +248,38 @@ def get_stock_briefs(self, symbols, lang=None):
247248

248249
return None
249250

251+
def get_stock_delay_briefs(self, symbols, lang=None):
252+
"""
253+
query delay quote
254+
:param symbols: stock symbol list, like ['AAPL', 'GOOG']
255+
:param lang: language: tigeropen.common.consts.Language: zh_CN,zh_TW,en_US
256+
:return: pandas.DataFrame. the columns are as follows:
257+
symbol:
258+
pre_close:
259+
time: last quote change time
260+
volume:
261+
open:
262+
high:
263+
low:
264+
close:
265+
halted: stock status(0: normal 3: suspended 4: delist 7: ipo 8: changed)
266+
"""
267+
params = MultipleQuoteParams()
268+
params.symbols = symbols
269+
params.lang = lang.value if lang else self._lang.value
270+
271+
request = OpenApiRequest(QUOTE_DELAY, biz_model=params)
272+
response_content = self.__fetch_data(request)
273+
if response_content:
274+
response = DelayBriefsResponse()
275+
response.parse_response_content(response_content)
276+
if response.is_success():
277+
return response.briefs
278+
else:
279+
raise ApiException(response.code, response.message)
280+
281+
return None
282+
250283
def get_stock_details(self, symbols, lang=None):
251284
"""
252285
获取股票详情
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
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+
from tigeropen.common.util import string_utils
13+
14+
15+
class DelayBriefsResponse(TigerResponse):
16+
def __init__(self):
17+
super(DelayBriefsResponse, self).__init__()
18+
self.briefs = None
19+
self._is_success = None
20+
21+
def parse_response_content(self, response_content):
22+
response = super(DelayBriefsResponse, self).parse_response_content(response_content)
23+
if 'is_success' in response:
24+
self._is_success = response['is_success']
25+
if self.data and isinstance(self.data, list):
26+
df = pd.DataFrame(self.data)
27+
field_mapping = {item: string_utils.camel_to_underline(item) for item in df.columns}
28+
self.briefs = df.rename(columns=field_mapping)

0 commit comments

Comments
 (0)