77import logging
88import re
99import time
10+ from typing import Optional , Union , List
1011
1112import pandas as pd
12- from typing import Optional , Union , List , Dict , Any , TYPE_CHECKING
1313
1414from tigeropen .common .consts import Market , QuoteRight , BarPeriod , OPEN_API_SERVICE_VERSION_V3 , \
15- OPEN_API_SERVICE_VERSION_V1 , Language , SortDirection , TradingSession , Valuation , \
16- Income , Balance , CashFlow , BalanceSheetRatio , Growth , Leverage , Profitability , \
15+ OPEN_API_SERVICE_VERSION_V1 , Language , SortDirection , TradingSession , Income , Balance , CashFlow , BalanceSheetRatio , \
16+ Growth , Leverage , Profitability , \
1717 FinancialReportPeriodType , CapitalPeriod
18- from tigeropen .common .consts .fundamental_fields import Field
19-
20- if TYPE_CHECKING :
21- from tigeropen .quote .domain .filter import SortFilterData , StockFilter
22- from tigeropen .quote .domain .capital_distribution import CapitalDistribution
23- from tigeropen .quote .domain .scanner_result import ScannerResult
2418from tigeropen .common .consts import THREAD_LOCAL , SecurityType , CorporateActionType , IndustryLevel
2519from tigeropen .common .consts .filter_fields import FieldBelongType
26- from tigeropen .quote . domain . stock_broker import StockBroker
20+ from tigeropen .common . consts . fundamental_fields import Field
2721from tigeropen .common .consts .service_types import GRAB_QUOTE_PERMISSION , QUOTE_DELAY , GET_QUOTE_PERMISSION , \
2822 HISTORY_TIMELINE , FUTURE_CONTRACT_BY_CONTRACT_CODE , STOCK_FUNDAMENTAL , TRADE_RANK , TRADING_CALENDAR , \
2923 FUTURE_CONTRACTS , MARKET_SCANNER , \
5246from tigeropen .fundamental .response .financial_report_response import FinancialReportResponse
5347from tigeropen .fundamental .response .industry_response import IndustryListResponse , IndustryStocksResponse , \
5448 StockIndustryResponse
55- from tigeropen .quote .domain .filter import OptionFilter
49+ from tigeropen .quote .domain .capital_distribution import CapitalDistribution
50+ from tigeropen .quote .domain .filter import SortFilterData , StockFilter , OptionFilter , ScannerResult
5651from tigeropen .quote .domain .market_status import MarketStatus
5752from tigeropen .quote .domain .quote_brief import QuoteBrief
53+ from tigeropen .quote .domain .stock_broker import StockBroker
5854from tigeropen .quote .request .model import MarketParams , MultipleQuoteParams , MultipleContractParams , \
5955 FutureQuoteParams , FutureExchangeParams , FutureContractParams , FutureTradingTimeParams , SingleContractParams , \
6056 SingleOptionQuoteParams , DepthQuoteParams , OptionChainParams , TradingCalendarParams , MarketScannerParams , \
8379from tigeropen .quote .response .option_timeline_response import OptionTimelineResponse
8480from tigeropen .quote .response .quote_bar_response import QuoteBarResponse
8581from tigeropen .quote .response .quote_brief_response import QuoteBriefResponse
82+ from tigeropen .quote .response .quote_dataframe_response import QuoteDataframeResponse
8683from tigeropen .quote .response .quote_delay_briefs_response import DelayBriefsResponse
8784from tigeropen .quote .response .quote_depth_response import DepthQuoteResponse
8885from tigeropen .quote .response .quote_grab_permission_response import QuoteGrabPermissionResponse
86+ from tigeropen .quote .response .quote_overnight_response import QuoteOvernightResponse
8987from tigeropen .quote .response .quote_ticks_response import TradeTickResponse
90- from tigeropen .quote .response .quote_dataframe_response import QuoteDataframeResponse
9188from tigeropen .quote .response .quote_timeline_response import QuoteTimelineResponse
9289from tigeropen .quote .response .stock_briefs_response import StockBriefsResponse
9390from tigeropen .quote .response .stock_broker_response import StockBrokerResponse
10097from tigeropen .quote .response .trading_calendar_response import TradingCalendarResponse
10198from tigeropen .quote .response .warrant_briefs_response import WarrantBriefsResponse
10299from tigeropen .quote .response .warrant_filter_response import WarrantFilterResponse
103- from tigeropen .quote .response .quote_overnight_response import QuoteOvernightResponse
104100from tigeropen .tiger_open_client import TigerOpenClient
105101from tigeropen .tiger_open_config import LANGUAGE
106102
@@ -169,7 +165,7 @@ def get_market_status(
169165 return response .markets
170166 else :
171167 raise ApiException (response .code , response .message )
172- return None
168+ return list ()
173169
174170 def get_symbols (self ,
175171 market : Optional [Union [Market , str ]] = Market .ALL ,
@@ -263,7 +259,7 @@ def get_trade_metas(self, symbols: list[str]) -> pd.DataFrame:
263259 else :
264260 raise ApiException (response .code , response .message )
265261
266- return None
262+ return pd . DataFrame ()
267263
268264 def get_briefs (
269265 self ,
@@ -550,11 +546,11 @@ def get_timeline(self,
550546 raise ApiException (response .code , response .message )
551547
552548 def get_timeline_history (
553- self ,
554- symbols : list [str ],
555- date : str ,
556- right : Optional [Union [QuoteRight ,
557- str ]] = QuoteRight .BR ) -> pd .DataFrame :
549+ self ,
550+ symbols : list [str ],
551+ date : str ,
552+ right : Optional [Union [QuoteRight ,
553+ str ]] = QuoteRight .BR ) -> pd .DataFrame :
558554 """
559555 Get historical timeline data. 获取历史分时数据
560556
@@ -688,9 +684,11 @@ def get_bars_by_page(self,
688684 :param end_time: time of the latest bar, excluded. k线数据的结束时间,不包含
689685 :param total: Total bars number. K线数据的总条数
690686 :param page_size: Bars number of each request. 每次请求的K线数据条数
691- :param right: Quote right. 复权方式. Available values: QuoteRight.BR (前复权), QuoteRight.NR (不复权)
687+ :param right: Quote right. 复权方式. Available values: ` QuoteRight.BR` (前复权), ` QuoteRight.NR` (不复权)
692688 :param time_interval: Time interval between requests. 请求之间的时间间隔
693689 :param lang: 语言
690+ :param trade_session: Trading session, e.g., TradingSession.PreMarket, TradingSession.Regular, TradingSession.AfterHours.
691+ 交易时段,例如 TradingSession.PreMarket(盘前),TradingSession.Regular(盘中),TradingSession.AfterHours(盘后)
694692 :return: pandas.DataFrame with columns:
695693 - symbol: Stock symbol. 股票代码
696694 - time: Timestamp. 毫秒时间戳
@@ -743,7 +741,7 @@ def get_bars_by_page(self,
743741 def get_trade_ticks (self ,
744742 symbols : Union [str , list [str ]],
745743 trade_session : Optional [Union [TradingSession ,
746- str ]] = None ,
744+ str ]] = None ,
747745 begin_index : Optional [int ] = None ,
748746 end_index : Optional [int ] = None ,
749747 limit : Optional [int ] = None ,
@@ -1080,7 +1078,7 @@ def get_option_briefs(self,
10801078 else :
10811079 raise ApiException (response .code , response .message )
10821080
1083- return None
1081+ return pd . DataFrame ()
10841082
10851083 def get_option_bars (self ,
10861084 identifiers : list [str ],
@@ -1222,7 +1220,7 @@ def get_option_trade_ticks(self,
12221220 else :
12231221 raise ApiException (response .code , response .message )
12241222
1225- return None
1223+ return pd . DataFrame ()
12261224
12271225 def get_option_symbols (
12281226 self ,
@@ -1425,7 +1423,7 @@ def get_future_exchanges(
14251423 return response .exchanges
14261424 else :
14271425 raise ApiException (response .code , response .message )
1428- return None
1426+ return pd . DataFrame ()
14291427
14301428 def get_future_contracts (
14311429 self ,
@@ -1480,7 +1478,7 @@ def get_future_contracts(
14801478 return response .contracts
14811479 else :
14821480 raise ApiException (response .code , response .message )
1483- return None
1481+ return pd . DataFrame ()
14841482
14851483 def get_current_future_contract (
14861484 self ,
@@ -1531,7 +1529,7 @@ def get_current_future_contract(
15311529 return response .contracts
15321530 else :
15331531 raise ApiException (response .code , response .message )
1534- return None
1532+ return pd . DataFrame ()
15351533
15361534 def get_all_future_contracts (
15371535 self ,
@@ -1583,7 +1581,7 @@ def get_all_future_contracts(
15831581 return response .contracts
15841582 else :
15851583 raise ApiException (response .code , response .message )
1586- return None
1584+ return pd . DataFrame ()
15871585
15881586 def get_future_contract (
15891587 self ,
@@ -1635,7 +1633,7 @@ def get_future_contract(
16351633 return response .contracts
16361634 else :
16371635 raise ApiException (response .code , response .message )
1638- return None
1636+ return pd . DataFrame ()
16391637
16401638 def get_future_continuous_contracts (
16411639 self ,
@@ -1686,7 +1684,7 @@ def get_future_continuous_contracts(
16861684 return response .contracts
16871685 else :
16881686 raise ApiException (response .code , response .message )
1689- return None
1687+ return pd . DataFrame ()
16901688
16911689 def get_future_trading_times (
16921690 self ,
@@ -1724,7 +1722,7 @@ def get_future_trading_times(
17241722 return response .trading_times
17251723 else :
17261724 raise ApiException (response .code , response .message )
1727- return None
1725+ return pd . DataFrame ()
17281726
17291727 def get_future_bars (self ,
17301728 identifiers : Union [str , list [str ]],
@@ -2023,13 +2021,14 @@ def get_corporate_dividend(self,
20232021 :param begin_date: 起始时间. 若是时间戳需要精确到毫秒, 为13位整数;
20242022 或是日期时间格式的字符串, 如 "2019-01-01" 或 "2019-01-01 12:00:00"
20252023 :param end_date: 截止时间. 格式同 begin_date
2024+ :param timezone: 时区
20262025 :return: pandas.DataFrame, 各 column 的含义如下:
20272026 symbol: 证券代码
20282027 action_type: 固定为 "DIVIDEND"
20292028 amount: 分红金额
20302029 currency: 分红货币类型
20312030 announced_date: 公告日期
2032- excute_date : 除权除息日
2031+ execute_date : 除权除息日
20332032 record_date: 股权登记日
20342033 pay_date: 现金到账日
20352034 market: 所属市场
@@ -2064,6 +2063,7 @@ def get_corporate_earnings_calendar(self,
20642063 :param market:
20652064 :param begin_date: 起始时间
20662065 :param end_date: 截止时间
2066+ :param timezone: 时区
20672067 :return:
20682068 """
20692069 params = CorporateActionParams ()
@@ -2138,7 +2138,8 @@ def get_financial_daily(self,
21382138 def get_financial_report (self ,
21392139 symbols : Union [str , list [str ]],
21402140 market : Union [Market , str ],
2141- fields : list [Union [Income , Balance , CashFlow , BalanceSheetRatio , Growth , Leverage , Profitability , str ]],
2141+ fields : list [Union [
2142+ Income , Balance , CashFlow , BalanceSheetRatio , Growth , Leverage , Profitability , str ]],
21422143 period_type : Union [FinancialReportPeriodType , str ],
21432144 begin_date : Optional [Union [int , str ]] = None ,
21442145 end_date : Optional [Union [int , str ]] = None ,
@@ -2318,8 +2319,8 @@ def get_industry_stocks(self, industry, market=Market.US):
23182319 :param industry: 行业 id
23192320 :param market: 市场枚举类型
23202321 :return: 公司信息列表.
2321- 如 [{'symbol': 'A', 'company_name': 'A', 'market': 'US', 'industry_list': [{...}, {...},..]},
2322- {'symbol': 'B', 'company_name': 'B', 'market': 'US', 'industry_list': [{...}, {...},..]},
2322+ 如 [{'symbol': 'A', 'company_name': 'A', 'market': 'US', 'industry_list': [{...}, {...},... ]},
2323+ {'symbol': 'B', 'company_name': 'B', 'market': 'US', 'industry_list': [{...}, {...},... ]},
23232324 ...]
23242325 """
23252326 params = IndustryParams ()
@@ -2363,12 +2364,11 @@ def get_stock_industry(self, symbol, market=Market.US):
23632364
23642365 def market_scanner (self ,
23652366 market : Optional [Union [Market , str ]] = Market .US ,
2366- filters : Optional [List ['StockFilter' ]] = None ,
2367- sort_field_data : Optional [Union ['SortFilterData' ,
2368- Dict [str , Any ]]] = None ,
2367+ filters : Optional [List [StockFilter ]] = None ,
2368+ sort_field_data : Optional [SortFilterData ] = None ,
23692369 page : Optional [int ] = 0 ,
23702370 page_size : Optional [int ] = 100 ,
2371- cursor_id : Optional [str ] = None ) -> ' ScannerResult' :
2371+ cursor_id : Optional [str ] = None ) -> ScannerResult :
23722372 """
23732373 Screen stocks with filtering conditions and sort options. 按条件筛选和排序股票
23742374
@@ -2377,6 +2377,7 @@ def market_scanner(self,
23772377 :param sort_field_data: Sort field data. 排序字段数据. tigeropen.quote.domain.filter.SortFilterData object
23782378 :param page: Page number, starting from 0. 页码,从0开始
23792379 :param page_size: Number of items per page. 每页记录数
2380+ :param cursor_id: Cursor ID for pagination. 分页的游标ID
23802381 :return: ScannerResult object containing page info, result items and symbols
23812382
23822383 The returned ScannerResult contains these fields:
@@ -2551,7 +2552,7 @@ def get_stock_broker(
25512552 limit : int = 40 ,
25522553 lang : Optional [Union [Language , str ]] = None ) -> StockBroker :
25532554 """
2554- Get stock broker information. 获取股票经纪商信息
2555+ Get stockbroker information. 获取股票经纪商信息
25552556
25562557 :param symbol: Stock symbol. 股票代码
25572558 :param limit: The maximum number of brokers to return at each price level. Default is 40.
@@ -2740,9 +2741,9 @@ def get_capital_flow(self,
27402741 raise ApiException (response .code , response .message )
27412742
27422743 def get_capital_distribution (self ,
2743- symbol : str ,
2744- market : Union [Market , str ],
2745- lang : Optional [Union [Language , str ]] = None ) -> 'CapitalDistribution' :
2744+ symbol : str ,
2745+ market : Union [Market , str ],
2746+ lang : Optional [Union [Language , str ]] = None ) -> 'CapitalDistribution' :
27462747 """
27472748 Get capital distribution data for a stock. 获取股票资金分布数据
27482749
@@ -2818,6 +2819,10 @@ def get_warrant_filter(self,
28182819 sort_dir = None ,
28192820 filter_params = None ):
28202821 """
2822+ :param symbol:
2823+ :param page:
2824+ :param page_size:
2825+ :param sort_field_name:
28212826 :param sort_dir: tigeropen.common.consts.SortDirection, e.g. SortDirection.DESC
28222827 :param filter_params: tigeropen.quote.request.model.WarrantFilterParams
28232828 :return:
0 commit comments