@@ -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