|
12 | 12 |
|
13 | 13 | from tigeropen.common.consts import Market, Language, QuoteRight, BarPeriod, OPEN_API_SERVICE_VERSION_V3 |
14 | 14 | from tigeropen.common.consts import THREAD_LOCAL, SecurityType, CorporateActionType, IndustryLevel |
15 | | -from tigeropen.common.consts.service_types import GRAB_QUOTE_PERMISSION |
| 15 | +from tigeropen.common.consts.service_types import GRAB_QUOTE_PERMISSION, STOCK_SCREENER |
16 | 16 | from tigeropen.common.consts.service_types import MARKET_STATE, ALL_SYMBOLS, ALL_SYMBOL_NAMES, BRIEF, \ |
17 | 17 | TIMELINE, KLINE, TRADE_TICK, OPTION_EXPIRATION, OPTION_CHAIN, FUTURE_EXCHANGE, OPTION_BRIEF, \ |
18 | 18 | OPTION_KLINE, OPTION_TRADE_TICK, FUTURE_KLINE, FUTURE_TICK, FUTURE_CONTRACT_BY_EXCHANGE_CODE, \ |
|
35 | 35 | from tigeropen.quote.request import OpenApiRequest |
36 | 36 | from tigeropen.quote.request.model import MarketParams, MultipleQuoteParams, MultipleContractParams, \ |
37 | 37 | FutureQuoteParams, FutureExchangeParams, FutureTypeParams, FutureTradingTimeParams, SingleContractParams, \ |
38 | | - SingleOptionQuoteParams, DepthQuoteParams, OptionChainParams |
| 38 | + SingleOptionQuoteParams, DepthQuoteParams, OptionChainParams, StockScreenerParams |
39 | 39 | from tigeropen.quote.response.future_briefs_response import FutureBriefsResponse |
40 | 40 | from tigeropen.quote.response.future_contract_response import FutureContractResponse |
41 | 41 | from tigeropen.quote.response.future_exchange_response import FutureExchangeResponse |
|
54 | 54 | from tigeropen.quote.response.quote_grab_permission_response import QuoteGrabPermissionResponse |
55 | 55 | from tigeropen.quote.response.quote_ticks_response import TradeTickResponse |
56 | 56 | from tigeropen.quote.response.quote_timeline_response import QuoteTimelineResponse |
| 57 | +from tigeropen.quote.response.screened_stocks_response import ScreenedStocksResponse |
57 | 58 | from tigeropen.quote.response.stock_briefs_response import StockBriefsResponse |
58 | 59 | from tigeropen.quote.response.stock_details_response import StockDetailsResponse |
59 | 60 | from tigeropen.quote.response.stock_short_interest_response import ShortInterestResponse |
@@ -1139,6 +1140,31 @@ def get_stock_industry(self, symbol, market=Market.US): |
1139 | 1140 | else: |
1140 | 1141 | raise ApiException(response.code, response.message) |
1141 | 1142 |
|
| 1143 | + def get_screened_stocks(self, market=Market.US, stock_filters=None, page=None, limit=None): |
| 1144 | + """ |
| 1145 | + screen stocks |
| 1146 | + :param market: tigeropen.common.consts.Market |
| 1147 | + :param stock_filters: tigeropen.quote.domain.filter.StockFilter or list of StockFilter |
| 1148 | + :param page: page begin number |
| 1149 | + :param limit: page size limit |
| 1150 | + :return: |
| 1151 | + """ |
| 1152 | + params = StockScreenerParams() |
| 1153 | + params.market = market.value |
| 1154 | + if stock_filters is not None: |
| 1155 | + params.stock_filters = stock_filters if isinstance(stock_filters, list) else [stock_filters] |
| 1156 | + params.page = page |
| 1157 | + params.limit = limit |
| 1158 | + request = OpenApiRequest(STOCK_SCREENER, biz_model=params) |
| 1159 | + response_content = self.__fetch_data(request) |
| 1160 | + if response_content: |
| 1161 | + response = ScreenedStocksResponse() |
| 1162 | + response.parse_response_content(response_content) |
| 1163 | + if response.is_success(): |
| 1164 | + return response.stocks |
| 1165 | + else: |
| 1166 | + raise ApiException(response.code, response.message) |
| 1167 | + |
1142 | 1168 | def grab_quote_permission(self): |
1143 | 1169 | """ |
1144 | 1170 | 抢占行情权限 |
|
0 commit comments