Skip to content

Commit 7c54763

Browse files
committed
Merge branch 'dev' into 'master'
Dev See merge request server/openapi/openapi-python-sdk!117
2 parents 96f7e84 + 2af1b0d commit 7c54763

File tree

6 files changed

+97
-3
lines changed

6 files changed

+97
-3
lines changed

tigeropen/common/consts/service_types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
QUOTE_DEPTH = "quote_depth" # level2 深度行情
5151
GRAB_QUOTE_PERMISSION = "grab_quote_permission" # 抢占行情
5252
GET_QUOTE_PERMISSION = "get_quote_permission"
53+
TRADING_CALENDAR = "trading_calendar"
5354

5455
# 期权行情
5556
OPTION_EXPIRATION = "option_expiration"

tigeropen/examples/quote_client_demo.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,10 @@ def get_quote():
6262
delay_brief = openapi_client.get_stock_delay_briefs(['AAPL', 'GOOG'])
6363
print(delay_brief)
6464

65+
# 获取市场交易日历
66+
calendar = openapi_client.get_trading_calendar(Market.US, begin_date='2022-07-01', end_date='2022-09-02')
67+
print(calendar)
68+
6569

6670
def test_gat_bars_by_page():
6771
bars = openapi_client.get_bars_by_page(['AAPL'], period=BarPeriod.DAY,

tigeropen/quote/quote_client.py

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from tigeropen.common.consts import Market, Language, QuoteRight, BarPeriod, OPEN_API_SERVICE_VERSION_V3
1515
from tigeropen.common.consts import THREAD_LOCAL, SecurityType, CorporateActionType, IndustryLevel
1616
from tigeropen.common.consts.service_types import GRAB_QUOTE_PERMISSION, QUOTE_DELAY, GET_QUOTE_PERMISSION, \
17-
HISTORY_TIMELINE, FUTURE_CONTRACT_BY_CONTRACT_CODE
17+
HISTORY_TIMELINE, FUTURE_CONTRACT_BY_CONTRACT_CODE, TRADING_CALENDAR
1818
from tigeropen.common.consts.service_types import MARKET_STATE, ALL_SYMBOLS, ALL_SYMBOL_NAMES, BRIEF, \
1919
TIMELINE, KLINE, TRADE_TICK, OPTION_EXPIRATION, OPTION_CHAIN, FUTURE_EXCHANGE, OPTION_BRIEF, \
2020
OPTION_KLINE, OPTION_TRADE_TICK, FUTURE_KLINE, FUTURE_TICK, FUTURE_CONTRACT_BY_EXCHANGE_CODE, \
@@ -37,7 +37,7 @@
3737
from tigeropen.quote.domain.filter import OptionFilter
3838
from tigeropen.quote.request.model import MarketParams, MultipleQuoteParams, MultipleContractParams, \
3939
FutureQuoteParams, FutureExchangeParams, FutureContractParams, FutureTradingTimeParams, SingleContractParams, \
40-
SingleOptionQuoteParams, DepthQuoteParams, OptionChainParams
40+
SingleOptionQuoteParams, DepthQuoteParams, OptionChainParams, TradingCalendarParams
4141
from tigeropen.quote.response.future_briefs_response import FutureBriefsResponse
4242
from tigeropen.quote.response.future_contract_response import FutureContractResponse
4343
from tigeropen.quote.response.future_exchange_response import FutureExchangeResponse
@@ -64,6 +64,7 @@
6464
from tigeropen.quote.response.stock_trade_meta_response import TradeMetaResponse
6565
from tigeropen.quote.response.symbol_names_response import SymbolNamesResponse
6666
from tigeropen.quote.response.symbols_response import SymbolsResponse
67+
from tigeropen.quote.response.trading_calendar_response import TradingCalendarResponse
6768
from tigeropen.tiger_open_client import TigerOpenClient
6869

6970

@@ -1342,3 +1343,26 @@ def get_quote_permission(self):
13421343
else:
13431344
raise ApiException(response.code, response.message)
13441345
return False
1346+
1347+
def get_trading_calendar(self, market, begin_date=None, end_date=None):
1348+
"""
1349+
get trading calendar
1350+
:param market: common.consts.Market, like Market.US
1351+
:param begin_date:
1352+
:param end_date:
1353+
:return:
1354+
"""
1355+
params = TradingCalendarParams()
1356+
params.market = get_enum_value(market)
1357+
params.begin_date = begin_date
1358+
params.end_date = end_date
1359+
request = OpenApiRequest(TRADING_CALENDAR, biz_model=params)
1360+
response_content = self.__fetch_data(request)
1361+
if response_content:
1362+
response = TradingCalendarResponse()
1363+
response.parse_response_content(response_content)
1364+
if response.is_success():
1365+
return response.calendar
1366+
else:
1367+
raise ApiException(response.code, response.message)
1368+
return False

tigeropen/quote/request/model.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -801,3 +801,48 @@ def to_openapi_dict(self):
801801
if self.option_filter:
802802
params['option_filter'] = self.option_filter.to_dict()
803803
return params
804+
805+
806+
class TradingCalendarParams(BaseParams):
807+
def __init__(self):
808+
super().__init__()
809+
self._market = None
810+
self._begin_date = None
811+
self._end_date = None
812+
813+
@property
814+
def market(self):
815+
return self._market
816+
817+
@market.setter
818+
def market(self, value):
819+
self._market = value
820+
821+
@property
822+
def begin_date(self):
823+
return self._begin_date
824+
825+
@begin_date.setter
826+
def begin_date(self, value):
827+
self._begin_date = value
828+
829+
@property
830+
def end_date(self):
831+
return self._end_date
832+
833+
@end_date.setter
834+
def end_date(self, value):
835+
self._end_date = value
836+
837+
def to_openapi_dict(self):
838+
params = dict()
839+
if self.market:
840+
params['market'] = self.market
841+
842+
if self.begin_date:
843+
params['begin_date'] = self.begin_date
844+
845+
if self.end_date:
846+
params['end_date'] = self.end_date
847+
848+
return params

tigeropen/quote/response/quote_grab_permission_response.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
#
33
# @Date : 2021-04-16
44
# @Author : sukai
5-
import json
65
from tigeropen.common.response import TigerResponse
76
from tigeropen.common.util import string_utils
87

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# -*- coding: utf-8 -*-
2+
#
3+
# @Date : 2021-04-16
4+
# @Author : sukai
5+
from tigeropen.common.response import TigerResponse
6+
from tigeropen.common.util import string_utils
7+
8+
9+
class TradingCalendarResponse(TigerResponse):
10+
def __init__(self):
11+
super(TradingCalendarResponse, self).__init__()
12+
self.calendar = None
13+
self._is_success = None
14+
15+
def parse_response_content(self, response_content):
16+
response = super(TradingCalendarResponse, self).parse_response_content(response_content)
17+
if 'is_success' in response:
18+
self._is_success = response['is_success']
19+
20+
if self.data:
21+
self.calendar = string_utils.camel_to_underline_obj(self.data)

0 commit comments

Comments
 (0)