# 銘柄スクリーニング V2
get_stock_screen(request)
説明
条件付き銘柄スクリーニング V2。旧 API get_stock_filter と比較して、指標カバレッジがより広く(11 種類で計 244+ 個の指標)、数値はすべて原始値で渡します(OpenD が自動的に倍率変換)。単一フィールドまたは複数フィールドのソートに対応し、取得属性を明示的に宣言します。結果は
value_typeに応じてsval/ival/aval/dvalに振り分けられます。パラメータ
パラメータ タイプ 説明 request StockScreenRequest 条件付きスクリーニングリクエストオブジェクト。builder 方式で構築 StockScreenRequest フィールド:
フィールド タイプ 説明 page_from int ページング開始位置 page_count int 1 ページあたりの最大返却件数 フィルタ条件 builder メソッド(呼び出すごとにフィルタ条件を 1 件追加。すべての数値フィールドは原始値を直接渡し、OpenD が自動的に倍率変換):
メソッド 説明 add_simple_field(field, values) 市場 / 取引所 / 指数 / お気に入り銘柄などの列挙フィールドフィルタ add_plate(plate_ids, parent_plate_id=None) プレートフィルタ add_simple_property(name, lower=None, upper=None) シンプル相場属性区間フィルタ add_cumulative_property(name, days=1, lower=None, upper=None) 累積相場属性 add_financial_property(name, term=None, year=None, lower=None, upper=None, ...) 財務属性 add_indicator_positional(first_indicator_name, period_type, position, second_indicator=None, ...) テクニカル指標の位置関係 add_indicator_pattern(name, period_type, ...) テクニカル指標形態(ゴールデンクロス、デッドクロス、ダイバージェンスなど) add_featured_property(name, intervals=None, value_set=None, period=None, range_period=None, first_custom_param=None) 特色指標(チップ、ヒート、アナリスト評価、資金フローなど) add_broker_holdings(name, days=None, param=None, intervals=None) ブローカー保有比率指標 add_kline_shape(name, period=None, value_set=None) ローソク足形態(ダブルボトム、ヘッドアンドショルダーなど) add_option(name, intervals=None, param=None, period=None) オプション指標(原株 IV、HV など) 取得属性 builder メソッド(返す属性を宣言;宣言しないと stock_id のみ返す):
メソッド 説明 add_retrieve_basic(name) コード / 名称 / 業界 add_retrieve_simple(name) シンプル相場属性 add_retrieve_cumulative(name, days=1, period_average=None) 累積属性 add_retrieve_financial(name, term=None, year=None, ...) 財務属性 add_retrieve_indicator(name, period=None, indicator_params=None) テクニカル指標 add_retrieve_featured(name, period=None, range_period=None, first_custom_param=None) 特色属性 add_retrieve_broker(name, days=None, param=None) ブローカー add_retrieve_option(name, param=None, period=None) オプション属性 add_retrieve_kline_shape(name, period=None) ローソク足形態 ソート builder メソッド:
メソッド 説明 set_sort(direction, property_type, property_params) 単一フィールドソート add_sort(direction, property_type, property_params) 複数フィールドソート
戻り値
パラメータ タイプ 説明 ret RET_CODE API 呼び出し結果 data tuple ret == RET_OK のとき、(last_page, all_count, items) を返す str ret != RET_OK のとき、エラー記述を返す 戻り値 tuple フィールド:
フィールド タイプ 説明 last_page bool 最終ページか否か all_count int 条件を満たす総件数 items list[dict] 現ページの結果リスト、要素構造は {'stock_id': int, 'results': [result, ...]}単一 result の構造:
フィールド タイプ 説明 type str 属性タイプ property dict 対応する property 記述(name / days / term などを含む) value_type int 値タイプ sval str 文字列値(value_type=1 のとき存在) ival int 整数値(value_type=2 のとき存在) aval list[int] 整数配列値(value_type=3 のとき存在) dval float 浮動小数点値(value_type=4 のとき存在) enum_type_name str ival が列挙コードの場合、対応する列挙型名(例:'KlineShapeType') enum_name str ival が列挙コードの場合、OpenD/SDK がデコードした列挙名(例:'DOUBLE_BOTTOMS'、'NONE') end_time int 決算終了タイムスタンプ
Example
from moomoo import OpenQuoteContext, RET_OK, StockScreenRequest
from moomoo.quote.stock_screen_const import (
ScrMarket, ScrSortDir, SimpleField, SimpleProperty,
CumulativeProperty, FinancialProperty, Term,
Indicator, Period, Position, Pattern,
BasicProperty, KlineShapeProperty, KlineShapeType,
)
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
# 例 1:香港株の大型株 + MACD ゴールデンクロス
req = StockScreenRequest()
req.add_simple_field(field=SimpleField.MARKET, values=[ScrMarket.HK])
req.add_simple_property(name=SimpleProperty.PRICE, lower=10.0) # 最新値 ≥ 10
req.add_simple_property(name=SimpleProperty.MARKET_CAP, lower=10_000_000_000.0) # 時価総額 ≥ 100 億
req.add_simple_property(name=SimpleProperty.PE_TTM, lower=10.0, upper=50.0) # PER(TTM) 10~50
req.add_indicator_pattern(name=Pattern.MACD_GOLD_CROSS, period_type=Period.DAY) # MACD ゴールデンクロス
# 取得フィールド
req.add_retrieve_basic(name=BasicProperty.CODE)
req.add_retrieve_basic(name=BasicProperty.NAME)
req.add_retrieve_simple(name=SimpleProperty.PRICE)
req.add_retrieve_simple(name=SimpleProperty.MARKET_CAP)
req.add_retrieve_simple(name=SimpleProperty.PE_TTM)
# ソート
req.set_sort(direction=ScrSortDir.DESC, property_type='simple',
property_params={'name': int(SimpleProperty.MARKET_CAP)})
req.page_count = 50
ret, data = quote_ctx.get_stock_screen(req)
if ret == RET_OK:
last_page, all_count, items = data
print(f"総件数 {all_count}, 現在の返却 {len(items)} 件")
for it in items[:3]:
print(it['stock_id'], it['results'])
else:
print('error: ', data)
# 例 2:財務指標 + 累積変化率
req = StockScreenRequest()
req.add_simple_field(field=SimpleField.MARKET, values=[ScrMarket.HK])
req.add_cumulative_property(name=CumulativeProperty.PRICE_CHANGE_PCT,
days=5, lower=-0.05, upper=0.05) # 5 日変化率 -5%~5%(小数で渡す)
req.add_financial_property(name=FinancialProperty.NET_PROFIT,
term=Term.ANNUAL, lower=0.0) # 年次決算純利益 > 0
req.add_retrieve_basic(name=BasicProperty.CODE)
req.add_retrieve_simple(name=SimpleProperty.PRICE)
req.page_count = 200
ret, data = quote_ctx.get_stock_screen(req)
# 例 3:K 線パターン(W ボトム + ヘッドアンドショルダーボトム)
req = StockScreenRequest()
req.add_simple_field(field=SimpleField.MARKET, values=[ScrMarket.HK])
req.add_kline_shape(name=KlineShapeProperty.SHAPE_TYPE, period=Period.DAY,
value_set=[KlineShapeType.DOUBLE_BOTTOMS,
KlineShapeType.HEAD_SHOULDERS_BOTTOM])
req.add_retrieve_basic(name=BasicProperty.CODE)
req.add_retrieve_kline_shape(name=KlineShapeProperty.SHAPE_TYPE, period=Period.DAY)
ret, data = quote_ctx.get_stock_screen(req)
quote_ctx.close()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
- Output
合計 1, 今回 1 件
54047868453564 [{'type': 'basic', 'property': {'name': 1101}, 'value_type': 1, 'sval': '00700'},
{'type': 'basic', 'property': {'name': 1102}, 'value_type': 1, 'sval': 'テンセント・ホールディングス'},
{'type': 'simple', 'property': {'name': 2201}, 'value_type': 4, 'dval': 460.0},
{'type': 'simple', 'property': {'name': 2301}, 'value_type': 4, 'dval': 4194280264040.0},
{'type': 'simple', 'property': {'name': 2303}, 'value_type': 4, 'dval': 15.75126}]
1
2
3
4
5
6
2
3
4
5
6
APIレート制限
- 30秒以内に銘柄スクリーニング API を最大10回までリクエスト可能です