# 銘柄スクリーニング 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
  • Output
合計 1, 今回 154047868453564 [{'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

APIレート制限

  • 30秒以内に銘柄スクリーニング API を最大10回までリクエスト可能です