1515from tigeropen .common .consts import THREAD_LOCAL , SecurityType , CorporateActionType , IndustryLevel
1616from tigeropen .common .consts .filter_fields import FieldBelongType
1717from tigeropen .common .consts .service_types import GRAB_QUOTE_PERMISSION , QUOTE_DELAY , GET_QUOTE_PERMISSION , \
18- HISTORY_TIMELINE , FUTURE_CONTRACT_BY_CONTRACT_CODE , TRADING_CALENDAR , FUTURE_CONTRACTS , MARKET_SCANNER
18+ HISTORY_TIMELINE , FUTURE_CONTRACT_BY_CONTRACT_CODE , TRADING_CALENDAR , FUTURE_CONTRACTS , MARKET_SCANNER , \
19+ STOCK_BROKER , CAPITAL_FLOW , CAPITAL_DISTRIBUTION
1920from tigeropen .common .consts .service_types import MARKET_STATE , ALL_SYMBOLS , ALL_SYMBOL_NAMES , BRIEF , \
2021 TIMELINE , KLINE , TRADE_TICK , OPTION_EXPIRATION , OPTION_CHAIN , FUTURE_EXCHANGE , OPTION_BRIEF , \
2122 OPTION_KLINE , OPTION_TRADE_TICK , FUTURE_KLINE , FUTURE_TICK , FUTURE_CONTRACT_BY_EXCHANGE_CODE , \
3839from tigeropen .quote .domain .filter import OptionFilter
3940from tigeropen .quote .request .model import MarketParams , MultipleQuoteParams , MultipleContractParams , \
4041 FutureQuoteParams , FutureExchangeParams , FutureContractParams , FutureTradingTimeParams , SingleContractParams , \
41- SingleOptionQuoteParams , DepthQuoteParams , OptionChainParams , TradingCalendarParams , MarketScannerParams
42+ SingleOptionQuoteParams , DepthQuoteParams , OptionChainParams , TradingCalendarParams , MarketScannerParams , \
43+ StockBrokerParams , CapitalParams
44+ from tigeropen .quote .response .capital_distribution_response import CapitalDistributionResponse
45+ from tigeropen .quote .response .capital_flow_response import CapitalFlowResponse
4246from tigeropen .quote .response .future_briefs_response import FutureBriefsResponse
4347from tigeropen .quote .response .future_contract_response import FutureContractResponse
4448from tigeropen .quote .response .future_exchange_response import FutureExchangeResponse
6165from tigeropen .quote .response .quote_timeline_response import QuoteTimelineResponse
6266from tigeropen .quote .response .market_scanner_response import MarketScannerResponse
6367from tigeropen .quote .response .stock_briefs_response import StockBriefsResponse
68+ from tigeropen .quote .response .stock_broker_response import StockBrokerResponse
6469from tigeropen .quote .response .stock_details_response import StockDetailsResponse
6570from tigeropen .quote .response .stock_short_interest_response import ShortInterestResponse
6671from tigeropen .quote .response .stock_trade_meta_response import TradeMetaResponse
@@ -1409,7 +1414,6 @@ def grab_quote_permission(self):
14091414 return response .permissions
14101415 else :
14111416 raise ApiException (response .code , response .message )
1412- return False
14131417
14141418 def get_quote_permission (self ):
14151419 """
@@ -1429,7 +1433,6 @@ def get_quote_permission(self):
14291433 return response .permissions
14301434 else :
14311435 raise ApiException (response .code , response .message )
1432- return False
14331436
14341437 def get_trading_calendar (self , market , begin_date = None , end_date = None ):
14351438 """
@@ -1453,4 +1456,91 @@ def get_trading_calendar(self, market, begin_date=None, end_date=None):
14531456 return response .calendar
14541457 else :
14551458 raise ApiException (response .code , response .message )
1456- return False
1459+
1460+ def get_stock_broker (self , symbol , limit = 40 , lang = None ):
1461+ """Get stock broker information
1462+ :param symbol:
1463+ :param limit: The maximum number of items returned. Default value is 40.
1464+ :param lang: tigeropen.common.consts.Language
1465+ return: tigeropen.quote.domain.stock_broker.StockBroker
1466+ example:
1467+ StockBroker({'symbol': '01810',
1468+ 'bid_broker': [
1469+ LevelBroker({'level': 1, 'price': 11.46, 'broker_count': 5,
1470+ 'broker': [Broker({'id': '5999', 'name': '中国创盈'}), Broker({'id': '4374', 'name': '巴克莱亚洲'}),
1471+ Broker({'id': '1438', 'name': 'Susquehanna'}), Broker({'id': '4821', 'name': '华盛'}),
1472+ Broker({'id': '6998', 'name': '中国投资'})]})],
1473+ 'ask_broker': [
1474+ LevelBroker({'level': 1, 'price': 11.48, 'broker_count': 5,
1475+ 'broker': [Broker({'id': '4374', 'name': '巴克莱亚洲'}), Broker({'id': '9056', 'name': '瑞银'}),
1476+ Broker({'id': '2027', 'name': '东亚'}), Broker({'id': '4821', 'name': '华盛'}),
1477+ Broker({'id': '4374', 'name': '巴克莱亚洲'})]})]})
1478+ """
1479+ params = StockBrokerParams ()
1480+ params .symbol = symbol
1481+ params .limit = limit
1482+ params .lang = get_enum_value (lang ) if lang else get_enum_value (self ._lang )
1483+ request = OpenApiRequest (STOCK_BROKER , biz_model = params )
1484+ response_content = self .__fetch_data (request )
1485+ if response_content :
1486+ response = StockBrokerResponse ()
1487+ response .parse_response_content (response_content )
1488+ if response .is_success ():
1489+ return response .result
1490+ else :
1491+ raise ApiException (response .code , response .message )
1492+
1493+ def get_capital_flow (self , symbol , market , period , begin_time = - 1 , end_time = - 1 , limit = 200 , lang = None ):
1494+ """Get capital net inflow Data, including different time periods, such as daily, weekly, monthly, etc.
1495+ :param symbol: 股票代号
1496+ :param market: tigeropen.common.consts.Market
1497+ :param period: period, possible values are: intraday, day, week, month, year, quarter, 6month
1498+ :param begin_time: 开始时间. 若是时间戳需要精确到毫秒, 为13位整数;
1499+ 或是日期时间格式的字符串, 如 "2019-01-01" 或 "2019-01-01 12:00:00"
1500+ :param end_time: 结束时间. 格式同 begin_time
1501+ :param limit: 数量限制
1502+ :param lang: 语言支持: zh_CN,zh_TW,en_US
1503+ :return pandas.DataFrame, example:
1504+ time timestamp net_inflow symbol period
1505+ 0 2022-02-24 1645678800000 -5.889058e+08 AAPL day
1506+ 1 2022-02-25 1645765200000 -1.229127e+08 AAPL day
1507+ 2 2022-02-28 1646024400000 1.763644e+08 AAPL day
1508+ """
1509+ params = CapitalParams ()
1510+ params .symbol = symbol
1511+ params .market = get_enum_value (market )
1512+ params .period = get_enum_value (period )
1513+ params .begin_time = begin_time
1514+ params .end_time = end_time
1515+ params .limit = limit
1516+ params .lang = get_enum_value (lang ) if lang else get_enum_value (self ._lang )
1517+ request = OpenApiRequest (CAPITAL_FLOW , biz_model = params )
1518+ response_content = self .__fetch_data (request )
1519+ if response_content :
1520+ response = CapitalFlowResponse ()
1521+ response .parse_response_content (response_content )
1522+ if response .is_success ():
1523+ return response .result
1524+ else :
1525+ raise ApiException (response .code , response .message )
1526+
1527+ def get_capital_distribution (self , symbol , market , lang = None ):
1528+ """Get capital distribution.
1529+ :param symbol: 股票代号
1530+ :param market: tigeropen.common.consts.Market
1531+ :param lang: 语言支持: zh_CN,zh_TW,en_US
1532+ return: tigeropen.quote.domain.capital_distribution.CapitalDistribution
1533+ """
1534+ params = CapitalParams ()
1535+ params .symbol = symbol
1536+ params .market = get_enum_value (market )
1537+ params .lang = get_enum_value (lang ) if lang else get_enum_value (self ._lang )
1538+ request = OpenApiRequest (CAPITAL_DISTRIBUTION , biz_model = params )
1539+ response_content = self .__fetch_data (request )
1540+ if response_content :
1541+ response = CapitalDistributionResponse ()
1542+ response .parse_response_content (response_content )
1543+ if response .is_success ():
1544+ return response .result
1545+ else :
1546+ raise ApiException (response .code , response .message )
0 commit comments