Skip to content

Commit 1de8cc0

Browse files
committed
option api timezone param
1 parent fedb8e0 commit 1de8cc0

File tree

1 file changed

+27
-13
lines changed

1 file changed

+27
-13
lines changed

tigeropen/quote/quote_client.py

Lines changed: 27 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -667,13 +667,16 @@ def get_option_expirations(self, symbols, market=None):
667667

668668
return None
669669

670-
def get_option_chain(self, symbol, expiry, option_filter=None, return_greek_value=None, market=None, **kwargs):
670+
def get_option_chain(self, symbol, expiry, option_filter=None, return_greek_value=None, market=None, timezone=None,
671+
**kwargs):
671672
"""
672673
query option chain with filter
673674
:param symbol: underlying stock symbol
674675
:param expiry: expiration date ( like '2021-06-18' or 1560484800000 )
675676
:param option_filter: option filter conditions, tigeropen.quote.domain.filter.OptionFilter
676677
:param return_greek_value: return greek value or not, bool
678+
:param market:
679+
:param timezone: Default US/Eastern, when querying non-U.S. stock options, you need to specify the time zone
677680
:param kwargs: optional. specify option_filter parameters directly without option_filer,
678681
like: open_interest_min=100, delta_min=0.1
679682
:return: pandas.DataFrame,the columns are as follows:
@@ -696,7 +699,7 @@ def get_option_chain(self, symbol, expiry, option_filter=None, return_greek_valu
696699
param = SingleContractParams()
697700
param.symbol = symbol
698701
if isinstance(expiry, str) and re.match('[0-9]{4}-[0-9]{2}-[0-9]{2}', expiry):
699-
param.expiry = date_str_to_timestamp(expiry, self._timezone)
702+
param.expiry = date_str_to_timestamp(expiry, self._parse_timezone(market, timezone))
700703
else:
701704
param.expiry = expiry
702705
params.contracts = [param]
@@ -721,7 +724,7 @@ def get_option_chain(self, symbol, expiry, option_filter=None, return_greek_valu
721724

722725
return None
723726

724-
def get_option_briefs(self, identifiers, market = None):
727+
def get_option_briefs(self, identifiers, market = None, timezone=None):
725728
"""
726729
获取期权最新行情
727730
:param identifiers: 期权代码列表
@@ -755,7 +758,7 @@ def get_option_briefs(self, identifiers, market = None):
755758
continue
756759
param = SingleContractParams()
757760
param.symbol = symbol
758-
param.expiry = date_str_to_timestamp(expiry, self._timezone)
761+
param.expiry = date_str_to_timestamp(expiry, self._parse_timezone(market, timezone))
759762
param.put_call = put_call
760763
param.strike = strike
761764
contracts.append(param)
@@ -776,7 +779,7 @@ def get_option_briefs(self, identifiers, market = None):
776779
return None
777780

778781
def get_option_bars(self, identifiers, begin_time=-1, end_time=4070880000000, period=BarPeriod.DAY, limit=None,
779-
sort_dir=None, market=None):
782+
sort_dir=None, market=None, timezone=None):
780783
"""
781784
获取期权日K数据
782785
:param identifiers: 期权代码列表
@@ -807,12 +810,12 @@ def get_option_bars(self, identifiers, begin_time=-1, end_time=4070880000000, pe
807810
continue
808811
param = SingleOptionQuoteParams()
809812
param.symbol = symbol
810-
param.expiry = date_str_to_timestamp(expiry, self._timezone)
813+
param.expiry = date_str_to_timestamp(expiry, self._parse_timezone(market, timezone))
811814
param.put_call = put_call
812815
param.strike = strike
813816
param.period = get_enum_value(period)
814-
param.begin_time = date_str_to_timestamp(begin_time, self._timezone)
815-
param.end_time = date_str_to_timestamp(end_time, self._timezone)
817+
param.begin_time = date_str_to_timestamp(begin_time, self._parse_timezone(market, timezone))
818+
param.end_time = date_str_to_timestamp(end_time, self._parse_timezone(market, timezone))
816819
param.limit = limit
817820
param.sort_dir = get_enum_value(sort_dir)
818821
contracts.append(param)
@@ -829,7 +832,7 @@ def get_option_bars(self, identifiers, begin_time=-1, end_time=4070880000000, pe
829832
else:
830833
raise ApiException(response.code, response.message)
831834

832-
def get_option_trade_ticks(self, identifiers):
835+
def get_option_trade_ticks(self, identifiers, timezone=None):
833836
"""
834837
获取期权逐笔成交
835838
:param identifiers: 期权代码列表
@@ -850,7 +853,7 @@ def get_option_trade_ticks(self, identifiers):
850853
continue
851854
param = SingleContractParams()
852855
param.symbol = symbol
853-
param.expiry = date_str_to_timestamp(expiry, timezone=self._timezone)
856+
param.expiry = date_str_to_timestamp(expiry, self._parse_timezone(None, timezone))
854857
param.put_call = put_call
855858
param.strike = strike
856859
contracts.append(param)
@@ -888,7 +891,7 @@ def get_option_symbols(self, market: Market = Market.HK, lang: Language = Langua
888891
else:
889892
raise ApiException(response.code, response.message)
890893

891-
def get_option_depth(self, identifiers, market: Market = Market.US):
894+
def get_option_depth(self, identifiers, market: Market = Market.US, timezone=None):
892895
"""
893896
获取期权深度
894897
:param market:
@@ -904,7 +907,7 @@ def get_option_depth(self, identifiers, market: Market = Market.US):
904907
continue
905908
param = SingleContractParams()
906909
param.symbol = symbol
907-
param.expiry = date_str_to_timestamp(expiry, timezone=self._timezone)
910+
param.expiry = date_str_to_timestamp(expiry, self._parse_timezone(market, timezone))
908911
param.put_call = put_call
909912
param.strike = strike
910913
contracts.append(param)
@@ -1942,4 +1945,15 @@ def get_quote_overnight(self, symbols, lang=Language.en_US):
19421945
else:
19431946
raise ApiException(response.code, response.message)
19441947

1945-
1948+
1949+
def _parse_timezone(self, market = None, timezone=None):
1950+
if timezone:
1951+
return timezone
1952+
if market:
1953+
if Market.HK.name == get_enum_value(market):
1954+
return 'Asia/Hong_Kong'
1955+
if Market.US.name == get_enum_value(market):
1956+
return 'US/Eastern'
1957+
if Market.CN.name == get_enum_value(market):
1958+
return 'Asia/Shanghai'
1959+
return self._timezone

0 commit comments

Comments
 (0)