88import re
99import time
1010
11- import delorean
1211import pandas as pd
1312
14- from tigeropen .common .consts import Market , Language , QuoteRight , BarPeriod , OPEN_API_SERVICE_VERSION_V3
13+ from tigeropen .common .consts import Market , QuoteRight , BarPeriod , OPEN_API_SERVICE_VERSION_V3
1514from tigeropen .common .consts import THREAD_LOCAL , SecurityType , CorporateActionType , IndustryLevel
1615from tigeropen .common .consts .service_types import GRAB_QUOTE_PERMISSION , QUOTE_DELAY , GET_QUOTE_PERMISSION , \
1716 HISTORY_TIMELINE , FUTURE_CONTRACT_BY_CONTRACT_CODE , TRADING_CALENDAR
2322 QUOTE_DEPTH , INDUSTRY_LIST , INDUSTRY_STOCKS , STOCK_INDUSTRY , STOCK_DETAIL
2423from tigeropen .common .exceptions import ApiException
2524from tigeropen .common .request import OpenApiRequest
26- from tigeropen .common .util .common_utils import eastern , get_enum_value
25+ from tigeropen .common .util .common_utils import eastern , get_enum_value , date_str_to_timestamp
2726from tigeropen .common .util .contract_utils import extract_option_info
2827from tigeropen .fundamental .request .model import FinancialDailyParams , FinancialReportParams , CorporateActionParams , \
2928 IndustryParams
@@ -75,10 +74,12 @@ def __init__(self, client_config, logger=None, is_grab_permission=True):
7574 if not logger :
7675 logger = logging .getLogger ('tiger_openapi' )
7776 super (QuoteClient , self ).__init__ (client_config , logger = logger )
77+ self ._lang = LANGUAGE
78+ self ._timezone = eastern
7879 if client_config :
7980 self ._lang = client_config .language
80- else :
81- self ._lang = LANGUAGE
81+ if client_config . timezone :
82+ self ._timezone = client_config . timezone
8283 self .permissions = None
8384 if is_grab_permission and self .permissions is None :
8485 self .permissions = self .grab_quote_permission ()
@@ -646,7 +647,7 @@ def get_option_chain(self, symbol, expiry, option_filter=None, **kwargs):
646647 param = SingleContractParams ()
647648 param .symbol = symbol
648649 if isinstance (expiry , str ) and re .match ('[0-9]{4}-[0-9]{2}-[0-9]{2}' , expiry ):
649- param .expiry = int ( delorean . parse ( expiry , timezone = eastern , dayfirst = False ). datetime . timestamp () * 1000 )
650+ param .expiry = date_str_to_timestamp ( expiry , self . _timezone )
650651 else :
651652 param .expiry = expiry
652653 params .contracts = [param ]
@@ -699,7 +700,7 @@ def get_option_briefs(self, identifiers):
699700 continue
700701 param = SingleContractParams ()
701702 param .symbol = symbol
702- param .expiry = int ( delorean . parse ( expiry , timezone = eastern , dayfirst = False ). datetime . timestamp () * 1000 )
703+ param .expiry = date_str_to_timestamp ( expiry , self . _timezone )
703704 param .put_call = put_call
704705 param .strike = strike
705706 contracts .append (param )
@@ -743,12 +744,12 @@ def get_option_bars(self, identifiers, begin_time=-1, end_time=4070880000000):
743744 continue
744745 param = SingleOptionQuoteParams ()
745746 param .symbol = symbol
746- param .expiry = int ( delorean . parse ( expiry , timezone = eastern , dayfirst = False ). datetime . timestamp () * 1000 )
747+ param .expiry = date_str_to_timestamp ( expiry , self . _timezone )
747748 param .put_call = put_call
748749 param .strike = strike
749750 param .period = BarPeriod .DAY .value
750- param .begin_time = begin_time
751- param .end_time = end_time
751+ param .begin_time = date_str_to_timestamp ( begin_time , self . _timezone )
752+ param .end_time = date_str_to_timestamp ( end_time , self . _timezone )
752753 contracts .append (param )
753754 params .contracts = contracts
754755 request = OpenApiRequest (OPTION_KLINE , biz_model = params )
@@ -782,7 +783,7 @@ def get_option_trade_ticks(self, identifiers):
782783 continue
783784 param = SingleContractParams ()
784785 param .symbol = symbol
785- param .expiry = int ( delorean . parse ( expiry , timezone = eastern , dayfirst = False ). datetime . timestamp () * 1000 )
786+ param .expiry = date_str_to_timestamp ( expiry , timezone = self . _timezone )
786787 param .put_call = put_call
787788 param .strike = strike
788789 contracts .append (param )
@@ -965,7 +966,7 @@ def get_future_bars(self, identifiers, period=BarPeriod.DAY, begin_time=-1, end_
965966 params = FutureQuoteParams ()
966967 params .contract_codes = identifiers if isinstance (identifiers , list ) else [identifiers ]
967968 params .period = get_enum_value (period )
968- params .begin_time = begin_time
969+ params .begin_time = date_str_to_timestamp ( begin_time , self . _timezone )
969970 params .end_time = end_time
970971 params .limit = limit
971972 params .page_token = page_token if len (params .contract_codes ) == 1 else None
@@ -1099,8 +1100,8 @@ def get_corporate_split(self, symbols, market, begin_date, end_date):
10991100 params .action_type = CorporateActionType .SPLIT .value
11001101 params .symbols = symbols
11011102 params .market = get_enum_value (market )
1102- params .begin_date = begin_date
1103- params .end_date = end_date
1103+ params .begin_date = date_str_to_timestamp ( begin_date , self . _timezone )
1104+ params .end_date = date_str_to_timestamp ( end_date , self . _timezone )
11041105 params .lang = get_enum_value (self ._lang )
11051106 request = OpenApiRequest (CORPORATE_ACTION , biz_model = params )
11061107 response_content = self .__fetch_data (request )
@@ -1136,8 +1137,8 @@ def get_corporate_dividend(self, symbols, market, begin_date, end_date):
11361137 params .action_type = CorporateActionType .DIVIDEND .value
11371138 params .symbols = symbols
11381139 params .market = get_enum_value (market )
1139- params .begin_date = begin_date
1140- params .end_date = end_date
1140+ params .begin_date = date_str_to_timestamp ( begin_date , self . _timezone )
1141+ params .end_date = date_str_to_timestamp ( end_date , self . _timezone )
11411142 params .lang = get_enum_value (self ._lang )
11421143 request = OpenApiRequest (CORPORATE_ACTION , biz_model = params )
11431144 response_content = self .__fetch_data (request )
@@ -1160,8 +1161,8 @@ def get_corporate_earnings_calendar(self, market, begin_date, end_date):
11601161 params = CorporateActionParams ()
11611162 params .action_type = CorporateActionType .EARNINGS_CALENDAR .value
11621163 params .market = get_enum_value (market )
1163- params .begin_date = begin_date
1164- params .end_date = end_date
1164+ params .begin_date = date_str_to_timestamp ( begin_date , self . _timezone )
1165+ params .end_date = date_str_to_timestamp ( end_date , self . _timezone )
11651166 params .lang = get_enum_value (self ._lang )
11661167 request = OpenApiRequest (CORPORATE_ACTION , biz_model = params )
11671168 response_content = self .__fetch_data (request )
@@ -1191,8 +1192,8 @@ def get_financial_daily(self, symbols, market, fields, begin_date, end_date):
11911192 params .symbols = symbols
11921193 params .market = get_enum_value (market )
11931194 params .fields = [get_enum_value (field ) for field in fields ]
1194- params .begin_date = begin_date
1195- params .end_date = end_date
1195+ params .begin_date = date_str_to_timestamp ( begin_date , self . _timezone )
1196+ params .end_date = date_str_to_timestamp ( end_date , self . _timezone )
11961197 params .lang = get_enum_value (self ._lang )
11971198 request = OpenApiRequest (FINANCIAL_DAILY , biz_model = params )
11981199 response_content = self .__fetch_data (request )
0 commit comments