# 条件スクリーニング
- Python
- Proto
- C#
- Java
- C++
- JavaScript
get_stock_filter(market, filter_list, plate_code=None, begin=0, num=200)
概要
条件スクリーニング
パラメータ
パラメータ 型 説明 market Market 市場識別子 上海株と深セン株は区別されません。いずれを入力しても上海・深セン市場の株式が返されますfilter_list list フィルタ条件のリスト 下記の表を参照。リスト内の要素タイプは SimpleFilter または AccumulateFilter または FinancialFilterplate_code str セクターコード begin int データ起始点 num int リクエストデータ個数 SimpleFilter オブジェクトの関連パラメータは以下の通りです:
フィールド タイプ 説明 stock_field StockField シンプル属性 filter_min float 範囲下限 閉区間
未指定の場合、デフォルトは -∞filter_max float 範囲上限 閉区間
未指定の場合、デフォルトは +∞is_no_filter bool このフィールドでフィルタが不要かどうか True:フィルタしない
False:フィルタする
未指定の場合はデフォルトでフィルタしないsort SortDir ソート方向 未指定の場合、デフォルトはソートなしAccumulateFilter オブジェクトの関連パラメータは以下の通りです:
フィールド タイプ 説明 stock_field StockField 累積属性 filter_min float 範囲下限 閉区間
未指定の場合、デフォルトは -∞filter_max float 範囲上限 閉区間
未指定の場合、デフォルトは +∞is_no_filter bool このフィールドでフィルタが不要かどうか True:フィルタしない
False:フィルタする
未指定の場合はデフォルトでフィルタしないsort SortDir ソート方向 未指定の場合、デフォルトはソートなしdays int フィルタ対象データの累計日数 FinancialFilter オブジェクトの関連パラメータは以下の通りです:
フィールド タイプ 説明 stock_field StockField 財務属性 filter_min float 範囲下限 閉区間
未指定の場合、デフォルトは -∞filter_max float 範囲上限 閉区間
未指定の場合、デフォルトは +∞is_no_filter bool このフィールドでフィルタが不要かどうか True:フィルタしない
False:フィルタする
未指定の場合はデフォルトでフィルタしないsort SortDir ソート方向 未指定の場合、デフォルトはソートなしquarter FinancialQuarter 決算累积時間 CustomIndicatorFilter オブジェクトの関連パラメータは以下の通りです:
フィールド タイプ 説明 stock_field1 StockField カスタムテクニカル指標属性 stock_field1_para list カスタムテクニカル指標属性パラメータ 指標タイプに応じてパラメータを指定:
1. MA:[移動平均周期]
2.EMA:[指数移動平均周期]
3.RSI:[RSI 指標周期]
4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値]
5.BOLL:[移動平均線周期, 偏差値]
6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]relative_position RelativePosition 相対位置 stock_field2 StockField カスタムテクニカル指標属性 stock_field2_para list カスタムテクニカル指標属性パラメータ 指標タイプに応じてパラメータを指定:
1. MA:[移動平均周期]
2.EMA:[指数移動平均周期]
3.RSI:[RSI 指標周期]
4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値]
5.BOLL:[移動平均線周期, 偏差値]
6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]value float カスタム数値 stock_field2 で StockField のカスタム数値を選択した場合、value は必須パラメータですktype KLType ローソク足タイプ KLType K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみサポートconsecutive_period int 連続周期(consecutive_period)すべてが条件を満たすデータをフィルタ 入力範囲は [1,12]is_no_filter bool このフィールドでフィルタが不要かどうか True:フィルタしない
False:フィルタする
未指定の場合はデフォルトでフィルタしないPatternFilter オブジェクトの関連パラメータは以下の通りです:
フィールド タイプ 説明 stock_field StockField パターンテクニカル指標属性 ktype KLType ローソク足タイプ KLType(K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみサポート) consecutive_period int 連続周期(consecutive_period)すべてが条件を満たすデータをフィルタ 入力範囲は [1,12]is_no_filter bool このフィールドでフィルタが不要かどうか True:フィルタしない
False:フィルタする
未指定の場合はデフォルトでフィルタしない
戻り値
パラメータ 型 説明 ret RET_CODE API呼び出し結果 data tuple ret == RET_OK の場合、選股データ str ret != RET_OK の場合、エラーの説明を返す スクリーニングデータのタプル構成は以下の通りです:
フィールド タイプ 説明 last_page bool かどうか最后一页 all_count int リスト総数量 stock_list list 選股データ list 内の要素の型は FilterStockDataFilterStockData タイプのフィールドフォーマット:
フィールド タイプ 説明 stock_code str 銘柄コード stock_name str 株式名字 cur_price float 最新価格 cur_price_to_highest_52weeks_ratio float (現在値 - 52週高値)/ 52週高値 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますcur_price_to_lowest_52weeks_ratio float (現在値 - 52週安値)/ 52週安値 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますhigh_price_to_highest_52weeks_ratio float (本日高値 - 52週高値)/ 52週高値 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますlow_price_to_lowest_52weeks_ratio float (本日安値 - 52週安値)/ 52週安値 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますvolume_ratio float 出来高比率 bid_ask_ratio float 委託比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますlot_price float 每手価格 market_val float 市值 pe_annual float PER pe_ttm float PER TTM pb_rate float PBR change_rate_5min float 5分間騰落率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますchange_rate_begin_year float 年初来騰落率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますps_ttm float PSR TTM このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますpcf_ttm float 株価キャッシュフロー倍率 TTM このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますtotal_share float 総股数 単位:股float_share float 流通股数 単位:股float_market_val float 流通時価総額 単位:元change_rate float 騰落率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますamplitude float 振幅 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますvolume float 日均出来高 turnover float 日均売買代金 turnover_rate float 売買回転率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますnet_profit float 純利益 net_profix_growth float 純利益成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますsum_of_business float 营业收入 sum_of_business_growth float 売上高前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますnet_profit_rate float 純利益率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますgross_profit_rate float 売上総利益率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますdebt_asset_rate float 負債比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますreturn_on_equity_rate float 自己資本利益率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますroic float 投下資本利益率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますroa_ttm float 総資産利益率 TTM このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します。年次報告のみ適用ebit_ttm float EBIT TTM 単位:元。年次報告のみ適用ebitda float 税息折旧及摊销前利润 単位:元operating_margin_ttm float 営業利益率 TTM このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します。年次報告のみ適用ebit_margin float EBIT マージン このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますebitda_margin float EBITDA マージン このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますfinancial_cost_rate float 財務費用率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますoperating_profit_ttm float 営業利益 TTM 単位:元。年次報告のみ適用shareholder_net_profit_ttm float 親会社に帰属する純利益 単位:元。年次報告のみ適用net_profit_cash_cover_ttm float 利益に占める現金収入割合 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します。年次報告のみ適用current_ratio float 流動比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますquick_ratio float 当座比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますcurrent_asset_ratio float 流動資産比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますcurrent_debt_ratio float 流動負債比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますequity_multiplier float 權益乘数 property_ratio float 持分比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますcash_and_cash_equivalents float 现金和现金等価 単位:元total_asset_turnover float 総資産回転率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますfixed_asset_turnover float 固定資産回転率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますinventory_turnover float 棚卸資産回転率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますoperating_cash_flow_ttm float 営業キャッシュフロー TTM 単位:元。年次報告のみ適用accounts_receivable float 売掛金淨额 単位:元ebit_growth_rate float EBIT 前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますoperating_profit_growth_rate float 営業利益前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますtotal_assets_growth_rate float 総資産前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますprofit_to_shareholders_growth_rate float 親会社帰属純利益前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますprofit_before_tax_growth_rate float 税引前利益前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますeps_growth_rate float EPS 前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますroe_growth_rate float ROE 前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますroic_growth_rate float ROIC 前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますnocf_growth_rate float 営業キャッシュフロー前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますnocf_per_share_growth_rate float 1株あたり営業キャッシュフロー前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますoperating_revenue_cash_cover float 営業キャッシュ収入比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますoperating_profit_to_total_profit float 営業利益構成比 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますbasic_eps float 基本每股收益 単位:元diluted_eps float 希薄化後EPS 単位:元nocf_per_share float 1株当たり営業キャッシュフロー 単位:元price float 最新価格 ma float 単純移動平均線 MA パラメータに基づく具体的な数値を返しますma5 float 5日単純移動平均線 ma10 float 10日単純移動平均線 ma20 float 20日単純移動平均線 ma30 float 30日単純移動平均線 ma60 float 60日単純移動平均線 ma120 float 120日単純移動平均線 ma250 float 250日単純移動平均線 rsi float RSI 値 RSI パラメータに基づく具体的な数値を返します。RSI デフォルトパラメータは 12ema float 指数移動平均線 EMA パラメータに基づく具体的な数値を返しますema5 float 5日指数移動移動平均線 ema10 float 10日指数移動移動平均線 ema20 float 20日指数移動移動平均線 ema30 float 30日指数移動移動平均線 ema60 float 60日指数移動移動平均線 ema120 float 120日指数移動移動平均線 ema250 float 250日指数移動移動平均線 kdj_k float KDJ 指標の K 値 KDJ パラメータに基づく具体的な数値を返します。KDJ デフォルトパラメータは [9,3,3]kdj_d float KDJ 指標の D 値 KDJ パラメータに基づく具体的な数値を返します。KDJ デフォルトパラメータは [9,3,3]kdj_j float KDJ 指標の J 値 KDJ パラメータに基づく具体的な数値を返します。KDJ デフォルトパラメータは [9,3,3]macd_diff float MACD 指標の DIFF 値 MACD パラメータに基づく具体的な数値を返します。MACD デフォルトパラメータは [12,26,9]macd_dea float MACD 指標の DEA 値 MACD パラメータに基づく具体的な数値を返します。MACD デフォルトパラメータは [12,26,9]macd float MACD 指標の MACD 値 MACD パラメータに基づく具体的な数値を返します。MACD デフォルトパラメータは [12,26,9]boll_upper float BOLL 指標の UPPER 値 BOLL パラメータに基づく具体的な数値を返します。BOLL デフォルトパラメータは [20,2]boll_middler float BOLL 指標の MIDDLER 値 BOLL パラメータに基づく具体的な数値を返します。BOLL デフォルトパラメータは [20,2]boll_lower float BOLL 指標の LOWER 値 BOLL パラメータに基づく具体的な数値を返します。BOLL デフォルトパラメータは [20,2]
Example
from futu import *
import time
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
simple_filter = SimpleFilter()
simple_filter.filter_min = 2
simple_filter.filter_max = 1000
simple_filter.stock_field = StockField.CUR_PRICE
simple_filter.is_no_filter = False
# simple_filter.sort = SortDir.ASCEND
financial_filter = FinancialFilter()
financial_filter.filter_min = 0.5
financial_filter.filter_max = 50
financial_filter.stock_field = StockField.CURRENT_RATIO
financial_filter.is_no_filter = False
financial_filter.sort = SortDir.ASCEND
financial_filter.quarter = FinancialQuarter.ANNUAL
custom_filter = CustomIndicatorFilter()
custom_filter.ktype = KLType.K_DAY
custom_filter.stock_field1 = StockField.KDJ_K
custom_filter.stock_field1_para = [10,4,4]
custom_filter.stock_field2 = StockField.KDJ_K
custom_filter.stock_field2_para = [9,3,3]
custom_filter.relative_position = RelativePosition.MORE
custom_filter.is_no_filter = False
nBegin = 0
last_page = False
ret_list = list()
while not last_page:
nBegin += len(ret_list)
ret, ls = quote_ctx.get_stock_filter(market=Market.HK, filter_list=[simple_filter, financial_filter, custom_filter], begin=nBegin) # 香港市場の株式に対して簡易、財務、指標フィルタを実行
if ret == RET_OK:
last_page, all_count, ret_list = ls
print('all count = ', all_count)
for item in ret_list:
print(item.stock_code) # 取銘柄コード
print(item.stock_name) # 取銘柄名
print(item[simple_filter]) # simple_filter に対応する変数値を取得
print(item[financial_filter]) # financial_filter に対応する変数値を取得
print(item[custom_filter]) # custom_filter の数値を取得
else:
print('error: ', ls)
time.sleep(3) # 加入時間间隔,避免触発限频
quote_ctx.close() # 使用後は接続をクローズしてください。接続数の枯渇を防止します。
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
- Output
39 39 [ stock_code:HK.08103 stock_name:HMVOD视频 cur_price:2.69 current_ratio(annual):4.413 , stock_code:HK.00376 stock_name:云锋金融 cur_price:2.96 current_ratio(annual):12.585 , stock_code:HK.09995 stock_name:荣昌生物-B cur_price:92.65 current_ratio(annual):16.054 , stock_code:HK.80737 stock_name:湾区発展-R cur_price:2.8 current_ratio(annual):17.249 , stock_code:HK.00737 stock_name:湾区発展 cur_price:3.25 current_ratio(annual):17.249 , stock_code:HK.03939 stock_name:万国国际矿业 cur_price:2.22 current_ratio(annual):17.323 , stock_code:HK.01055 stock_name:中国南方航空股份 cur_price:5.17 current_ratio(annual):17.529 , stock_code:HK.02638 stock_name:港灯-SS cur_price:7.68 current_ratio(annual):21.255 , stock_code:HK.00670 stock_name:中国东方航空股份 cur_price:3.53 current_ratio(annual):25.194 , stock_code:HK.01952 stock_name:云顶新耀-B cur_price:69.5 current_ratio(annual):26.029 , stock_code:HK.00089 stock_name:大生地产 cur_price:4.22 current_ratio(annual):26.914 , stock_code:HK.00728 stock_name:中国电信 cur_price:2.81 current_ratio(annual):27.651 , stock_code:HK.01372 stock_name:比速科技 cur_price:5.1 current_ratio(annual):28.303 , stock_code:HK.00753 stock_name:中国国航 cur_price:6.38 current_ratio(annual):31.828 , stock_code:HK.01997 stock_name:九龙仓置业 cur_price:43.75 current_ratio(annual):33.239 , stock_code:HK.02158 stock_name:医渡科技 cur_price:39.0 current_ratio(annual):34.046 , stock_code:HK.02588 stock_name:中银航空租赁 cur_price:77.0 current_ratio(annual):34.531 , stock_code:HK.01330 stock_name:绿色動力环保 cur_price:3.36 current_ratio(annual):35.028 , stock_code:HK.01525 stock_name:建桥教育 cur_price:6.28 current_ratio(annual):36.989 , stock_code:HK.09908 stock_name:嘉兴燃气 cur_price:10.02 current_ratio(annual):37.848 , stock_code:HK.06078 stock_name:海吉亚医疗 cur_price:49.8 current_ratio(annual):39.0 , stock_code:HK.01071 stock_name:华电国际电力股份 cur_price:2.16 current_ratio(annual):39.507 , stock_code:HK.00357 stock_name:美兰空港 cur_price:34.15 current_ratio(annual):39.514 , stock_code:HK.00762 stock_name:中国联通 cur_price:5.15 current_ratio(annual):40.74 , stock_code:HK.01787 stock_name:山东黄金 cur_price:15.56 current_ratio(annual):41.604 , stock_code:HK.00902 stock_name:华能国际电力股份 cur_price:2.66 current_ratio(annual):42.919 , stock_code:HK.00934 stock_name:中石化冠德 cur_price:2.96 current_ratio(annual):43.361 , stock_code:HK.01117 stock_name:现代牧业 cur_price:2.3 current_ratio(annual):45.037 , stock_code:HK.00177 stock_name:江苏宁沪高速公路 cur_price:8.78 current_ratio(annual):45.93 , stock_code:HK.01379 stock_name:温岭工量刃具 cur_price:5.71 current_ratio(annual):46.774 , stock_code:HK.01876 stock_name:百威亚太 cur_price:22.5 current_ratio(annual):46.917 , stock_code:HK.01907 stock_name:中国旭阳集团 cur_price:4.38 current_ratio(annual):47.129 , stock_code:HK.02160 stock_name:心通医疗-B cur_price:15.54 current_ratio(annual):47.384 , stock_code:HK.00293 stock_name:国泰航空 cur_price:7.1 current_ratio(annual):47.983 , stock_code:HK.00694 stock_name:北京首都机场股份 cur_price:6.34 current_ratio(annual):47.985 , stock_code:HK.09922 stock_name:九毛九 cur_price:26.65 current_ratio(annual):48.278 , stock_code:HK.01083 stock_name:港华燃气 cur_price:3.39 current_ratio(annual):49.2 , stock_code:HK.00291 stock_name:华润啤酒 cur_price:58.0 current_ratio(annual):49.229 , stock_code:HK.00306 stock_name:冠忠巴士集团 cur_price:2.29 current_ratio(annual):49.769 ]
HK.08103
HMVOD视频
2.69
2.69
4.413
...
HK.00306
冠忠巴士集团
2.29
2.29
49.769
2
3
4
5
6
7
8
9
10
11
12
# Qot_StockFilter.proto
概要
条件スクリーニング
パラメータ
// 以下の6つの構造体(BaseFilter、AcumulateFilter、FinancialFilter、BaseData、AcumulateData、FinancialData)をご利用のユーザーはご注意ください。属性フィールド名「field」が C# の protocol buf の予約関数名と競合するため、moomoo API ではバージョン 3.18 よりこのフィールド名を「fieldName」に変更します。対応するインターフェースで使用しているフィールド名を変更してください。
// シンプル属性フィルタ
message BaseFilter
{
required int32 fieldName = 1; // StockField シンプル属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
}
// 累積属性フィルタ
message AccumulateFilter
{
required int32 fieldName = 1; // AccumulateField 累積属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 days = 6; // 近几日,累积時間
}
// 財務属性フィルタ
message FinancialFilter
{
required int32 fieldName = 1; // FinancialField 財務属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 quarter = 6; // FinancialQuarter 決算累积時間
}
// パターンテクニカル指標属性フィルタ
message PatternFilter
{
required int32 fieldName = 1; // PatternField パターンテクニカル指標属性
required int32 klType = 2; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 3; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 consecutivePeriod = 4; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
// カスタムテクニカル指標属性フィルタ
message CustomIndicatorFilter
{
required int32 firstFieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required int32 secondFieldName = 2; // CustomIndicatorField カスタムテクニカル指標属性
required int32 relativePosition = 3; // RelativePosition 相対位置
optional double fieldValue = 4; // カスタム数値
required int32 klType = 5; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 6; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
repeated int32 firstFieldParaList = 7; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
repeated int32 secondFieldParaList = 8; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
optional int32 consecutivePeriod = 9; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
message C2S
{
required int32 begin = 1; // データ起始点
required int32 num = 2; // リクエストデータ個数,最大200
required int32 market= 3; // Qot_Common::QotMarket 株式市場。上海株と深セン株をサポートし、両者は区別されずA株市場を示します。
// 以下はフィルタ条件(任意フィールド)。未入力の場合はフィルタなし
optional Qot_Common.Security plate = 4; // セクター
repeated BaseFilter baseFilterList = 5; // シンプル指標フィルタ
repeated AccumulateFilter accumulateFilterList = 6; // 累積指標フィルタ。同一属性の累積フィルタ条件数の上限は 10 個
repeated FinancialFilter financialFilterList = 7; // 财务指標过滤器
repeated PatternFilter patternFilterList = 8; // 形態技术指標过滤器
repeated CustomIndicatorFilter customIndicatorFilterList = 9; // カスタムテクニカル指標フィルタ
}
message Request
{
required C2S c2s = 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
- 株式構造は~を参照: Security
- 市場タイプ参见 QotMarket
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- パターンテクニカル指標属性フィルタ条件は PatternField を参照
- 決算期間は FinancialQuarter を参照
- ソート方向は SortDir を参照
- 相対位置参见 RelativePosition
- ローソク足タイプ参见 KLType
- 戻り値
// シンプル属性データ
message BaseData
{
required int32 fieldName = 1; // StockField シンプル属性
required double value = 2;
}
// 累積属性データ
message AccumulateData
{
required int32 fieldName = 1; // AccumulateField 累積属性
required double value = 2;
required int32 days = 3; // 近几日,累积時間
}
// 財務属性データ
message FinancialData
{
required int32 fieldName = 1; // FinancialField 財務属性
required double value = 2;
required int32 quarter = 3; // FinancialQuarter 決算累积時間
}
// カスタムテクニカル指標属性データ
message CustomIndicatorData
{
required int32 fieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required double value = 2;
required int32 klType = 3; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
repeated int32 fieldParaList = 4; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
}
// 返される株式データ
message StockData
{
required Qot_Common.Security security = 1; // 株式
required string name = 2; // 銘柄名
repeated BaseData baseDataList = 3; // フィルタ後の簡易指標属性データ
repeated AccumulateData accumulateDataList = 4; // フィルタ後の累積指標属性データ
repeated FinancialData financialDataList = 5; // フィルタ後の財務指標属性データ
repeated CustomIndicatorData customIndicatorDataList = 6; // カスタムテクニカル指標属性データ
// CustomIndicatorFilter の firstFieldName と secondFieldName の数値はこのリスト内で個別に返される
}
message S2C
{
required bool lastPage = 1; // 最終ページかどうか。false:最終ページではなく、まだ返されていないレコードがある。true:最終ページ
required int32 allCount = 2; // この条件でリクエストされた全データの件数
repeated StockData dataList = 3; // 返される株式データリスト
}
message Response
{
required int32 retType = 1 [default = -400]; // RetType、戻り値
optional string retMsg = 2;
optional int32 errCode = 3;
optional S2C s2c = 4;
}
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
- 株式構造は~を参照: Security
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- 決算期間は FinancialQuarter を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- ローソク足タイプ参见 KLType
- API 呼び出し結果,構造は~を参照: RetType
プロトコル ID
3215
uint StockFilter(QotStockFilter.Request req);
virtual void OnReply_StockFilter(FTAPI_Conn client, uint nSerialNo, QotStockFilter.Response rsp);
概要
条件スクリーニング
パラメータ
// 以下の6つの構造体(BaseFilter、AcumulateFilter、FinancialFilter、BaseData、AcumulateData、FinancialData)をご利用のユーザーはご注意ください。属性フィールド名「field」が C# の protocol buf の予約関数名と競合するため、moomoo API ではバージョン 3.18 よりこのフィールド名を「fieldName」に変更します。対応するインターフェースで使用しているフィールド名を変更してください。
// シンプル属性フィルタ
message BaseFilter
{
required int32 fieldName = 1; // StockField シンプル属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
}
// 累積属性フィルタ
message AccumulateFilter
{
required int32 fieldName = 1; // AccumulateField 累積属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 days = 6; // 近几日,累积時間
}
// 財務属性フィルタ
message FinancialFilter
{
required int32 fieldName = 1; // FinancialField 財務属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 quarter = 6; // FinancialQuarter 決算累积時間
}
// パターンテクニカル指標属性フィルタ
message PatternFilter
{
required int32 fieldName = 1; // PatternField パターンテクニカル指標属性
required int32 klType = 2; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 3; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 consecutivePeriod = 4; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
// カスタムテクニカル指標属性フィルタ
message CustomIndicatorFilter
{
required int32 firstFieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required int32 secondFieldName = 2; // CustomIndicatorField カスタムテクニカル指標属性
required int32 relativePosition = 3; // RelativePosition 相対位置
optional double fieldValue = 4; // カスタム数値
required int32 klType = 5; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 6; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
repeated int32 firstFieldParaList = 7; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
repeated int32 secondFieldParaList = 8; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
optional int32 consecutivePeriod = 9; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
message C2S
{
required int32 begin = 1; // データ起始点
required int32 num = 2; // リクエストデータ個数,最大200
required int32 market= 3; // Qot_Common::QotMarket 株式市場。上海株と深セン株をサポートし、両者は区別されずA株市場を示します。
// 以下はフィルタ条件(任意フィールド)。未入力の場合はフィルタなし
optional Qot_Common.Security plate = 4; // セクター
repeated BaseFilter baseFilterList = 5; // シンプル指標フィルタ
repeated AccumulateFilter accumulateFilterList = 6; // 累積指標フィルタ。同一属性の累積フィルタ条件数の上限は 10 個
repeated FinancialFilter financialFilterList = 7; // 财务指標过滤器
repeated PatternFilter patternFilterList = 8; // 形態技术指標过滤器
repeated CustomIndicatorFilter customIndicatorFilterList = 9; // カスタムテクニカル指標フィルタ
}
message Request
{
required C2S c2s = 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
- 株式構造は~を参照: Security
- 市場タイプ参见 QotMarket
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- パターンテクニカル指標属性フィルタ条件は PatternField を参照
- 決算期間は FinancialQuarter を参照
- ソート方向は SortDir を参照
- 相対位置参见 RelativePosition
- ローソク足タイプは KLType を参照
- 戻り値
// シンプル属性データ
message BaseData
{
required int32 fieldName = 1; // StockField シンプル属性
required double value = 2;
}
// 累積属性データ
message AccumulateData
{
required int32 fieldName = 1; // AccumulateField 累積属性
required double value = 2;
required int32 days = 3; // 近几日,累积時間
}
// 財務属性データ
message FinancialData
{
required int32 fieldName = 1; // FinancialField 財務属性
required double value = 2;
required int32 quarter = 3; // FinancialQuarter 決算累积時間
}
// カスタムテクニカル指標属性データ
message CustomIndicatorData
{
required int32 fieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required double value = 2;
required int32 klType = 3; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
repeated int32 fieldParaList = 4; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
}
// 返される株式データ
message StockData
{
required Qot_Common.Security security = 1; // 株式
required string name = 2; // 銘柄名
repeated BaseData baseDataList = 3; // フィルタ後の簡易指標属性データ
repeated AccumulateData accumulateDataList = 4; // フィルタ後の累積指標属性データ
repeated FinancialData financialDataList = 5; // フィルタ後の財務指標属性データ
repeated CustomIndicatorData customIndicatorDataList = 6; // カスタムテクニカル指標属性データ
// CustomIndicatorFilter の firstFieldName と secondFieldName の数値はこのリスト内で個別に返される
}
message S2C
{
required bool lastPage = 1; // 最終ページかどうか。false:最終ページではなく、まだ返されていないレコードがある。true:最終ページ
required int32 allCount = 2; // この条件でリクエストされた全データの件数
repeated StockData dataList = 3; // 返される株式データリスト
}
message Response
{
required int32 retType = 1 [default = -400]; // RetType、戻り値
optional string retMsg = 2;
optional int32 errCode = 3;
optional S2C s2c = 4;
}
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
- 株式構造は~を参照: Security
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- 決算期間は FinancialQuarter を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- ローソク足タイプ参见 KLType
- API 呼び出し結果,構造は~を参照: RetType
- Example
public class Program : FTSPI_Qot, FTSPI_Conn {
FTAPI_Qot qot = new FTAPI_Qot();
public Program() {
qot.SetClientInfo("csharp", 1); //クライアント情報の設定
qot.SetConnCallback(this); //接続コールバックの設定
qot.SetQotCallback(this); //取引コールバックの設定
}
public void Start() {
qot.InitConnect("127.0.0.1", (ushort)11111, false);
}
public void OnInitConnect(FTAPI_Conn client, long errCode, String desc)
{
Console.Write("Qot onInitConnect: ret={0} desc={1} connID={2}\n", errCode, desc, client.GetConnectID());
if (errCode != 0)
return;
QotStockFilter.BaseFilter filter = QotStockFilter.BaseFilter.CreateBuilder()
.SetFieldName(QotStockFilter.StockField.StockField_CurPrice)
.SetFilterMax(100)
.SetFilterMax(200)
.Build();
QotStockFilter.C2S c2s = QotStockFilter.C2S.CreateBuilder()
.SetBegin(0)
.SetNum(10)
.SetMarket((int)QotCommon.QotMarket.QotMarket_HK_Security)
.AddBaseFilterList(filter)
.Build();
QotStockFilter.Request req = QotStockFilter.Request.CreateBuilder().SetC2S(c2s).Build();
uint seqNo = qot.StockFilter(req);
Console.Write("Send QotStockFilter: {0}\n", seqNo);
}
public void OnDisconnect(FTAPI_Conn client, long errCode) {
Console.Write("Qot onDisConnect: {0}\n", errCode);
}
public void OnReply_StockFilter(FTAPI_Conn client, uint nSerialNo, QotStockFilter.Response rsp)
{
Console.Write("Reply: QotStockFilter: {0}\n", nSerialNo, rsp.ToString());
Console.Write("code: {0}, name: {1} \n", rsp.S2C.DataListList[0].Security.Code,
rsp.S2C.DataListList[0].Name);
}
public static void Main(String[] args) {
FTAPI.Init();
Program qot = new Program();
qot.Start();
while (true)
Thread.Sleep(1000 * 600);
}
}
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
- Output
Qot onInitConnect: ret=0 desc= connID=6825721743616225277
Send QotStockFilter: 3
Reply: QotStockFilter: 3
code: 00376, name: 云锋金融
2
3
4
int stockFilter(QotStockFilter.Request req);
void onReply_StockFilter(FTAPI_Conn client, int nSerialNo, QotStockFilter.Response rsp);
概要
条件スクリーニング
パラメータ
// 以下の6つの構造体(BaseFilter、AcumulateFilter、FinancialFilter、BaseData、AcumulateData、FinancialData)をご利用のユーザーはご注意ください。属性フィールド名「field」が C# の protocol buf の予約関数名と競合するため、moomoo API ではバージョン 3.18 よりこのフィールド名を「fieldName」に変更します。対応するインターフェースで使用しているフィールド名を変更してください。
// シンプル属性フィルタ
message BaseFilter
{
required int32 fieldName = 1; // StockField シンプル属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
}
// 累積属性フィルタ
message AccumulateFilter
{
required int32 fieldName = 1; // AccumulateField 累積属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 days = 6; // 近几日,累积時間
}
// 財務属性フィルタ
message FinancialFilter
{
required int32 fieldName = 1; // FinancialField 財務属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 quarter = 6; // FinancialQuarter 決算累积時間
}
// パターンテクニカル指標属性フィルタ
message PatternFilter
{
required int32 fieldName = 1; // PatternField パターンテクニカル指標属性
required int32 klType = 2; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 3; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 consecutivePeriod = 4; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
// カスタムテクニカル指標属性フィルタ
message CustomIndicatorFilter
{
required int32 firstFieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required int32 secondFieldName = 2; // CustomIndicatorField カスタムテクニカル指標属性
required int32 relativePosition = 3; // RelativePosition 相対位置
optional double fieldValue = 4; // カスタム数値
required int32 klType = 5; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 6; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
repeated int32 firstFieldParaList = 7; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
repeated int32 secondFieldParaList = 8; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
optional int32 consecutivePeriod = 9; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
message C2S
{
required int32 begin = 1; // データ起始点
required int32 num = 2; // リクエストデータ個数,最大200
required int32 market= 3; // Qot_Common::QotMarket 株式市場。上海株と深セン株をサポートし、両者は区別されずA株市場を示します。
// 以下はフィルタ条件(任意フィールド)。未入力の場合はフィルタなし
optional Qot_Common.Security plate = 4; // セクター
repeated BaseFilter baseFilterList = 5; // シンプル指標フィルタ
repeated AccumulateFilter accumulateFilterList = 6; // 累積指標フィルタ。同一属性の累積フィルタ条件数の上限は 10 個
repeated FinancialFilter financialFilterList = 7; // 财务指標过滤器
repeated PatternFilter patternFilterList = 8; // 形態技术指標过滤器
repeated CustomIndicatorFilter customIndicatorFilterList = 9; // カスタムテクニカル指標フィルタ
}
message Request
{
required C2S c2s = 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
- 株式構造は~を参照: Security
- 市場タイプ参见 QotMarket
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- パターンテクニカル指標属性フィルタ条件は PatternField を参照
- 決算期間は FinancialQuarter を参照
- ソート方向は SortDir を参照
- 相対位置参见 RelativePosition
- ローソク足タイプは KLType を参照
- 戻り値
// シンプル属性データ
message BaseData
{
required int32 fieldName = 1; // StockField シンプル属性
required double value = 2;
}
// 累積属性データ
message AccumulateData
{
required int32 fieldName = 1; // AccumulateField 累積属性
required double value = 2;
required int32 days = 3; // 近几日,累积時間
}
// 財務属性データ
message FinancialData
{
required int32 fieldName = 1; // FinancialField 財務属性
required double value = 2;
required int32 quarter = 3; // FinancialQuarter 決算累积時間
}
// カスタムテクニカル指標属性データ
message CustomIndicatorData
{
required int32 fieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required double value = 2;
required int32 klType = 3; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
repeated int32 fieldParaList = 4; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
}
// 返される株式データ
message StockData
{
required Qot_Common.Security security = 1; // 株式
required string name = 2; // 銘柄名
repeated BaseData baseDataList = 3; // フィルタ後の簡易指標属性データ
repeated AccumulateData accumulateDataList = 4; // フィルタ後の累積指標属性データ
repeated FinancialData financialDataList = 5; // フィルタ後の財務指標属性データ
repeated CustomIndicatorData customIndicatorDataList = 6; // カスタムテクニカル指標属性データ
// CustomIndicatorFilter の firstFieldName と secondFieldName の数値はこのリスト内で個別に返される
}
message S2C
{
required bool lastPage = 1; // 最終ページかどうか。false:最終ページではなく、まだ返されていないレコードがある。true:最終ページ
required int32 allCount = 2; // この条件でリクエストされた全データの件数
repeated StockData dataList = 3; // 返される株式データリスト
}
message Response
{
required int32 retType = 1 [default = -400]; // RetType、戻り値
optional string retMsg = 2;
optional int32 errCode = 3;
optional S2C s2c = 4;
}
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
- 株式構造は~を参照: Security
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- 決算期間は FinancialQuarter を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- ローソク足タイプ参见 KLType
- API 呼び出し結果,構造は~を参照: RetType
- Example
public class QotDemo implements FTSPI_Qot, FTSPI_Conn {
FTAPI_Conn_Qot qot = new FTAPI_Conn_Qot();
public QotDemo() {
qot.setClientInfo("javaclient", 1); //クライアント情報の設定
qot.setConnSpi(this); //接続コールバックの設定
qot.setQotSpi(this); //取引コールバックの設定
}
public void start() {
qot.initConnect("127.0.0.1", (short)11111, false);
}
@Override
public void onInitConnect(FTAPI_Conn client, long errCode, String desc)
{
System.out.printf("Qot onInitConnect: ret=%b desc=%s connID=%d\n", errCode, desc, client.getConnectID());
if (errCode != 0)
return;
QotStockFilter.BaseFilter filter = QotStockFilter.BaseFilter.newBuilder()
.setFieldName(QotStockFilter.StockField.StockField_CurPrice_VALUE)
.setFilterMax(100)
.setFilterMax(200)
.build();
QotStockFilter.C2S c2s = QotStockFilter.C2S.newBuilder()
.setBegin(0)
.setNum(10)
.setMarket(QotCommon.QotMarket.QotMarket_HK_Security_VALUE)
.addBaseFilterList(filter)
.build();
QotStockFilter.Request req = QotStockFilter.Request.newBuilder().setC2S(c2s).build();
int seqNo = qot.stockFilter(req);
System.out.printf("Send QotStockFilter: %d\n", seqNo);
}
@Override
public void onDisconnect(FTAPI_Conn client, long errCode) {
System.out.printf("Qot onDisConnect: %d\n", errCode);
}
@Override
public void onReply_StockFilter(FTAPI_Conn client, int nSerialNo, QotStockFilter.Response rsp) {
if (rsp.getRetType() != 0) {
System.out.printf("QotStockFilter failed: %s\n", rsp.getRetMsg());
}
else {
try {
String json = JsonFormat.printer().print(rsp);
System.out.printf("Receive QotStockFilter: %s\n", json);
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
FTAPI.init();
QotDemo qot = new QotDemo();
qot.start();
while (true) {
try {
Thread.sleep(1000 * 600);
} catch (InterruptedException exc) {
}
}
}
}
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
61
62
63
64
65
66
67
68
69
70
- Output
Send QotStockFilter: 2
Receive QotStockFilter: {
"retType": 0,
"retMsg": "",
"errCode": 0,
"s2c": {
"lastPage": false,
"allCount": 2431,
"dataList": [{
"security": {
"market": 1,
"code": "08560"
},
"name": "世大控股"
}, ... {
"security": {
"market": 1,
"code": "02171"
},
"name": "科济药业-B"
}]
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Futu::u32_t StockFilter(const Qot_StockFilter::Request &stReq);
virtual void OnReply_StockFilter(Futu::u32_t nSerialNo, const Qot_StockFilter::Response &stRsp) = 0;
概要
条件スクリーニング
パラメータ
// 以下の6つの構造体(BaseFilter、AcumulateFilter、FinancialFilter、BaseData、AcumulateData、FinancialData)をご利用のユーザーはご注意ください。属性フィールド名「field」が C# の protocol buf の予約関数名と競合するため、moomoo API ではバージョン 3.18 よりこのフィールド名を「fieldName」に変更します。対応するインターフェースで使用しているフィールド名を変更してください。
// シンプル属性フィルタ
message BaseFilter
{
required int32 fieldName = 1; // StockField シンプル属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
}
// 累積属性フィルタ
message AccumulateFilter
{
required int32 fieldName = 1; // AccumulateField 累積属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 days = 6; // 近几日,累积時間
}
// 財務属性フィルタ
message FinancialFilter
{
required int32 fieldName = 1; // FinancialField 財務属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 quarter = 6; // FinancialQuarter 決算累积時間
}
// パターンテクニカル指標属性フィルタ
message PatternFilter
{
required int32 fieldName = 1; // PatternField パターンテクニカル指標属性
required int32 klType = 2; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 3; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 consecutivePeriod = 4; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
// カスタムテクニカル指標属性フィルタ
message CustomIndicatorFilter
{
required int32 firstFieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required int32 secondFieldName = 2; // CustomIndicatorField カスタムテクニカル指標属性
required int32 relativePosition = 3; // RelativePosition 相対位置
optional double fieldValue = 4; // カスタム数値
required int32 klType = 5; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 6; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
repeated int32 firstFieldParaList = 7; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
repeated int32 secondFieldParaList = 8; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
optional int32 consecutivePeriod = 9; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
message C2S
{
required int32 begin = 1; // データ起始点
required int32 num = 2; // リクエストデータ個数,最大200
required int32 market= 3; // Qot_Common::QotMarket 株式市場。上海株と深セン株をサポートし、両者は区別されずA株市場を示します。
// 以下はフィルタ条件(任意フィールド)。未入力の場合はフィルタなし
optional Qot_Common.Security plate = 4; // セクター
repeated BaseFilter baseFilterList = 5; // シンプル指標フィルタ
repeated AccumulateFilter accumulateFilterList = 6; // 累積指標フィルタ。同一属性の累積フィルタ条件数の上限は 10 個
repeated FinancialFilter financialFilterList = 7; // 财务指標过滤器
repeated PatternFilter patternFilterList = 8; // 形態技术指標过滤器
repeated CustomIndicatorFilter customIndicatorFilterList = 9; // カスタムテクニカル指標フィルタ
}
message Request
{
required C2S c2s = 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
- 株式構造は~を参照: Security
- 市場タイプ参见 QotMarket
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- パターンテクニカル指標属性フィルタ条件は PatternField を参照
- 決算期間は FinancialQuarter を参照
- ソート方向は SortDir を参照
- 相対位置参见 RelativePosition
- ローソク足タイプは KLType を参照
- 戻り値
// シンプル属性データ
message BaseData
{
required int32 fieldName = 1; // StockField シンプル属性
required double value = 2;
}
// 累積属性データ
message AccumulateData
{
required int32 fieldName = 1; // AccumulateField 累積属性
required double value = 2;
required int32 days = 3; // 近几日,累积時間
}
// 財務属性データ
message FinancialData
{
required int32 fieldName = 1; // FinancialField 財務属性
required double value = 2;
required int32 quarter = 3; // FinancialQuarter 決算累积時間
}
// カスタムテクニカル指標属性データ
message CustomIndicatorData
{
required int32 fieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required double value = 2;
required int32 klType = 3; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
repeated int32 fieldParaList = 4; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
}
// 返される株式データ
message StockData
{
required Qot_Common.Security security = 1; // 株式
required string name = 2; // 銘柄名
repeated BaseData baseDataList = 3; // フィルタ後の簡易指標属性データ
repeated AccumulateData accumulateDataList = 4; // フィルタ後の累積指標属性データ
repeated FinancialData financialDataList = 5; // フィルタ後の財務指標属性データ
repeated CustomIndicatorData customIndicatorDataList = 6; // カスタムテクニカル指標属性データ
// CustomIndicatorFilter の firstFieldName と secondFieldName の数値はこのリスト内で個別に返される
}
message S2C
{
required bool lastPage = 1; // 最終ページかどうか。false:最終ページではなく、まだ返されていないレコードがある。true:最終ページ
required int32 allCount = 2; // この条件でリクエストされた全データの件数
repeated StockData dataList = 3; // 返される株式データリスト
}
message Response
{
required int32 retType = 1 [default = -400]; // RetType、戻り値
optional string retMsg = 2;
optional int32 errCode = 3;
optional S2C s2c = 4;
}
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
- 株式構造は~を参照: Security
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- 決算期間は FinancialQuarter を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- ローソク足タイプ参见 KLType
- API 呼び出し結果,構造は~を参照: RetType
- Example
class Program : public FTSPI_Qot, public FTSPI_Trd, public FTSPI_Conn
{
public:
Program() {
m_pQotApi = FTAPI::CreateQotApi();
m_pQotApi->RegisterQotSpi(this);
m_pQotApi->RegisterConnSpi(this);
}
~Program() {
if (m_pQotApi != nullptr)
{
m_pQotApi->UnregisterQotSpi();
m_pQotApi->UnregisterConnSpi();
FTAPI::ReleaseQotApi(m_pQotApi);
m_pQotApi = nullptr;
}
}
void Start() {
m_pQotApi->InitConnect("127.0.0.1", 11111, false);
}
virtual void OnInitConnect(FTAPI_Conn* pConn, Futu::i64_t nErrCode, const char* strDesc) {
cout << "connect" << endl;
// パケット生成
Qot_StockFilter::Request req;
Qot_StockFilter::C2S *c2s = req.mutable_c2s();
c2s->set_begin(0);
c2s->set_num(50);
c2s->set_market(1);
m_StockFilterSerialNo = m_pQotApi->StockFilter(req);
cout << "Request StockFilter SerialNo: " << m_StockFilterSerialNo << endl;
}
virtual void OnReply_StockFilter(Futu::u32_t nSerialNo, const Qot_StockFilter::Response &stRsp){
if(nSerialNo == m_StockFilterSerialNo)
{
cout << "OnReply_StockFilter SerialNo: " << nSerialNo << endl;
// 内部構造を解析して出力
// ProtoBufToBodyData と UTF8ToLocal 関数の定義は Sample の tool.h ファイルを参照
string resp_str;
ProtoBufToBodyData(stRsp, resp_str);
cout << UTF8ToLocal(resp_str) << endl;
}
}
protected:
FTAPI_Qot *m_pQotApi;
Futu::u32_t m_StockFilterSerialNo;
};
int32_t main(int32_t argc, char** argv)
{
FTAPI::Init();
{
Program program;
program.Start();
getchar();
}
protobuf::ShutdownProtobufLibrary();
FTAPI::UnInit();
return 0;
}
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
61
62
63
64
65
66
67
68
69
70
71
- Output
connect
Request StockFilter SerialNo: 4
OnReply_StockFilter SerialNo: 4
{
"retType": 0,
"retMsg": "",
"errCode": 0,
"s2c": {
"lastPage": false,
"allCount": 2426,
"dataList": [
{
"security": {
"market": 1,
"code": "02930"
},
"name": "丝路物流控股"
},
...
{
"security": {
"market": 1,
"code": "01440"
},
"name": "DEYUN HOLDING"
}
]
}
}
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
StockFilter(req);
概要
条件スクリーニング
パラメータ
// 以下の6つの構造体(BaseFilter、AcumulateFilter、FinancialFilter、BaseData、AcumulateData、FinancialData)をご利用のユーザーはご注意ください。属性フィールド名「field」が C# の protocol buf の予約関数名と競合するため、moomoo API ではバージョン 3.18 よりこのフィールド名を「fieldName」に変更します。対応するインターフェースで使用しているフィールド名を変更してください。
// シンプル属性フィルタ
message BaseFilter
{
required int32 fieldName = 1; // StockField シンプル属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
}
// 累積属性フィルタ
message AccumulateFilter
{
required int32 fieldName = 1; // AccumulateField 累積属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 days = 6; // 近几日,累积時間
}
// 財務属性フィルタ
message FinancialFilter
{
required int32 fieldName = 1; // FinancialField 財務属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 quarter = 6; // FinancialQuarter 決算累积時間
}
// パターンテクニカル指標属性フィルタ
message PatternFilter
{
required int32 fieldName = 1; // PatternField パターンテクニカル指標属性
required int32 klType = 2; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 3; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 consecutivePeriod = 4; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
// カスタムテクニカル指標属性フィルタ
message CustomIndicatorFilter
{
required int32 firstFieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required int32 secondFieldName = 2; // CustomIndicatorField カスタムテクニカル指標属性
required int32 relativePosition = 3; // RelativePosition 相対位置
optional double fieldValue = 4; // カスタム数値
required int32 klType = 5; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 6; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
repeated int32 firstFieldParaList = 7; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
repeated int32 secondFieldParaList = 8; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
optional int32 consecutivePeriod = 9; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
message C2S
{
required int32 begin = 1; // データ起始点
required int32 num = 2; // リクエストデータ個数,最大200
required int32 market= 3; // Qot_Common::QotMarket 株式市場。上海株と深セン株をサポートし、両者は区別されずA株市場を示します。
// 以下はフィルタ条件(任意フィールド)。未入力の場合はフィルタなし
optional Qot_Common.Security plate = 4; // セクター
repeated BaseFilter baseFilterList = 5; // シンプル指標フィルタ
repeated AccumulateFilter accumulateFilterList = 6; // 累積指標フィルタ。同一属性の累積フィルタ条件数の上限は 10 個
repeated FinancialFilter financialFilterList = 7; // 财务指標过滤器
repeated PatternFilter patternFilterList = 8; // 形態技术指標过滤器
repeated CustomIndicatorFilter customIndicatorFilterList = 9; // カスタムテクニカル指標フィルタ
}
message Request
{
required C2S c2s = 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
- 株式構造は~を参照: Security
- 市場タイプ参见 QotMarket
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- パターンテクニカル指標属性フィルタ条件は PatternField を参照
- 決算期間は FinancialQuarter を参照
- ソート方向は SortDir を参照
- 相対位置参见 RelativePosition
- ローソク足タイプは KLType を参照
- 戻り値
// シンプル属性データ
message BaseData
{
required int32 fieldName = 1; // StockField シンプル属性
required double value = 2;
}
// 累積属性データ
message AccumulateData
{
required int32 fieldName = 1; // AccumulateField 累積属性
required double value = 2;
required int32 days = 3; // 近几日,累积時間
}
// 財務属性データ
message FinancialData
{
required int32 fieldName = 1; // FinancialField 財務属性
required double value = 2;
required int32 quarter = 3; // FinancialQuarter 決算累积時間
}
// カスタムテクニカル指標属性データ
message CustomIndicatorData
{
required int32 fieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required double value = 2;
required int32 klType = 3; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
repeated int32 fieldParaList = 4; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
}
// 返される株式データ
message StockData
{
required Qot_Common.Security security = 1; // 株式
required string name = 2; // 銘柄名
repeated BaseData baseDataList = 3; // フィルタ後の簡易指標属性データ
repeated AccumulateData accumulateDataList = 4; // フィルタ後の累積指標属性データ
repeated FinancialData financialDataList = 5; // フィルタ後の財務指標属性データ
repeated CustomIndicatorData customIndicatorDataList = 6; // カスタムテクニカル指標属性データ
// CustomIndicatorFilter の firstFieldName と secondFieldName の数値はこのリスト内で個別に返される
}
message S2C
{
required bool lastPage = 1; // 最終ページかどうか。false:最終ページではなく、まだ返されていないレコードがある。true:最終ページ
required int32 allCount = 2; // この条件でリクエストされた全データの件数
repeated StockData dataList = 3; // 返される株式データリスト
}
message Response
{
required int32 retType = 1 [default = -400]; // RetType、戻り値
optional string retMsg = 2;
optional int32 errCode = 3;
optional S2C s2c = 4;
}
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
- 株式構造は~を参照: Security
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- 決算期間は FinancialQuarter を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- ローソク足タイプ参见 KLType
- API 呼び出し結果,構造は~を参照: RetType
- Example
import ftWebsocket from "futu-api";
import { ftCmdID } from "futu-api";
import { Common, Qot_Common } from "futu-api/proto";
import beautify from "js-beautify";
function QotStockFilter(){
const { RetType } = Common
const { QotMarket } = Qot_Common
let [addr, port, enable_ssl, key] = ["127.0.0.1", 33333, false, '7522027ccf5a06b1'];
let websocket = new ftWebsocket();
websocket.onlogin = (ret, msg)=>{
if (ret) { // ログイン成功
const req = {
c2s: {
begin: 0,
num: 2,
market: QotMarket.QotMarket_HK_Security,
},
};
websocket.StockFilter(req)
.then((res) => {
let { errCode, retMsg, retType,s2c } = res
console.log("StockFilter: errCode %d, retMsg %s, retType %d", errCode, retMsg, retType);
if(retType == RetType.RetType_Succeed){
let data = beautify(JSON.stringify(s2c), {
indent_size: 2,
space_in_empty_paren: true,
});
console.log(data);
}
})
.catch((error) => {
console.log("error:", error);
});
} else {
console.log("error", msg);
}
};
websocket.start(addr, port, enable_ssl, key);
//相場接続をクローズ。使用後は接続をクローズしてください。不要なリソース占有を防ぎます
//OpenD は最大 128 接続に制限されています
//1 ページまたは 1 プロジェクトで 1 接続を維持することも可能。ここではサンプルとしてリクエストごとに 1 接続を作成
setTimeout(()=>{
websocket.stop();
console.log("stop");
}, 5000); // 5 秒後に切断
}
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
- Output
StockFilter: errCode 0, retMsg , retType 0
{
"lastPage": false,
"allCount": 2436,
"dataList": [{
"security": {
"market": 1,
"code": "08579"
},
"name": "万亚企业控股"
}, {
"security": {
"market": 1,
"code": "09869"
},
"name": "海伦司"
}]
}
stop
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ご注意
- サブセクターリスト取得関数 でサブセクターコードを取得します。条件スクリーニングに対応するセクターは以下の通りです
- 香港株の業種セクターとテーマセクター。
- 米国株の業種セクター
- A株の業種セクター、テーマセクター、地域セクター
- 対応するセクター指数コード
コード 説明 HK.Motherboard 香港株メインボード HK.GEM 香港株GEM(成長企業市場) HK.BK1911 H株メインボード HK.BK1912 H株GEM(成長企業市場) US.NYSE ニューヨーク証券取引所 US.AMEX アメリカン証券取引所 US.NASDAQ ナスダック SH.3000000 上海メインボード SZ.3000001 深センメインボード SZ.3000004 深セン創業板(ChiNext)
APIレート制限
- 香港株BMP権限では条件スクリーニング機能に対応していません
- 30秒以内に条件スクリーニングAPIを最大10回までリクエスト可能です
- 1ページあたりのフィルタ結果は最大200件です
- フィルタ条件は250個以下を推奨します。超過すると「業務処理タイムアウト」が発生する場合があります
- 累積属性の同一フィルタ条件数の上限は10個です
- 「最新値」などの動的データをソートフィールドとして使用する場合、複数ページの取得間隔中にソート順が変わる場合があります
- 異なるタイプの指標間の比較には対応していません。同じタイプの指標間でのみ比較関係を構築できます。異なるタイプの指標間の比較はエラーになります。例:MA5とMA10は比較可能。MA5とEMA10は比較不可。
- カスタム指標属性の同一タイプのフィルタ条件数の上限は10個です
- 基本属性、財務属性、パターン属性では同一フィールドに対するフィルタ条件の重複指定に対応していません
- 条件スクリーニングは米国株のプレマーケット・アフターマーケット・ナイトセッションに対応していません。フィルタ結果はすべて立会時間中のデータで返されます
- Python
- Proto
- C#
- Java
- C++
- JavaScript
get_stock_filter(market, filter_list, plate_code=None, begin=0, num=200)
概要
条件スクリーニング
パラメータ
パラメータ 型 説明 market Market 市場識別子 上海株と深セン株は区別されません。いずれを入力しても上海・深セン市場の株式が返されますfilter_list list フィルタ条件のリスト 下記の表を参照。リスト内の要素タイプは SimpleFilter または AccumulateFilter または FinancialFilterplate_code str セクターコード begin int データ起始点 num int リクエストデータ個数 SimpleFilter オブジェクトの関連パラメータは以下の通りです:
フィールド タイプ 説明 stock_field StockField シンプル属性 filter_min float 範囲下限 閉区間
未指定の場合、デフォルトは -∞filter_max float 範囲上限 閉区間
未指定の場合、デフォルトは +∞is_no_filter bool このフィールドでフィルタが不要かどうか True:フィルタしない
False:フィルタする
未指定の場合はデフォルトでフィルタしないsort SortDir ソート方向 未指定の場合、デフォルトはソートなしAccumulateFilter オブジェクトの関連パラメータは以下の通りです:
フィールド タイプ 説明 stock_field StockField 累積属性 filter_min float 範囲下限 閉区間
未指定の場合、デフォルトは -∞filter_max float 範囲上限 閉区間
未指定の場合、デフォルトは +∞is_no_filter bool このフィールドでフィルタが不要かどうか True:フィルタしない
False:フィルタする
未指定の場合はデフォルトでフィルタしないsort SortDir ソート方向 未指定の場合、デフォルトはソートなしdays int フィルタ対象データの累計日数 FinancialFilter オブジェクトの関連パラメータは以下の通りです:
フィールド タイプ 説明 stock_field StockField 財務属性 filter_min float 範囲下限 閉区間
未指定の場合、デフォルトは -∞filter_max float 範囲上限 閉区間
未指定の場合、デフォルトは +∞is_no_filter bool このフィールドでフィルタが不要かどうか True:フィルタしない
False:フィルタする
未指定の場合はデフォルトでフィルタしないsort SortDir ソート方向 未指定の場合、デフォルトはソートなしquarter FinancialQuarter 決算累积時間 CustomIndicatorFilter オブジェクトの関連パラメータは以下の通りです:
フィールド タイプ 説明 stock_field1 StockField カスタムテクニカル指標属性 stock_field1_para list カスタムテクニカル指標属性パラメータ 指標タイプに応じてパラメータを指定:
1. MA:[移動平均周期]
2.EMA:[指数移動平均周期]
3.RSI:[RSI 指標周期]
4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値]
5.BOLL:[移動平均線周期, 偏差値]
6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]relative_position RelativePosition 相対位置 stock_field2 StockField カスタムテクニカル指標属性 stock_field2_para list カスタムテクニカル指標属性パラメータ 指標タイプに応じてパラメータを指定:
1. MA:[移動平均周期]
2.EMA:[指数移動平均周期]
3.RSI:[RSI 指標周期]
4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値]
5.BOLL:[移動平均線周期, 偏差値]
6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]value float カスタム数値 stock_field2 で StockField のカスタム数値を選択した場合、value は必須パラメータですktype KLType ローソク足タイプ KLType K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみサポートconsecutive_period int 連続周期(consecutive_period)すべてが条件を満たすデータをフィルタ 入力範囲は [1,12]is_no_filter bool このフィールドでフィルタが不要かどうか True:フィルタしない
False:フィルタする
未指定の場合はデフォルトでフィルタしないPatternFilter オブジェクトの関連パラメータは以下の通りです:
フィールド タイプ 説明 stock_field StockField パターンテクニカル指標属性 ktype KLType ローソク足タイプ KLType(K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみサポート) consecutive_period int 連続周期(consecutive_period)すべてが条件を満たすデータをフィルタ 入力範囲は [1,12]is_no_filter bool このフィールドでフィルタが不要かどうか True:フィルタしない
False:フィルタする
未指定の場合はデフォルトでフィルタしない
戻り値
パラメータ 型 説明 ret RET_CODE API呼び出し結果 data tuple ret == RET_OK の場合、選股データ str ret != RET_OK の場合、エラーの説明を返す スクリーニングデータのタプル構成は以下の通りです:
フィールド タイプ 説明 last_page bool かどうか最后一页 all_count int リスト総数量 stock_list list 選股データ list 内の要素の型は FilterStockDataFilterStockData タイプのフィールドフォーマット:
フィールド タイプ 説明 stock_code str 銘柄コード stock_name str 株式名字 cur_price float 最新価格 cur_price_to_highest_52weeks_ratio float (現在値 - 52週高値)/ 52週高値 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますcur_price_to_lowest_52weeks_ratio float (現在値 - 52週安値)/ 52週安値 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますhigh_price_to_highest_52weeks_ratio float (本日高値 - 52週高値)/ 52週高値 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますlow_price_to_lowest_52weeks_ratio float (本日安値 - 52週安値)/ 52週安値 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますvolume_ratio float 出来高比率 bid_ask_ratio float 委託比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますlot_price float 每手価格 market_val float 市值 pe_annual float PER pe_ttm float PER TTM pb_rate float PBR change_rate_5min float 5分間騰落率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますchange_rate_begin_year float 年初来騰落率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますps_ttm float PSR TTM このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますpcf_ttm float 株価キャッシュフロー倍率 TTM このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますtotal_share float 総股数 単位:股float_share float 流通股数 単位:股float_market_val float 流通時価総額 単位:元change_rate float 騰落率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますamplitude float 振幅 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますvolume float 日均出来高 turnover float 日均売買代金 turnover_rate float 売買回転率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますnet_profit float 純利益 net_profix_growth float 純利益成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますsum_of_business float 营业收入 sum_of_business_growth float 売上高前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますnet_profit_rate float 純利益率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますgross_profit_rate float 売上総利益率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますdebt_asset_rate float 負債比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますreturn_on_equity_rate float 自己資本利益率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますroic float 投下資本利益率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますroa_ttm float 総資産利益率 TTM このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します。年次報告のみ適用ebit_ttm float EBIT TTM 単位:元。年次報告のみ適用ebitda float 税息折旧及摊销前利润 単位:元operating_margin_ttm float 営業利益率 TTM このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します。年次報告のみ適用ebit_margin float EBIT マージン このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますebitda_margin float EBITDA マージン このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますfinancial_cost_rate float 財務費用率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますoperating_profit_ttm float 営業利益 TTM 単位:元。年次報告のみ適用shareholder_net_profit_ttm float 親会社に帰属する純利益 単位:元。年次報告のみ適用net_profit_cash_cover_ttm float 利益に占める現金収入割合 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します。年次報告のみ適用current_ratio float 流動比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますquick_ratio float 当座比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますcurrent_asset_ratio float 流動資産比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますcurrent_debt_ratio float 流動負債比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますequity_multiplier float 權益乘数 property_ratio float 持分比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますcash_and_cash_equivalents float 现金和现金等価 単位:元total_asset_turnover float 総資産回転率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますfixed_asset_turnover float 固定資産回転率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますinventory_turnover float 棚卸資産回転率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますoperating_cash_flow_ttm float 営業キャッシュフロー TTM 単位:元。年次報告のみ適用accounts_receivable float 売掛金淨额 単位:元ebit_growth_rate float EBIT 前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますoperating_profit_growth_rate float 営業利益前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますtotal_assets_growth_rate float 総資産前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますprofit_to_shareholders_growth_rate float 親会社帰属純利益前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますprofit_before_tax_growth_rate float 税引前利益前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますeps_growth_rate float EPS 前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますroe_growth_rate float ROE 前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますroic_growth_rate float ROIC 前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますnocf_growth_rate float 営業キャッシュフロー前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますnocf_per_share_growth_rate float 1株あたり営業キャッシュフロー前年比成長率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますoperating_revenue_cash_cover float 営業キャッシュ収入比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますoperating_profit_to_total_profit float 営業利益構成比 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますbasic_eps float 基本每股收益 単位:元diluted_eps float 希薄化後EPS 単位:元nocf_per_share float 1株当たり営業キャッシュフロー 単位:元price float 最新価格 ma float 単純移動平均線 MA パラメータに基づく具体的な数値を返しますma5 float 5日単純移動平均線 ma10 float 10日単純移動平均線 ma20 float 20日単純移動平均線 ma30 float 30日単純移動平均線 ma60 float 60日単純移動平均線 ma120 float 120日単純移動平均線 ma250 float 250日単純移動平均線 rsi float RSI 値 RSI パラメータに基づく具体的な数値を返します。RSI デフォルトパラメータは 12ema float 指数移動平均線 EMA パラメータに基づく具体的な数値を返しますema5 float 5日指数移動移動平均線 ema10 float 10日指数移動移動平均線 ema20 float 20日指数移動移動平均線 ema30 float 30日指数移動移動平均線 ema60 float 60日指数移動移動平均線 ema120 float 120日指数移動移動平均線 ema250 float 250日指数移動移動平均線 kdj_k float KDJ 指標の K 値 KDJ パラメータに基づく具体的な数値を返します。KDJ デフォルトパラメータは [9,3,3]kdj_d float KDJ 指標の D 値 KDJ パラメータに基づく具体的な数値を返します。KDJ デフォルトパラメータは [9,3,3]kdj_j float KDJ 指標の J 値 KDJ パラメータに基づく具体的な数値を返します。KDJ デフォルトパラメータは [9,3,3]macd_diff float MACD 指標の DIFF 値 MACD パラメータに基づく具体的な数値を返します。MACD デフォルトパラメータは [12,26,9]macd_dea float MACD 指標の DEA 値 MACD パラメータに基づく具体的な数値を返します。MACD デフォルトパラメータは [12,26,9]macd float MACD 指標の MACD 値 MACD パラメータに基づく具体的な数値を返します。MACD デフォルトパラメータは [12,26,9]boll_upper float BOLL 指標の UPPER 値 BOLL パラメータに基づく具体的な数値を返します。BOLL デフォルトパラメータは [20,2]boll_middler float BOLL 指標の MIDDLER 値 BOLL パラメータに基づく具体的な数値を返します。BOLL デフォルトパラメータは [20,2]boll_lower float BOLL 指標の LOWER 値 BOLL パラメータに基づく具体的な数値を返します。BOLL デフォルトパラメータは [20,2]
Example
from moomoo import *
import time
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
simple_filter = SimpleFilter()
simple_filter.filter_min = 2
simple_filter.filter_max = 1000
simple_filter.stock_field = StockField.CUR_PRICE
simple_filter.is_no_filter = False
# simple_filter.sort = SortDir.ASCEND
financial_filter = FinancialFilter()
financial_filter.filter_min = 0.5
financial_filter.filter_max = 50
financial_filter.stock_field = StockField.CURRENT_RATIO
financial_filter.is_no_filter = False
financial_filter.sort = SortDir.ASCEND
financial_filter.quarter = FinancialQuarter.ANNUAL
custom_filter = CustomIndicatorFilter()
custom_filter.ktype = KLType.K_DAY
custom_filter.stock_field1 = StockField.KDJ_K
custom_filter.stock_field1_para = [10,4,4]
custom_filter.stock_field2 = StockField.KDJ_K
custom_filter.stock_field2_para = [9,3,3]
custom_filter.relative_position = RelativePosition.MORE
custom_filter.is_no_filter = False
nBegin = 0
last_page = False
ret_list = list()
while not last_page:
nBegin += len(ret_list)
ret, ls = quote_ctx.get_stock_filter(market=Market.HK, filter_list=[simple_filter, financial_filter, custom_filter], begin=nBegin) # 香港市場の株式に対して簡易、財務、指標フィルタを実行
if ret == RET_OK:
last_page, all_count, ret_list = ls
print('all count = ', all_count)
for item in ret_list:
print(item.stock_code) # 取銘柄コード
print(item.stock_name) # 取銘柄名
print(item[simple_filter]) # simple_filter に対応する変数値を取得
print(item[financial_filter]) # financial_filter に対応する変数値を取得
print(item[custom_filter]) # custom_filter の数値を取得
else:
print('error: ', ls)
time.sleep(3) # 加入時間间隔,避免触発限频
quote_ctx.close() # 使用後は接続をクローズしてください。接続数の枯渇を防止します。
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
- Output
39 39 [ stock_code:HK.08103 stock_name:HMVOD视频 cur_price:2.69 current_ratio(annual):4.413 , stock_code:HK.00376 stock_name:云锋金融 cur_price:2.96 current_ratio(annual):12.585 , stock_code:HK.09995 stock_name:荣昌生物-B cur_price:92.65 current_ratio(annual):16.054 , stock_code:HK.80737 stock_name:湾区発展-R cur_price:2.8 current_ratio(annual):17.249 , stock_code:HK.00737 stock_name:湾区発展 cur_price:3.25 current_ratio(annual):17.249 , stock_code:HK.03939 stock_name:万国国际矿业 cur_price:2.22 current_ratio(annual):17.323 , stock_code:HK.01055 stock_name:中国南方航空股份 cur_price:5.17 current_ratio(annual):17.529 , stock_code:HK.02638 stock_name:港灯-SS cur_price:7.68 current_ratio(annual):21.255 , stock_code:HK.00670 stock_name:中国东方航空股份 cur_price:3.53 current_ratio(annual):25.194 , stock_code:HK.01952 stock_name:云顶新耀-B cur_price:69.5 current_ratio(annual):26.029 , stock_code:HK.00089 stock_name:大生地产 cur_price:4.22 current_ratio(annual):26.914 , stock_code:HK.00728 stock_name:中国电信 cur_price:2.81 current_ratio(annual):27.651 , stock_code:HK.01372 stock_name:比速科技 cur_price:5.1 current_ratio(annual):28.303 , stock_code:HK.00753 stock_name:中国国航 cur_price:6.38 current_ratio(annual):31.828 , stock_code:HK.01997 stock_name:九龙仓置业 cur_price:43.75 current_ratio(annual):33.239 , stock_code:HK.02158 stock_name:医渡科技 cur_price:39.0 current_ratio(annual):34.046 , stock_code:HK.02588 stock_name:中银航空租赁 cur_price:77.0 current_ratio(annual):34.531 , stock_code:HK.01330 stock_name:绿色動力环保 cur_price:3.36 current_ratio(annual):35.028 , stock_code:HK.01525 stock_name:建桥教育 cur_price:6.28 current_ratio(annual):36.989 , stock_code:HK.09908 stock_name:嘉兴燃气 cur_price:10.02 current_ratio(annual):37.848 , stock_code:HK.06078 stock_name:海吉亚医疗 cur_price:49.8 current_ratio(annual):39.0 , stock_code:HK.01071 stock_name:华电国际电力股份 cur_price:2.16 current_ratio(annual):39.507 , stock_code:HK.00357 stock_name:美兰空港 cur_price:34.15 current_ratio(annual):39.514 , stock_code:HK.00762 stock_name:中国联通 cur_price:5.15 current_ratio(annual):40.74 , stock_code:HK.01787 stock_name:山东黄金 cur_price:15.56 current_ratio(annual):41.604 , stock_code:HK.00902 stock_name:华能国际电力股份 cur_price:2.66 current_ratio(annual):42.919 , stock_code:HK.00934 stock_name:中石化冠德 cur_price:2.96 current_ratio(annual):43.361 , stock_code:HK.01117 stock_name:现代牧业 cur_price:2.3 current_ratio(annual):45.037 , stock_code:HK.00177 stock_name:江苏宁沪高速公路 cur_price:8.78 current_ratio(annual):45.93 , stock_code:HK.01379 stock_name:温岭工量刃具 cur_price:5.71 current_ratio(annual):46.774 , stock_code:HK.01876 stock_name:百威亚太 cur_price:22.5 current_ratio(annual):46.917 , stock_code:HK.01907 stock_name:中国旭阳集团 cur_price:4.38 current_ratio(annual):47.129 , stock_code:HK.02160 stock_name:心通医疗-B cur_price:15.54 current_ratio(annual):47.384 , stock_code:HK.00293 stock_name:国泰航空 cur_price:7.1 current_ratio(annual):47.983 , stock_code:HK.00694 stock_name:北京首都机场股份 cur_price:6.34 current_ratio(annual):47.985 , stock_code:HK.09922 stock_name:九毛九 cur_price:26.65 current_ratio(annual):48.278 , stock_code:HK.01083 stock_name:港华燃气 cur_price:3.39 current_ratio(annual):49.2 , stock_code:HK.00291 stock_name:华润啤酒 cur_price:58.0 current_ratio(annual):49.229 , stock_code:HK.00306 stock_name:冠忠巴士集团 cur_price:2.29 current_ratio(annual):49.769 ]
HK.08103
HMVOD视频
2.69
2.69
4.413
...
HK.00306
冠忠巴士集团
2.29
2.29
49.769
2
3
4
5
6
7
8
9
10
11
12
# Qot_StockFilter.proto
概要
条件スクリーニング
パラメータ
// 以下の6つの構造体(BaseFilter、AcumulateFilter、FinancialFilter、BaseData、AcumulateData、FinancialData)をご利用のユーザーはご注意ください。属性フィールド名「field」がC#のprotocol bufの予約関数名と競合するため、moomoo APIではバージョン3.18よりこのフィールド名を「fieldName」に変更します。対応するインターフェースで使用しているフィールド名を変更してください。
// シンプル属性フィルタ
message BaseFilter
{
required int32 fieldName = 1; // StockField シンプル属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
}
// 累積属性フィルタ
message AccumulateFilter
{
required int32 fieldName = 1; // AccumulateField 累積属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 days = 6; // 近几日,累积時間
}
// 財務属性フィルタ
message FinancialFilter
{
required int32 fieldName = 1; // FinancialField 財務属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 quarter = 6; // FinancialQuarter 決算累积時間
}
// パターンテクニカル指標属性フィルタ
message PatternFilter
{
required int32 fieldName = 1; // PatternField パターンテクニカル指標属性
required int32 klType = 2; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 3; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 consecutivePeriod = 4; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
// カスタムテクニカル指標属性フィルタ
message CustomIndicatorFilter
{
required int32 firstFieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required int32 secondFieldName = 2; // CustomIndicatorField カスタムテクニカル指標属性
required int32 relativePosition = 3; // RelativePosition 相対位置
optional double fieldValue = 4; // カスタム数値
required int32 klType = 5; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 6; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
repeated int32 firstFieldParaList = 7; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
repeated int32 secondFieldParaList = 8; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
optional int32 consecutivePeriod = 9; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
message C2S
{
required int32 begin = 1; // データ起始点
required int32 num = 2; // リクエストデータ個数,最大200
required int32 market= 3; // Qot_Common::QotMarket 株式市場。上海株と深セン株をサポートし、両者は区別されずA株市場を示します。
// 以下はフィルタ条件(任意フィールド)。未入力の場合はフィルタなし
optional Qot_Common.Security plate = 4; // セクター
repeated BaseFilter baseFilterList = 5; // シンプル指標フィルタ
repeated AccumulateFilter accumulateFilterList = 6; // 累積指標フィルタ。同一属性の累積フィルタ条件数の上限は 10 個
repeated FinancialFilter financialFilterList = 7; // 财务指標过滤器
repeated PatternFilter patternFilterList = 8; // 形態技术指標过滤器
repeated CustomIndicatorFilter customIndicatorFilterList = 9; // カスタムテクニカル指標フィルタ
}
message Request
{
required C2S c2s = 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
- 株式構造は~を参照: Security
- 市場タイプ参见 QotMarket
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- パターンテクニカル指標属性フィルタ条件は PatternField を参照
- 決算期間は FinancialQuarter を参照
- ソート方向は SortDir を参照
- 相対位置参见 RelativePosition
- ローソク足タイプ参见 KLType
- 戻り値
// シンプル属性データ
message BaseData
{
required int32 fieldName = 1; // StockField シンプル属性
required double value = 2;
}
// 累積属性データ
message AccumulateData
{
required int32 fieldName = 1; // AccumulateField 累積属性
required double value = 2;
required int32 days = 3; // 近几日,累积時間
}
// 財務属性データ
message FinancialData
{
required int32 fieldName = 1; // FinancialField 財務属性
required double value = 2;
required int32 quarter = 3; // FinancialQuarter 決算累积時間
}
// カスタムテクニカル指標属性データ
message CustomIndicatorData
{
required int32 fieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required double value = 2;
required int32 klType = 3; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
repeated int32 fieldParaList = 4; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
}
// 返される株式データ
message StockData
{
required Qot_Common.Security security = 1; // 株式
required string name = 2; // 銘柄名
repeated BaseData baseDataList = 3; // フィルタ後の簡易指標属性データ
repeated AccumulateData accumulateDataList = 4; // フィルタ後の累積指標属性データ
repeated FinancialData financialDataList = 5; // フィルタ後の財務指標属性データ
repeated CustomIndicatorData customIndicatorDataList = 6; // カスタムテクニカル指標属性データ
// CustomIndicatorFilter の firstFieldName と secondFieldName の数値はこのリスト内で個別に返される
}
message S2C
{
required bool lastPage = 1; // 最終ページかどうか。false:最終ページではなく、まだ返されていないレコードがある。true:最終ページ
required int32 allCount = 2; // この条件でリクエストされた全データの件数
repeated StockData dataList = 3; // 返される株式データリスト
}
message Response
{
required int32 retType = 1 [default = -400]; // RetType、戻り値
optional string retMsg = 2;
optional int32 errCode = 3;
optional S2C s2c = 4;
}
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
- 株式構造は~を参照: Security
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- 決算期間は FinancialQuarter を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- ローソク足タイプ参见 KLType
- API 呼び出し結果,構造は~を参照: RetType
プロトコル ID
3215
uint StockFilter(QotStockFilter.Request req);
virtual void OnReply_StockFilter(MMAPI_Conn client, uint nSerialNo, QotStockFilter.Response rsp);
概要
条件スクリーニング
パラメータ
// 以下の6つの構造体(BaseFilter、AcumulateFilter、FinancialFilter、BaseData、AcumulateData、FinancialData)をご利用のユーザーはご注意ください。属性フィールド名「field」がC#のprotocol bufの予約関数名と競合するため、moomoo APIではバージョン3.18よりこのフィールド名を「fieldName」に変更します。対応するインターフェースで使用しているフィールド名を変更してください。
// シンプル属性フィルタ
message BaseFilter
{
required int32 fieldName = 1; // StockField シンプル属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
}
// 累積属性フィルタ
message AccumulateFilter
{
required int32 fieldName = 1; // AccumulateField 累積属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 days = 6; // 近几日,累积時間
}
// 財務属性フィルタ
message FinancialFilter
{
required int32 fieldName = 1; // FinancialField 財務属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 quarter = 6; // FinancialQuarter 決算累积時間
}
// パターンテクニカル指標属性フィルタ
message PatternFilter
{
required int32 fieldName = 1; // PatternField パターンテクニカル指標属性
required int32 klType = 2; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 3; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 consecutivePeriod = 4; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
// カスタムテクニカル指標属性フィルタ
message CustomIndicatorFilter
{
required int32 firstFieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required int32 secondFieldName = 2; // CustomIndicatorField カスタムテクニカル指標属性
required int32 relativePosition = 3; // RelativePosition 相対位置
optional double fieldValue = 4; // カスタム数値
required int32 klType = 5; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 6; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
repeated int32 firstFieldParaList = 7; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
repeated int32 secondFieldParaList = 8; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
optional int32 consecutivePeriod = 9; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
message C2S
{
required int32 begin = 1; // データ起始点
required int32 num = 2; // リクエストデータ個数,最大200
required int32 market= 3; // Qot_Common::QotMarket 株式市場。上海株と深セン株をサポートし、両者は区別されずA株市場を示します。
// 以下はフィルタ条件(任意フィールド)。未入力の場合はフィルタなし
optional Qot_Common.Security plate = 4; // セクター
repeated BaseFilter baseFilterList = 5; // シンプル指標フィルタ
repeated AccumulateFilter accumulateFilterList = 6; // 累積指標フィルタ。同一属性の累積フィルタ条件数の上限は 10 個
repeated FinancialFilter financialFilterList = 7; // 财务指標过滤器
repeated PatternFilter patternFilterList = 8; // 形態技术指標过滤器
repeated CustomIndicatorFilter customIndicatorFilterList = 9; // カスタムテクニカル指標フィルタ
}
message Request
{
required C2S c2s = 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
- 株式構造は~を参照: Security
- 市場タイプ参见 QotMarket
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- パターンテクニカル指標属性フィルタ条件は PatternField を参照
- 決算期間は FinancialQuarter を参照
- ソート方向は SortDir を参照
- 相対位置参见 RelativePosition
- ローソク足タイプは KLType を参照
- 戻り値
// シンプル属性データ
message BaseData
{
required int32 fieldName = 1; // StockField シンプル属性
required double value = 2;
}
// 累積属性データ
message AccumulateData
{
required int32 fieldName = 1; // AccumulateField 累積属性
required double value = 2;
required int32 days = 3; // 近几日,累积時間
}
// 財務属性データ
message FinancialData
{
required int32 fieldName = 1; // FinancialField 財務属性
required double value = 2;
required int32 quarter = 3; // FinancialQuarter 決算累积時間
}
// カスタムテクニカル指標属性データ
message CustomIndicatorData
{
required int32 fieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required double value = 2;
required int32 klType = 3; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
repeated int32 fieldParaList = 4; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
}
// 返される株式データ
message StockData
{
required Qot_Common.Security security = 1; // 株式
required string name = 2; // 銘柄名
repeated BaseData baseDataList = 3; // フィルタ後の簡易指標属性データ
repeated AccumulateData accumulateDataList = 4; // フィルタ後の累積指標属性データ
repeated FinancialData financialDataList = 5; // フィルタ後の財務指標属性データ
repeated CustomIndicatorData customIndicatorDataList = 6; // カスタムテクニカル指標属性データ
// CustomIndicatorFilter の firstFieldName と secondFieldName の数値はこのリスト内で個別に返される
}
message S2C
{
required bool lastPage = 1; // 最終ページかどうか。false:最終ページではなく、まだ返されていないレコードがある。true:最終ページ
required int32 allCount = 2; // この条件でリクエストされた全データの件数
repeated StockData dataList = 3; // 返される株式データリスト
}
message Response
{
required int32 retType = 1 [default = -400]; // RetType、戻り値
optional string retMsg = 2;
optional int32 errCode = 3;
optional S2C s2c = 4;
}
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
- 株式構造は~を参照: Security
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- 決算期間は FinancialQuarter を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- ローソク足タイプ参见 KLType
- API 呼び出し結果,構造は~を参照: RetType
- Example
public class Program : MMSPI_Qot, MMSPI_Conn {
MMAPI_Qot qot = new MMAPI_Qot();
public Program() {
qot.SetClientInfo("csharp", 1); //クライアント情報の設定
qot.SetConnCallback(this); //接続コールバックの設定
qot.SetQotCallback(this); //取引コールバックの設定
}
public void Start() {
qot.InitConnect("127.0.0.1", (ushort)11111, false);
}
public void OnInitConnect(MMAPI_Conn client, long errCode, String desc)
{
Console.Write("Qot onInitConnect: ret={0} desc={1} connID={2}\n", errCode, desc, client.GetConnectID());
if (errCode != 0)
return;
QotStockFilter.BaseFilter filter = QotStockFilter.BaseFilter.CreateBuilder()
.SetFieldName(QotStockFilter.StockField.StockField_CurPrice)
.SetFilterMax(100)
.SetFilterMax(200)
.Build();
QotStockFilter.C2S c2s = QotStockFilter.C2S.CreateBuilder()
.SetBegin(0)
.SetNum(10)
.SetMarket((int)QotCommon.QotMarket.QotMarket_HK_Security)
.AddBaseFilterList(filter)
.Build();
QotStockFilter.Request req = QotStockFilter.Request.CreateBuilder().SetC2S(c2s).Build();
uint seqNo = qot.StockFilter(req);
Console.Write("Send QotStockFilter: {0}\n", seqNo);
}
public void OnDisconnect(MMAPI_Conn client, long errCode) {
Console.Write("Qot onDisConnect: {0}\n", errCode);
}
public void OnReply_StockFilter(MMAPI_Conn client, uint nSerialNo, QotStockFilter.Response rsp)
{
Console.Write("Reply: QotStockFilter: {0}\n", nSerialNo, rsp.ToString());
Console.Write("code: {0}, name: {1} \n", rsp.S2C.DataListList[0].Security.Code,
rsp.S2C.DataListList[0].Name);
}
public static void Main(String[] args) {
MMAPI.Init();
Program qot = new Program();
qot.Start();
while (true)
Thread.Sleep(1000 * 600);
}
}
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
- Output
Qot onInitConnect: ret=0 desc= connID=6825721743616225277
Send QotStockFilter: 3
Reply: QotStockFilter: 3
code: 00376, name: 云锋金融
2
3
4
int stockFilter(QotStockFilter.Request req);
void onReply_StockFilter(MMAPI_Conn client, int nSerialNo, QotStockFilter.Response rsp);
概要
条件スクリーニング
パラメータ
// 以下の6つの構造体(BaseFilter、AcumulateFilter、FinancialFilter、BaseData、AcumulateData、FinancialData)をご利用のユーザーはご注意ください。属性フィールド名「field」がC#のprotocol bufの予約関数名と競合するため、moomoo APIではバージョン3.18よりこのフィールド名を「fieldName」に変更します。対応するインターフェースで使用しているフィールド名を変更してください。
// シンプル属性フィルタ
message BaseFilter
{
required int32 fieldName = 1; // StockField シンプル属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
}
// 累積属性フィルタ
message AccumulateFilter
{
required int32 fieldName = 1; // AccumulateField 累積属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 days = 6; // 近几日,累积時間
}
// 財務属性フィルタ
message FinancialFilter
{
required int32 fieldName = 1; // FinancialField 財務属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 quarter = 6; // FinancialQuarter 決算累积時間
}
// パターンテクニカル指標属性フィルタ
message PatternFilter
{
required int32 fieldName = 1; // PatternField パターンテクニカル指標属性
required int32 klType = 2; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 3; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 consecutivePeriod = 4; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
// カスタムテクニカル指標属性フィルタ
message CustomIndicatorFilter
{
required int32 firstFieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required int32 secondFieldName = 2; // CustomIndicatorField カスタムテクニカル指標属性
required int32 relativePosition = 3; // RelativePosition 相対位置
optional double fieldValue = 4; // カスタム数値
required int32 klType = 5; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 6; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
repeated int32 firstFieldParaList = 7; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
repeated int32 secondFieldParaList = 8; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
optional int32 consecutivePeriod = 9; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
message C2S
{
required int32 begin = 1; // データ起始点
required int32 num = 2; // リクエストデータ個数,最大200
required int32 market= 3; // Qot_Common::QotMarket 株式市場。上海株と深セン株をサポートし、両者は区別されずA株市場を示します。
// 以下はフィルタ条件(任意フィールド)。未入力の場合はフィルタなし
optional Qot_Common.Security plate = 4; // セクター
repeated BaseFilter baseFilterList = 5; // シンプル指標フィルタ
repeated AccumulateFilter accumulateFilterList = 6; // 累積指標フィルタ。同一属性の累積フィルタ条件数の上限は 10 個
repeated FinancialFilter financialFilterList = 7; // 财务指標过滤器
repeated PatternFilter patternFilterList = 8; // 形態技术指標过滤器
repeated CustomIndicatorFilter customIndicatorFilterList = 9; // カスタムテクニカル指標フィルタ
}
message Request
{
required C2S c2s = 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
- 株式構造は~を参照: Security
- 市場タイプ参见 QotMarket
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- パターンテクニカル指標属性フィルタ条件は PatternField を参照
- 決算期間は FinancialQuarter を参照
- ソート方向は SortDir を参照
- 相対位置参见 RelativePosition
- ローソク足タイプは KLType を参照
- 戻り値
// シンプル属性データ
message BaseData
{
required int32 fieldName = 1; // StockField シンプル属性
required double value = 2;
}
// 累積属性データ
message AccumulateData
{
required int32 fieldName = 1; // AccumulateField 累積属性
required double value = 2;
required int32 days = 3; // 近几日,累积時間
}
// 財務属性データ
message FinancialData
{
required int32 fieldName = 1; // FinancialField 財務属性
required double value = 2;
required int32 quarter = 3; // FinancialQuarter 決算累积時間
}
// カスタムテクニカル指標属性データ
message CustomIndicatorData
{
required int32 fieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required double value = 2;
required int32 klType = 3; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
repeated int32 fieldParaList = 4; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
}
// 返される株式データ
message StockData
{
required Qot_Common.Security security = 1; // 株式
required string name = 2; // 銘柄名
repeated BaseData baseDataList = 3; // フィルタ後の簡易指標属性データ
repeated AccumulateData accumulateDataList = 4; // フィルタ後の累積指標属性データ
repeated FinancialData financialDataList = 5; // フィルタ後の財務指標属性データ
repeated CustomIndicatorData customIndicatorDataList = 6; // カスタムテクニカル指標属性データ
// CustomIndicatorFilter の firstFieldName と secondFieldName の数値はこのリスト内で個別に返される
}
message S2C
{
required bool lastPage = 1; // 最終ページかどうか。false:最終ページではなく、まだ返されていないレコードがある。true:最終ページ
required int32 allCount = 2; // この条件でリクエストされた全データの件数
repeated StockData dataList = 3; // 返される株式データリスト
}
message Response
{
required int32 retType = 1 [default = -400]; // RetType、戻り値
optional string retMsg = 2;
optional int32 errCode = 3;
optional S2C s2c = 4;
}
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
- 株式構造は~を参照: Security
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- 決算期間は FinancialQuarter を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- ローソク足タイプ参见 KLType
- API 呼び出し結果,構造は~を参照: RetType
- Example
public class QotDemo implements MMSPI_Qot, MMSPI_Conn {
MMAPI_Conn_Qot qot = new MMAPI_Conn_Qot();
public QotDemo() {
qot.setClientInfo("javaclient", 1); //クライアント情報の設定
qot.setConnSpi(this); //接続コールバックの設定
qot.setQotSpi(this); //取引コールバックの設定
}
public void start() {
qot.initConnect("127.0.0.1", (short)11111, false);
}
@Override
public void onInitConnect(MMAPI_Conn client, long errCode, String desc)
{
System.out.printf("Qot onInitConnect: ret=%b desc=%s connID=%d\n", errCode, desc, client.getConnectID());
if (errCode != 0)
return;
QotStockFilter.BaseFilter filter = QotStockFilter.BaseFilter.newBuilder()
.setFieldName(QotStockFilter.StockField.StockField_CurPrice_VALUE)
.setFilterMax(100)
.setFilterMax(200)
.build();
QotStockFilter.C2S c2s = QotStockFilter.C2S.newBuilder()
.setBegin(0)
.setNum(10)
.setMarket(QotCommon.QotMarket.QotMarket_HK_Security_VALUE)
.addBaseFilterList(filter)
.build();
QotStockFilter.Request req = QotStockFilter.Request.newBuilder().setC2S(c2s).build();
int seqNo = qot.stockFilter(req);
System.out.printf("Send QotStockFilter: %d\n", seqNo);
}
@Override
public void onDisconnect(MMAPI_Conn client, long errCode) {
System.out.printf("Qot onDisConnect: %d\n", errCode);
}
@Override
public void onReply_StockFilter(MMAPI_Conn client, int nSerialNo, QotStockFilter.Response rsp) {
if (rsp.getRetType() != 0) {
System.out.printf("QotStockFilter failed: %s\n", rsp.getRetMsg());
}
else {
try {
String json = JsonFormat.printer().print(rsp);
System.out.printf("Receive QotStockFilter: %s\n", json);
} catch (InvalidProtocolBufferException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
MMAPI.init();
QotDemo qot = new QotDemo();
qot.start();
while (true) {
try {
Thread.sleep(1000 * 600);
} catch (InterruptedException exc) {
}
}
}
}
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
61
62
63
64
65
66
67
68
69
70
- Output
Send QotStockFilter: 2
Receive QotStockFilter: {
"retType": 0,
"retMsg": "",
"errCode": 0,
"s2c": {
"lastPage": false,
"allCount": 2431,
"dataList": [{
"security": {
"market": 1,
"code": "08560"
},
"name": "世大控股"
}, ... {
"security": {
"market": 1,
"code": "02171"
},
"name": "科济药业-B"
}]
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
moomoo::u32_t StockFilter(const Qot_StockFilter::Request &stReq);
virtual void OnReply_StockFilter(moomoo::u32_t nSerialNo, const Qot_StockFilter::Response &stRsp) = 0;
概要
条件スクリーニング
パラメータ
// 以下の6つの構造体(BaseFilter、AcumulateFilter、FinancialFilter、BaseData、AcumulateData、FinancialData)をご利用のユーザーはご注意ください。属性フィールド名「field」がC#のprotocol bufの予約関数名と競合するため、moomoo APIではバージョン3.18よりこのフィールド名を「fieldName」に変更します。対応するインターフェースで使用しているフィールド名を変更してください。
// シンプル属性フィルタ
message BaseFilter
{
required int32 fieldName = 1; // StockField シンプル属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
}
// 累積属性フィルタ
message AccumulateFilter
{
required int32 fieldName = 1; // AccumulateField 累積属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 days = 6; // 近几日,累积時間
}
// 財務属性フィルタ
message FinancialFilter
{
required int32 fieldName = 1; // FinancialField 財務属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 quarter = 6; // FinancialQuarter 決算累积時間
}
// パターンテクニカル指標属性フィルタ
message PatternFilter
{
required int32 fieldName = 1; // PatternField パターンテクニカル指標属性
required int32 klType = 2; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 3; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 consecutivePeriod = 4; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
// カスタムテクニカル指標属性フィルタ
message CustomIndicatorFilter
{
required int32 firstFieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required int32 secondFieldName = 2; // CustomIndicatorField カスタムテクニカル指標属性
required int32 relativePosition = 3; // RelativePosition 相対位置
optional double fieldValue = 4; // カスタム数値
required int32 klType = 5; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 6; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
repeated int32 firstFieldParaList = 7; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
repeated int32 secondFieldParaList = 8; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
optional int32 consecutivePeriod = 9; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
message C2S
{
required int32 begin = 1; // データ起始点
required int32 num = 2; // リクエストデータ個数,最大200
required int32 market= 3; // Qot_Common::QotMarket 株式市場。上海株と深セン株をサポートし、両者は区別されずA株市場を示します。
// 以下はフィルタ条件(任意フィールド)。未入力の場合はフィルタなし
optional Qot_Common.Security plate = 4; // セクター
repeated BaseFilter baseFilterList = 5; // シンプル指標フィルタ
repeated AccumulateFilter accumulateFilterList = 6; // 累積指標フィルタ。同一属性の累積フィルタ条件数の上限は 10 個
repeated FinancialFilter financialFilterList = 7; // 财务指標过滤器
repeated PatternFilter patternFilterList = 8; // 形態技术指標过滤器
repeated CustomIndicatorFilter customIndicatorFilterList = 9; // カスタムテクニカル指標フィルタ
}
message Request
{
required C2S c2s = 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
- 株式構造は~を参照: Security
- 市場タイプ参见 QotMarket
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- パターンテクニカル指標属性フィルタ条件は PatternField を参照
- 決算期間は FinancialQuarter を参照
- ソート方向は SortDir を参照
- 相対位置参见 RelativePosition
- ローソク足タイプは KLType を参照
- 戻り値
// シンプル属性データ
message BaseData
{
required int32 fieldName = 1; // StockField シンプル属性
required double value = 2;
}
// 累積属性データ
message AccumulateData
{
required int32 fieldName = 1; // AccumulateField 累積属性
required double value = 2;
required int32 days = 3; // 近几日,累积時間
}
// 財務属性データ
message FinancialData
{
required int32 fieldName = 1; // FinancialField 財務属性
required double value = 2;
required int32 quarter = 3; // FinancialQuarter 決算累积時間
}
// カスタムテクニカル指標属性データ
message CustomIndicatorData
{
required int32 fieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required double value = 2;
required int32 klType = 3; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
repeated int32 fieldParaList = 4; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
}
// 返される株式データ
message StockData
{
required Qot_Common.Security security = 1; // 株式
required string name = 2; // 銘柄名
repeated BaseData baseDataList = 3; // フィルタ後の簡易指標属性データ
repeated AccumulateData accumulateDataList = 4; // フィルタ後の累積指標属性データ
repeated FinancialData financialDataList = 5; // フィルタ後の財務指標属性データ
repeated CustomIndicatorData customIndicatorDataList = 6; // カスタムテクニカル指標属性データ
// CustomIndicatorFilter の firstFieldName と secondFieldName の数値はこのリスト内で個別に返される
}
message S2C
{
required bool lastPage = 1; // 最終ページかどうか。false:最終ページではなく、まだ返されていないレコードがある。true:最終ページ
required int32 allCount = 2; // この条件でリクエストされた全データの件数
repeated StockData dataList = 3; // 返される株式データリスト
}
message Response
{
required int32 retType = 1 [default = -400]; // RetType、戻り値
optional string retMsg = 2;
optional int32 errCode = 3;
optional S2C s2c = 4;
}
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
- 株式構造は~を参照: Security
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- 決算期間は FinancialQuarter を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- ローソク足タイプ参见 KLType
- API 呼び出し結果,構造は~を参照: RetType
- Example
class Program : public MMSPI_Qot, public MMSPI_Trd, public MMSPI_Conn
{
public:
Program() {
m_pQotApi = MMAPI::CreateQotApi();
m_pQotApi->RegisterQotSpi(this);
m_pQotApi->RegisterConnSpi(this);
}
~Program() {
if (m_pQotApi != nullptr)
{
m_pQotApi->UnregisterQotSpi();
m_pQotApi->UnregisterConnSpi();
MMAPI::ReleaseQotApi(m_pQotApi);
m_pQotApi = nullptr;
}
}
void Start() {
m_pQotApi->InitConnect("127.0.0.1", 11111, false);
}
virtual void OnInitConnect(MMAPI_Conn* pConn, moomoo::i64_t nErrCode, const char* strDesc) {
cout << "connect" << endl;
// パケット生成
Qot_StockFilter::Request req;
Qot_StockFilter::C2S *c2s = req.mutable_c2s();
c2s->set_begin(0);
c2s->set_num(50);
c2s->set_market(1);
m_StockFilterSerialNo = m_pQotApi->StockFilter(req);
cout << "Request StockFilter SerialNo: " << m_StockFilterSerialNo << endl;
}
virtual void OnReply_StockFilter(moomoo::u32_t nSerialNo, const Qot_StockFilter::Response &stRsp){
if(nSerialNo == m_StockFilterSerialNo)
{
cout << "OnReply_StockFilter SerialNo: " << nSerialNo << endl;
// 内部構造を解析して出力
// ProtoBufToBodyData と UTF8ToLocal 関数の定義は Sample の tool.h ファイルを参照
string resp_str;
ProtoBufToBodyData(stRsp, resp_str);
cout << UTF8ToLocal(resp_str) << endl;
}
}
protected:
MMAPI_Qot *m_pQotApi;
moomoo::u32_t m_StockFilterSerialNo;
};
int32_t main(int32_t argc, char** argv)
{
MMAPI::Init();
{
Program program;
program.Start();
getchar();
}
protobuf::ShutdownProtobufLibrary();
MMAPI::UnInit();
return 0;
}
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
61
62
63
64
65
66
67
68
69
70
71
- Output
connect
Request StockFilter SerialNo: 4
OnReply_StockFilter SerialNo: 4
{
"retType": 0,
"retMsg": "",
"errCode": 0,
"s2c": {
"lastPage": false,
"allCount": 2426,
"dataList": [
{
"security": {
"market": 1,
"code": "02930"
},
"name": "丝路物流控股"
},
...
{
"security": {
"market": 1,
"code": "01440"
},
"name": "DEYUN HOLDING"
}
]
}
}
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
StockFilter(req);
概要
条件スクリーニング
パラメータ
// 以下の6つの構造体(BaseFilter、AcumulateFilter、FinancialFilter、BaseData、AcumulateData、FinancialData)をご利用のユーザーはご注意ください。属性フィールド名「field」がC#のprotocol bufの予約関数名と競合するため、moomoo APIではバージョン3.18よりこのフィールド名を「fieldName」に変更します。対応するインターフェースで使用しているフィールド名を変更してください。
// シンプル属性フィルタ
message BaseFilter
{
required int32 fieldName = 1; // StockField シンプル属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
}
// 累積属性フィルタ
message AccumulateFilter
{
required int32 fieldName = 1; // AccumulateField 累積属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 days = 6; // 近几日,累积時間
}
// 財務属性フィルタ
message FinancialFilter
{
required int32 fieldName = 1; // FinancialField 財務属性
optional double filterMin = 2; // 範囲下限(閉区間)、未指定の場合は下限 -∞
optional double filterMax = 3; // 範囲上限(閉区間)、未指定の場合は上限 +∞
optional bool isNoFilter = 4; // このフィールドでフィルタが不要かどうか。True:フィルタしない、False:フィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 sortDir = 5; // SortDir ソート方向、デフォルトはソートなし
required int32 quarter = 6; // FinancialQuarter 決算累积時間
}
// パターンテクニカル指標属性フィルタ
message PatternFilter
{
required int32 fieldName = 1; // PatternField パターンテクニカル指標属性
required int32 klType = 2; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 3; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
optional int32 consecutivePeriod = 4; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
// カスタムテクニカル指標属性フィルタ
message CustomIndicatorFilter
{
required int32 firstFieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required int32 secondFieldName = 2; // CustomIndicatorField カスタムテクニカル指標属性
required int32 relativePosition = 3; // RelativePosition 相対位置
optional double fieldValue = 4; // カスタム数値
required int32 klType = 5; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
optional bool isNoFilter = 6; // このフィールドでフィルタが不要かどうか。True はフィルタしない、False はフィルタする。未指定の場合はデフォルトでフィルタしない
repeated int32 firstFieldParaList = 7; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
repeated int32 secondFieldParaList = 8; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
optional int32 consecutivePeriod = 9; // 連続周期(consecutivePeriod)すべてが条件を満たすデータをフィルタ。入力範囲は [1,12]
}
message C2S
{
required int32 begin = 1; // データ起始点
required int32 num = 2; // リクエストデータ個数,最大200
required int32 market= 3; // Qot_Common::QotMarket 株式市場。上海株と深セン株をサポートし、両者は区別されずA株市場を示します。
// 以下はフィルタ条件(任意フィールド)。未入力の場合はフィルタなし
optional Qot_Common.Security plate = 4; // セクター
repeated BaseFilter baseFilterList = 5; // シンプル指標フィルタ
repeated AccumulateFilter accumulateFilterList = 6; // 累積指標フィルタ。同一属性の累積フィルタ条件数の上限は 10 個
repeated FinancialFilter financialFilterList = 7; // 财务指標过滤器
repeated PatternFilter patternFilterList = 8; // 形態技术指標过滤器
repeated CustomIndicatorFilter customIndicatorFilterList = 9; // カスタムテクニカル指標フィルタ
}
message Request
{
required C2S c2s = 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
- 株式構造は~を参照: Security
- 市場タイプ参见 QotMarket
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- パターンテクニカル指標属性フィルタ条件は PatternField を参照
- 決算期間は FinancialQuarter を参照
- ソート方向は SortDir を参照
- 相対位置参见 RelativePosition
- ローソク足タイプは KLType を参照
- 戻り値
// シンプル属性データ
message BaseData
{
required int32 fieldName = 1; // StockField シンプル属性
required double value = 2;
}
// 累積属性データ
message AccumulateData
{
required int32 fieldName = 1; // AccumulateField 累積属性
required double value = 2;
required int32 days = 3; // 近几日,累积時間
}
// 財務属性データ
message FinancialData
{
required int32 fieldName = 1; // FinancialField 財務属性
required double value = 2;
required int32 quarter = 3; // FinancialQuarter 決算累积時間
}
// カスタムテクニカル指標属性データ
message CustomIndicatorData
{
required int32 fieldName = 1; // CustomIndicatorField カスタムテクニカル指標属性
required double value = 2;
required int32 klType = 3; // Qot_Common.KLType、ローソク足タイプ。K_60M、K_DAY、K_WEEK、K_MON の4種類の時間周期のみ対応
repeated int32 fieldParaList = 4; // カスタム指標パラメータ。指標タイプに応じてパラメータを指定:1. MA:[移動平均周期] 2.EMA:[指数移動平均周期] 3.RSI:[RSI 指標周期] 4.MACD:[短期移動平均線値, 長期移動平均線値, DIF値] 5.BOLL:[移動平均線周期, 偏差値] 6.KDJ:[RSV 周期, K 値算出周期, D 値算出周期]
}
// 返される株式データ
message StockData
{
required Qot_Common.Security security = 1; // 株式
required string name = 2; // 銘柄名
repeated BaseData baseDataList = 3; // フィルタ後の簡易指標属性データ
repeated AccumulateData accumulateDataList = 4; // フィルタ後の累積指標属性データ
repeated FinancialData financialDataList = 5; // フィルタ後の財務指標属性データ
repeated CustomIndicatorData customIndicatorDataList = 6; // カスタムテクニカル指標属性データ
// CustomIndicatorFilter の firstFieldName と secondFieldName の数値はこのリスト内で個別に返される
}
message S2C
{
required bool lastPage = 1; // 最終ページかどうか。false:最終ページではなく、まだ返されていないレコードがある。true:最終ページ
required int32 allCount = 2; // この条件でリクエストされた全データの件数
repeated StockData dataList = 3; // 返される株式データリスト
}
message Response
{
required int32 retType = 1 [default = -400]; // RetType、戻り値
optional string retMsg = 2;
optional int32 errCode = 3;
optional S2C s2c = 4;
}
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
- 株式構造は~を参照: Security
- シンプル属性フィルタ条件は StockField を参照
- 累積属性フィルタ条件は AccumulateField を参照
- 財務属性フィルタ条件は FinancialField を参照
- 決算期間は FinancialQuarter を参照
- カスタムテクニカル指標属性フィルタ条件は CustomIndicatorField を参照
- ローソク足タイプ参见 KLType
- API 呼び出し結果,構造は~を参照: RetType
- Example
import mmWebsocket from "moomoo-api";
import { mmCmdID } from "moomoo-api";
import { Common, Qot_Common } from "moomoo-api/proto";
import beautify from "js-beautify";
function QotStockFilter(){
const { RetType } = Common
const { QotMarket } = Qot_Common
let [addr, port, enable_ssl, key] = ["127.0.0.1", 33333, false, '7522027ccf5a06b1'];
let websocket = new mmWebsocket();
websocket.onlogin = (ret, msg)=>{
if (ret) { // ログイン成功
const req = {
c2s: {
begin: 0,
num: 2,
market: QotMarket.QotMarket_HK_Security,
},
};
websocket.StockFilter(req)
.then((res) => {
let { errCode, retMsg, retType,s2c } = res
console.log("StockFilter: errCode %d, retMsg %s, retType %d", errCode, retMsg, retType);
if(retType == RetType.RetType_Succeed){
let data = beautify(JSON.stringify(s2c), {
indent_size: 2,
space_in_empty_paren: true,
});
console.log(data);
}
})
.catch((error) => {
console.log("error:", error);
});
} else {
console.log("error", msg);
}
};
websocket.start(addr, port, enable_ssl, key);
//相場接続をクローズ。使用後は接続をクローズしてください。不要なリソース占有を防ぎます
//OpenD は最大 128 接続に制限されています
//1 ページまたは 1 プロジェクトで 1 接続を維持することも可能。ここではサンプルとしてリクエストごとに 1 接続を作成
setTimeout(()=>{
websocket.stop();
console.log("stop");
}, 5000); // 5 秒後に切断
}
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
- Output
StockFilter: errCode 0, retMsg , retType 0
{
"lastPage": false,
"allCount": 2436,
"dataList": [{
"security": {
"market": 1,
"code": "08579"
},
"name": "万亚企业控股"
}, {
"security": {
"market": 1,
"code": "09869"
},
"name": "海伦司"
}]
}
stop
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ご注意
- サブセクターリスト取得関数 でサブセクターコードを取得します。条件スクリーニングに対応するセクターは以下の通りです
- 香港株の業種セクターとテーマセクター。
- 米国株の業種セクター
- A株の業種セクター、テーマセクター、地域セクター
- 対応するセクター指数コード
コード 説明 HK.Motherboard 香港株メインボード HK.GEM 香港株GEM(成長企業市場) HK.BK1911 H株メインボード HK.BK1912 H株GEM(成長企業市場) US.NYSE ニューヨーク証券取引所 US.AMEX アメリカン証券取引所 US.NASDAQ ナスダック SH.3000000 上海メインボード SZ.3000001 深センメインボード SZ.3000004 深セン創業板(ChiNext)
APIレート制限
- 30秒以内に条件スクリーニングAPIを最大10回までリクエスト可能です
- 1ページあたりのフィルタ結果は最大200件です
- フィルタ条件は250個以下を推奨します。超過すると「業務処理タイムアウト」が発生する場合があります
- 累積属性の同一フィルタ条件数の上限は10個です
- 「最新値」などの動的データをソートフィールドとして使用する場合、複数ページの取得間隔中にソート順が変わる場合があります
- 異なるタイプの指標間の比較には対応していません。同じタイプの指標間でのみ比較関係を構築できます。異なるタイプの指標間の比較はエラーになります。例:MA5とMA10は比較可能。MA5とEMA10は比較不可。
- カスタム指標属性の同一タイプのフィルタ条件数の上限は10個です
- 基本属性、財務属性、パターン属性では同一フィールドに対するフィルタ条件の重複指定に対応していません
- 条件スクリーニングは米国株のプレマーケット・アフターマーケット・ナイトセッションに対応していません。フィルタ結果はすべて立会時間中のデータで返されます
← 取得先物契約情報 取得セクター内銘柄リスト →