# 取得スナップショット
- Python
- Proto
- C#
- Java
- C++
- JavaScript
get_market_snapshot(code_list)
概要
スナップショットデータの取得
パラメータ
パラメータ 型 説明 code_list list 銘柄コードリスト 1 回のリクエストで最大 400 銘柄まで
list 内の要素の型は str
戻り値
パラメータ 型 説明 ret RET_CODE API呼び出し結果 data pd.DataFrame ret == RET_OK の場合、株式スナップショットデータ str ret != RET_OK の場合、エラーの説明を返す - 株式スナップショットデータフォーマットは以下の通りです:
フィールド タイプ 説明 code str 銘柄コード name str 銘柄名 update_time str 現在値更新時間 フォーマット:yyyy-MM-dd HH:mm:ss
香港株と A 株市場のデフォルトは北京時間、米国株市場のデフォルトは米国東部時間last_price float 最新価格 open_price float 今日始値 high_price float 高値 low_price float 安値 prev_close_price float 昨終値格 volume int 出来高 turnover float 売買代金 turnover_rate float 売買回転率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますsuspension bool かどうか売買停止 True:売買停止中listing_date str 上場日 フォーマット:yyyy-MM-ddequity_valid bool 正株かどうか このフィールドが True の場合、以下の正株関連フィールドに有効な値が入りますissued_shares int 総株式数 total_market_val float 時価総額 単位:元net_asset int 純資産 net_profit int 純利益 earning_per_share float EPS outstanding_shares int 流通株式数 net_asset_per_share float 一株当たり純資産 circular_market_val float 流通時価総額 単位:元ey_ratio float 益回り このフィールドは比率フィールドで、デフォルトでは % を表示しませんpe_ratio float PER このフィールドは比率フィールドで、デフォルトでは % を表示しませんpb_ratio float PBR このフィールドは比率フィールドで、デフォルトでは % を表示しませんpe_ttm_ratio float PER TTM このフィールドは比率フィールドで、デフォルトでは % を表示しませんdividend_ttm float 配当金 TTM,配当 dividend_ratio_ttm float 配当利回り TTM このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますdividend_lfy float 配当金 LFY,上一年度配当 dividend_lfy_ratio float 配当利回り LFY このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますstock_owner str ワラントが属する正株のコード、またはオプションの原資産株コード wrt_valid bool ワラントかどうか このフィールドが True の場合、以下のワラント関連フィールドに有効な値が入りますwrt_conversion_ratio float 換株比率 wrt_type WrtType ワラントタイプ wrt_strike_price float 行使価格 wrt_maturity_date str フォーマット化ワラント到期時間 wrt_end_trade str フォーマット化ワラント最后取引時間 wrt_leverage float レバレッジ比率 単位:倍wrt_ipop float インザマネー/アウトオブザマネー このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますwrt_break_even_point float 損益分岐点 wrt_conversion_price float 換株価格 wrt_price_recovery_ratio float 正株の回収価格までの距離 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますwrt_score float ワラント総合スコア wrt_code str ワラントに対応する正株(このフィールドは廃止済みです。変更先: stock_owner) wrt_recovery_price float ワラント回収価格 wrt_street_vol float ワラント街貨量 wrt_issue_vol float ワラント発行量 wrt_street_ratio float ワラント街貨比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますwrt_delta float ワラントデルタ値 wrt_implied_volatility float ワラントIV(インプライドボラティリティ) wrt_premium float ワラントプレミアム このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますwrt_upper_strike_price float 上限価 インラインワラントのみこのフィールドに対応wrt_lower_strike_price float 下限価 インラインワラントのみこのフィールドに対応wrt_inline_price_status PriceType 界内/界外 インラインワラントのみこのフィールドに対応wrt_issuer_code str 発行体コード option_valid bool オプションかどうか このフィールドが True の場合、以下のオプション関連フィールドに有効な値が入りますoption_type OptionType オプションタイプ strike_time str オプション行使日 フォーマット:yyyy-MM-dd
香港株と A 株市場のデフォルトは北京時間、米国株市場のデフォルトは米国東部時間option_strike_price float 行使価格 option_contract_size float 1 契約あたりの株数 option_open_interest int 未決済建玉数 option_implied_volatility float IV(インプライドボラティリティ) option_premium float プレミアム option_delta float グリークス Delta option_gamma float グリークス Gamma option_vega float グリークス Vega option_theta float グリークス Theta option_rho float グリークス Rho index_option_type IndexOptionType 指数オプションタイプ option_net_open_interest int ネット未決済建玉数 香港株オプションのみ適用option_expiry_date_distance int 距离満期日天数 負の数は満期済みを示しますoption_contract_nominal_value float 契約想定元本 香港株オプションのみ適用option_owner_lot_multiplier float 相等正株手数 指数オプションにはこのフィールドはありません,香港株オプションのみ適用option_area_type OptionAreaType オプションタイプ(按行權時間) option_contract_multiplier float 契約乗数 plate_valid bool セクタータイプかどうか このフィールドが True の場合、以下のセクター関連フィールドに有効な値が入りますplate_raise_count int セクタータイプ上涨支数 plate_fall_count int セクタータイプ下跌支数 plate_equal_count int セクタータイプ平盤支数 index_valid bool 指数タイプかどうか このフィールドが True の場合、以下の指数関連フィールドに有効な値が入りますindex_raise_count int 指数タイプ上涨支数 index_fall_count int 指数タイプ下跌支数 index_equal_count int 指数タイプ平盤支数 lot_size int 1手あたりの株数。株式オプションの場合は1枚あたりの株数 、先物の場合は契約乗数指数オプションにはこのフィールドはありませんprice_spread float 現在の上方向の板情報スプレッド 板情報データの最良売り気配の隣接値幅における気配値差ask_price float 売値 bid_price float 買値 ask_vol float 売り数量 bid_vol float 買い数量 enable_margin bool 信用買い可能かどうか(廃止済み) をご利用ください 信用取引データ取得 API で取得してくださいmortgage_ratio float 株式担保率(廃止済み) long_margin_initial_ratio float 信用買い初期証拠金率(廃止済み) をご利用ください 信用取引データ取得 API で取得してくださいenable_short_sell bool 空売り可能かどうか(廃止済み) をご利用ください 信用取引データ取得 API で取得してくださいshort_sell_rate float 空売り参考利率(廃止済み) をご利用ください 信用取引データ取得 API で取得してくださいshort_available_volume int 残りの空売り可能数量(廃止済み) をご利用ください 信用取引データ取得 API で取得してくださいshort_margin_initial_ratio float 空売り(信用売り)初期証拠金率(廃止済み) をご利用ください 信用取引データ取得 API で取得してくださいsec_status SecurityStatus 株式状態 amplitude float 振幅 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますavg_price float 平均価 bid_ask_ratio float 委託比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますvolume_ratio float 出来高比率 highest52weeks_price float 52 周高値 lowest52weeks_price float 52 周安値 highest_history_price float 過去高値 lowest_history_price float 過去安値 pre_price float プレマーケット価格 pre_high_price float プレマーケット高値 pre_low_price float プレマーケット安値 pre_volume int プレマーケット出来高 pre_turnover float プレマーケット売買代金 pre_change_val float プレマーケット騰落額 pre_change_rate float プレマーケット騰落率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますpre_amplitude float プレマーケット振幅 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますafter_price float アフターマーケット価格 after_high_price float アフターマーケット高値 after_low_price float アフターマーケット安値 after_volume int アフターマーケット出来高 科創板はこのデータに対応していますafter_turnover float アフターマーケット売買代金 科創板はこのデータに対応していますafter_change_val float アフターマーケット騰落額 after_change_rate float アフターマーケット騰落率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますafter_amplitude float アフターマーケット振幅 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますovernight_price float 夜間取引価格 overnight_high_price float 夜間取引高値 overnight_low_price float 夜間取引安値 overnight_volume int 夜間取引出来高 overnight_turnover float 夜間取引売買代金 overnight_change_val float 夜間取引騰落額 overnight_change_rate float 夜間取引騰落率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますovernight_amplitude float 夜間取引振幅 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますfuture_valid bool かどうか先物 future_last_settle_price float 前日決済値 future_position float 建玉数 future_position_change float 日次建玉変動 future_main_contract bool かどうか主連契約 future_last_trade_time str 最后取引時間 主連、当月、翌月等の先物にはこのフィールドはありませんtrust_valid bool かどうか基金 trust_dividend_yield float 配当利回り このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますtrust_aum float 資産規模 単位:元trust_outstanding_units int 総発行口数 trust_netAssetValue float 基準価額 trust_premium float プレミアム このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますtrust_assetClass AssetClass 資産種別
- 株式スナップショットデータフォーマットは以下の通りです:
Example
from futu import *
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
ret, data = quote_ctx.get_market_snapshot(['HK.00700', 'US.AAPL'])
if ret == RET_OK:
print(data)
print(data['code'][0]) # 最初のレコードの銘柄コードを取得
print(data['code'].values.tolist()) # list に変換
else:
print('error:', data)
quote_ctx.close() # 使用後は接続をクローズしてください。接続数の枯渇を防止します。
2
3
4
5
6
7
8
9
10
11
- Output
code name update_time last_price open_price high_price low_price prev_close_price volume turnover turnover_rate suspension listing_date lot_size price_spread stock_owner ask_price bid_price ask_vol bid_vol enable_margin mortgage_ratio long_margin_initial_ratio enable_short_sell short_sell_rate short_available_volume short_margin_initial_ratio amplitude avg_price bid_ask_ratio volume_ratio highest52weeks_price lowest52weeks_price highest_history_price lowest_history_price close_price_5min after_volume after_turnover sec_status equity_valid issued_shares total_market_val net_asset net_profit earning_per_share outstanding_shares circular_market_val net_asset_per_share ey_ratio pe_ratio pb_ratio pe_ttm_ratio dividend_ttm dividend_ratio_ttm dividend_lfy dividend_lfy_ratio wrt_valid wrt_conversion_ratio wrt_type wrt_strike_price wrt_maturity_date wrt_end_trade wrt_recovery_price wrt_street_vol \
0 HK.00700 腾讯控股 2025-04-07 16:09:07 435.40 441.80 462.40 431.00 497.80 123364114 5.499476e+10 1.341 False 2004-06-16 100 0.20 NaN 435.4 435.20 281300 17300 NaN NaN NaN NaN NaN NaN NaN 6.308 445.792 -68.499 5.627 547.00000 294.400000 706.100065 -13.202011 431.60 0 0.000000e+00 NORMAL True 9202391012 4.006721e+12 1.051300e+12 2.095753e+11 22.774 9202391012 4.006721e+12 114.242 0.199 19.118 3.811 19.118 3.48 0.80 3.48 0.799 False NaN N/A NaN NaN NaN NaN NaN
1 US.AAPL 苹果 2025-04-07 05:30:43.301 188.38 193.89 199.88 187.34 203.19 125910913 2.424473e+10 0.838 False 1980-12-12 1 0.01 NaN 180.8 180.48 29 400 NaN NaN NaN NaN NaN NaN NaN 6.172 192.554 86.480 2.226 259.81389 163.300566 259.813890 0.053580 188.93 3151311 5.930968e+08 NORMAL True 15022073000 2.829858e+12 6.675809e+10 9.133420e+10 6.080 15016677308 2.828842e+12 4.444 1.417 30.983 42.389 29.901 0.99 0.53 0.98 0.520 False NaN N/A NaN NaN NaN NaN NaN
wrt_issue_vol wrt_street_ratio wrt_delta wrt_implied_volatility wrt_premium wrt_leverage wrt_ipop wrt_break_even_point wrt_conversion_price wrt_price_recovery_ratio wrt_score wrt_upper_strike_price wrt_lower_strike_price wrt_inline_price_status wrt_issuer_code option_valid option_type strike_time option_strike_price option_contract_size option_open_interest option_implied_volatility option_premium option_delta option_gamma option_vega option_theta option_rho option_net_open_interest option_expiry_date_distance option_contract_nominal_value option_owner_lot_multiplier option_area_type option_contract_multiplier index_option_type index_valid index_raise_count index_fall_count index_equal_count plate_valid plate_raise_count plate_fall_count plate_equal_count future_valid future_last_settle_price future_position future_position_change future_main_contract future_last_trade_time trust_valid trust_dividend_yield trust_aum \
0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN N/A NaN False N/A NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN N/A NaN N/A False NaN NaN NaN False NaN NaN NaN False NaN NaN NaN NaN NaN False NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN N/A NaN False N/A NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN N/A NaN N/A False NaN NaN NaN False NaN NaN NaN False NaN NaN NaN NaN NaN False NaN NaN
trust_outstanding_units trust_netAssetValue trust_premium trust_assetClass pre_price pre_high_price pre_low_price pre_volume pre_turnover pre_change_val pre_change_rate pre_amplitude after_price after_high_price after_low_price after_change_val after_change_rate after_amplitude overnight_price overnight_high_price overnight_low_price overnight_volume overnight_turnover overnight_change_val overnight_change_rate overnight_amplitude
0 NaN NaN NaN N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A
1 NaN NaN NaN N/A 180.68 181.98 177.47 276016 49809244.83 -7.7 -4.087 2.394 186.6 188.639 186.44 -1.78 -0.944 1.1673 176.94 186.5 174.4 533115 94944250.56 -11.44 -6.072 6.4231
HK.00700
['HK.00700', 'US.AAPL']
2
3
4
5
6
7
8
9
10
11
12
13
14
# Qot_GetSecuritySnapshot.proto
概要
スナップショットデータの取得
パラメータ
message C2S
{
repeated Qot_Common.Security securityList = 1; //株式
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 株式構造は~を参照: Security
- 戻り値
// 正株タイプの追加データ
message EquitySnapshotExData
{
required int64 issuedShares = 1; // 総株式数
required double issuedMarketVal = 2; // 時価総額 = 総株式数 × 現在価格
required double netAsset = 3; // 純資産
required double netProfit = 4; // 利益(損失)
required double earningsPershare = 5; // EPS
required int64 outstandingShares = 6; // 流通株式数
required double outstandingMarketVal = 7; // 流通時価総額 = 流通株式数 × 現在価格
required double netAssetPershare = 8; // 一株当たり純資産
required double eyRate = 9; // 益回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double peRate = 10; // PER
required double pbRate = 11; // PBR
required double peTTMRate = 12; // PER TTM
optional double dividendTTM = 13; // 配当金 TTM
optional double dividendRatioTTM = 14; // 配当利回り TTM(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double dividendLFY = 15; // 配当金 LFY(前年度配当)
optional double dividendLFYRatio = 16; // 配当利回り LFY(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
}
// ワラントタイプの追加データ
message WarrantSnapshotExData
{
required double conversionRate = 1; //換株比率
required int32 warrantType = 2; //Qot_Common.WarrantType、ワラントタイプ
required double strikePrice = 3; //行使価格
required string maturityTime = 4; //満期日文字列
required string endTradeTime = 5; //最終取引日文字列
required Qot_Common.Security owner = 6; //原資産正株
required double recoveryPrice = 7; //回収価格,CBBC のみこのフィールドに対応
required int64 streetVolumn = 8; //街貨量
required int64 issueVolumn = 9; //発行量
required double streetRate = 10; //街貨比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 11; //デルタ値,コール・プットのみこのフィールドに対応
required double impliedVolatility = 12; //IV(インプライドボラティリティ),コール・プットのみこのフィールドに対応
required double premium = 13; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double maturityTimestamp = 14; //満期日タイムスタンプ
optional double endTradeTimestamp = 15; //最終取引日タイムスタンプ
optional double leverage = 16; // レバレッジ比率(倍)
optional double ipop = 17; // インザマネー/アウトオブザマネー(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double breakEvenPoint = 18; // 損益分岐点
optional double conversionPrice = 19; // 換株価格
optional double priceRecoveryRatio = 20; // 正株の回収価格までの距離(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double score = 21; // 総合スコア
optional double upperStrikePrice = 22; //上限価,インラインワラントのみこのフィールドに対応
optional double lowerStrikePrice = 23; //下限価,インラインワラントのみこのフィールドに対応
optional int32 inLinePriceStatus = 24; //Qot_Common.PriceType、界内/界外。インラインワラントのみこのフィールドに対応
optional string issuerCode = 25; //発行体コード
}
// オプションタイプの追加データ
message OptionSnapshotExData
{
required int32 type = 1; //Qot_Common.OptionType、オプションタイプ(方向別)
required Qot_Common.Security owner = 2; //原資産株
required string strikeTime = 3; //行使日文字列(フォーマット:yyyy-MM-dd)
required double strikePrice = 4; //行使価格
required int32 contractSize = 5; //1 契約あたりの株数(整型データ)
optional double contractSizeFloat = 22; //1 契約あたりの株数(浮点型データ)
required int32 openInterest = 6; //未決済建玉数
required double impliedVolatility = 7; //IV(インプライドボラティリティ)(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double premium = 8; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 9; //グリークス Delta
required double gamma = 10; //グリークス Gamma
required double vega = 11; //グリークス Vega
required double theta = 12; //グリークス Theta
required double rho = 13; //グリークス Rho
optional double strikeTimestamp = 14; //行使日タイムスタンプ
optional int32 indexOptionType = 15; //Qot_Common.IndexOptionType、指数オプションタイプ
optional int32 netOpenInterest = 16; //ネット未決済建玉数,香港株オプションのみ適用
optional int32 expiryDateDistance = 17; //距离満期日天数,負の数は満期済みを示します
optional double contractNominalValue = 18; //契約想定元本,香港株オプションのみ適用
optional double ownerLotMultiplier = 19; //相等正株手数,指数オプションにはこのフィールドはありません,香港株オプションのみ適用
optional int32 optionAreaType = 20; //Qot_Common.OptionAreaType、オプションタイプ(行使時間別)
optional double contractMultiplier = 21; //契約乗数
}
// 指数タイプの追加データ
message IndexSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
// セクタータイプの追加データ
message PlateSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
//先物タイプの追加データ
message FutureSnapshotExData
{
required double lastSettlePrice = 1; //前日決済値
required int32 position = 2; //建玉数
required int32 positionChange = 3; //日次建玉変動
required string lastTradeTime = 4; //最后取引日,主連以外の先物契約のみこのフィールドあり
optional double lastTradeTimestamp = 5; //最終取引日タイムスタンプ,主連以外の先物契約のみこのフィールドあり
required bool isMainContract = 6; //かどうか主連契約
}
//基金タイプ额外データ
message TrustSnapshotExData
{
required double dividendYield = 1; //配当利回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double aum = 2; //資産規模
required int64 outstandingUnits = 3; //総発行口数
required double netAssetValue = 4; //基準価額
required double premium = 5; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required int32 assetClass = 6; //Qot_Common.AssetClass、資産種別
}
//基本スナップショットデータ
message SnapshotBasicData
{
required Qot_Common.Security security = 1; //銘柄
optional string name = 41; //銘柄名
required int32 type = 2; //Qot_Common.SecurityType、銘柄タイプ
required bool isSuspend = 3; //かどうか売買停止
required string listTime = 4; //上場時間文字列(フォーマット:yyyy-MM-dd)
required int32 lotSize = 5; //1ロットの数量
required double priceSpread = 6; //価差
required string updateTime = 7; //更新時間文字列(フォーマット:yyyy-MM-dd HH:mm:ss)
required double highPrice = 8; //高値
required double openPrice = 9; //始値
required double lowPrice = 10; //安値
required double lastClosePrice = 11; //前日終値
required double curPrice = 12; //最新価格
required int64 volume = 13; //出来高
required double turnover = 14; //売買代金
required double turnoverRate = 15; //売買回転率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double listTimestamp = 16; //上場タイムスタンプ
optional double updateTimestamp = 17; //更新タイムスタンプ
optional double askPrice = 18;//売値
optional double bidPrice = 19;//買値
optional int64 askVol = 20;//売り数量
optional int64 bidVol = 21;//買い数量
optional bool enableMargin = 22; // 信用買い可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double mortgageRatio = 23; // 株式担保率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double longMarginInitialRatio = 24; // 信用買い初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional bool enableShortSell = 25; // 空売り可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortSellRate = 26; // 空売り参考利率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional int64 shortAvailableVolume = 27; // 残りの空売り可能数量(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortMarginInitialRatio = 28; // 空売り(信用売り)初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double amplitude = 29; // 振幅(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double avgPrice = 30; // 平均価
optional double bidAskRatio = 31; // 委託比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double volumeRatio = 32; // 出来高比率
optional double highest52WeeksPrice = 33; // 52周高値
optional double lowest52WeeksPrice = 34; // 52周安値
optional double highestHistoryPrice = 35; // 過去高値
optional double lowestHistoryPrice = 36; // 過去安値
optional Qot_Common.PreAfterMarketData preMarket = 37; //Qot_Common::PreAfterMarketData プレマーケットデータ
optional Qot_Common.PreAfterMarketData afterMarket = 38; //Qot_Common::PreAfterMarketData アフターマーケットデータ
optional Qot_Common.PreAfterMarketData overnight = 42; //Qot_Common::PreAfterMarketData 夜間取引データ
optional int32 secStatus = 39; //Qot_Common::SecurityStatus 株式状態
optional double closePrice5Minute = 40; //5分钟終値
}
message Snapshot
{
required SnapshotBasicData basic = 1; //スナップショット基本データ
optional EquitySnapshotExData equityExData = 2; //正株スナップショット额外データ
optional WarrantSnapshotExData warrantExData = 3; //ワラントスナップショット额外データ
optional OptionSnapshotExData optionExData = 4; //オプションスナップショット额外データ
optional IndexSnapshotExData indexExData = 5; //指数スナップショット额外データ
optional PlateSnapshotExData plateExData = 6; //セクタースナップショット额外データ
optional FutureSnapshotExData futureExData = 7; //先物タイプの追加データ
optional TrustSnapshotExData trustExData = 8; //基金タイプ额外データ
}
message S2C
{
repeated Snapshot snapshotList = 1; //株式スナップショット
}
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
プロトコル ID
3203
uint GetSecuritySnapshot(QotGetSecuritySnapshot.Request req);
virtual void OnReply_GetSecuritySnapshot(FTAPI_Conn client, uint nSerialNo, QotGetSecuritySnapshot.Response rsp);
概要
スナップショットデータの取得
パラメータ
message C2S
{
repeated Qot_Common.Security securityList = 1; //株式
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 株式構造は~を参照: Security
- 戻り値
// 正株タイプの追加データ
message EquitySnapshotExData
{
required int64 issuedShares = 1; // 総株式数
required double issuedMarketVal = 2; // 時価総額 = 総株式数 × 現在価格
required double netAsset = 3; // 純資産
required double netProfit = 4; // 利益(損失)
required double earningsPershare = 5; // EPS
required int64 outstandingShares = 6; // 流通株式数
required double outstandingMarketVal = 7; // 流通時価総額 = 流通株式数 × 現在価格
required double netAssetPershare = 8; // 一株当たり純資産
required double eyRate = 9; // 益回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double peRate = 10; // PER
required double pbRate = 11; // PBR
required double peTTMRate = 12; // PER TTM
optional double dividendTTM = 13; // 配当金 TTM
optional double dividendRatioTTM = 14; // 配当利回り TTM(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double dividendLFY = 15; // 配当金 LFY(前年度配当)
optional double dividendLFYRatio = 16; // 配当利回り LFY(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
}
// ワラントタイプの追加データ
message WarrantSnapshotExData
{
required double conversionRate = 1; //換株比率
required int32 warrantType = 2; //Qot_Common.WarrantType、ワラントタイプ
required double strikePrice = 3; //行使価格
required string maturityTime = 4; //満期日文字列
required string endTradeTime = 5; //最終取引日文字列
required Qot_Common.Security owner = 6; //原資産正株
required double recoveryPrice = 7; //回収価格,CBBC のみこのフィールドに対応
required int64 streetVolumn = 8; //街貨量
required int64 issueVolumn = 9; //発行量
required double streetRate = 10; //街貨比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 11; //デルタ値,コール・プットのみこのフィールドに対応
required double impliedVolatility = 12; //IV(インプライドボラティリティ),コール・プットのみこのフィールドに対応
required double premium = 13; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double maturityTimestamp = 14; //満期日タイムスタンプ
optional double endTradeTimestamp = 15; //最終取引日タイムスタンプ
optional double leverage = 16; // レバレッジ比率(倍)
optional double ipop = 17; // インザマネー/アウトオブザマネー(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double breakEvenPoint = 18; // 損益分岐点
optional double conversionPrice = 19; // 換株価格
optional double priceRecoveryRatio = 20; // 正株の回収価格までの距離(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double score = 21; // 総合スコア
optional double upperStrikePrice = 22; //上限価,インラインワラントのみこのフィールドに対応
optional double lowerStrikePrice = 23; //下限価,インラインワラントのみこのフィールドに対応
optional int32 inLinePriceStatus = 24; //Qot_Common.PriceType、界内/界外。インラインワラントのみこのフィールドに対応
optional string issuerCode = 25; //発行体コード
}
// オプションタイプの追加データ
message OptionSnapshotExData
{
required int32 type = 1; //Qot_Common.OptionType、オプションタイプ(方向別)
required Qot_Common.Security owner = 2; //原資産株
required string strikeTime = 3; //行使日文字列(フォーマット:yyyy-MM-dd)
required double strikePrice = 4; //行使価格
required int32 contractSize = 5; //1 契約あたりの株数(整型データ)
optional double contractSizeFloat = 22; //1 契約あたりの株数(浮点型データ)
required int32 openInterest = 6; //未決済建玉数
required double impliedVolatility = 7; //IV(インプライドボラティリティ)(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double premium = 8; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 9; //グリークス Delta
required double gamma = 10; //グリークス Gamma
required double vega = 11; //グリークス Vega
required double theta = 12; //グリークス Theta
required double rho = 13; //グリークス Rho
optional double strikeTimestamp = 14; //行使日タイムスタンプ
optional int32 indexOptionType = 15; //Qot_Common.IndexOptionType、指数オプションタイプ
optional int32 netOpenInterest = 16; //ネット未決済建玉数,香港株オプションのみ適用
optional int32 expiryDateDistance = 17; //距离満期日天数,負の数は満期済みを示します
optional double contractNominalValue = 18; //契約想定元本,香港株オプションのみ適用
optional double ownerLotMultiplier = 19; //相等正株手数,指数オプションにはこのフィールドはありません,香港株オプションのみ適用
optional int32 optionAreaType = 20; //Qot_Common.OptionAreaType、オプションタイプ(行使時間別)
optional double contractMultiplier = 21; //契約乗数
}
// 指数タイプの追加データ
message IndexSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
// セクタータイプの追加データ
message PlateSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
//先物タイプの追加データ
message FutureSnapshotExData
{
required double lastSettlePrice = 1; //前日決済値
required int32 position = 2; //建玉数
required int32 positionChange = 3; //日次建玉変動
required string lastTradeTime = 4; //最后取引日,主連以外の先物契約のみこのフィールドあり
optional double lastTradeTimestamp = 5; //最終取引日タイムスタンプ,主連以外の先物契約のみこのフィールドあり
required bool isMainContract = 6; //かどうか主連契約
}
//基金タイプ额外データ
message TrustSnapshotExData
{
required double dividendYield = 1; //配当利回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double aum = 2; //資産規模
required int64 outstandingUnits = 3; //総発行口数
required double netAssetValue = 4; //基準価額
required double premium = 5; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required int32 assetClass = 6; //Qot_Common.AssetClass、資産種別
}
//基本スナップショットデータ
message SnapshotBasicData
{
required Qot_Common.Security security = 1; //銘柄
optional string name = 41; //銘柄名
required int32 type = 2; //Qot_Common.SecurityType、銘柄タイプ
required bool isSuspend = 3; //かどうか売買停止
required string listTime = 4; //上場時間文字列(フォーマット:yyyy-MM-dd)
required int32 lotSize = 5; //1ロットの数量
required double priceSpread = 6; //価差
required string updateTime = 7; //更新時間文字列(フォーマット:yyyy-MM-dd HH:mm:ss)
required double highPrice = 8; //高値
required double openPrice = 9; //始値
required double lowPrice = 10; //安値
required double lastClosePrice = 11; //前日終値
required double curPrice = 12; //最新価格
required int64 volume = 13; //出来高
required double turnover = 14; //売買代金
required double turnoverRate = 15; //売買回転率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double listTimestamp = 16; //上場タイムスタンプ
optional double updateTimestamp = 17; //更新タイムスタンプ
optional double askPrice = 18;//売値
optional double bidPrice = 19;//買値
optional int64 askVol = 20;//売り数量
optional int64 bidVol = 21;//買い数量
optional bool enableMargin = 22; // 信用買い可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double mortgageRatio = 23; // 株式担保率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double longMarginInitialRatio = 24; // 信用買い初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional bool enableShortSell = 25; // 空売り可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortSellRate = 26; // 空売り参考利率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional int64 shortAvailableVolume = 27; // 残りの空売り可能数量(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortMarginInitialRatio = 28; // 空売り(信用売り)初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double amplitude = 29; // 振幅(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double avgPrice = 30; // 平均価
optional double bidAskRatio = 31; // 委託比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double volumeRatio = 32; // 出来高比率
optional double highest52WeeksPrice = 33; // 52周高値
optional double lowest52WeeksPrice = 34; // 52周安値
optional double highestHistoryPrice = 35; // 過去高値
optional double lowestHistoryPrice = 36; // 過去安値
optional Qot_Common.PreAfterMarketData preMarket = 37; //Qot_Common::PreAfterMarketData プレマーケットデータ
optional Qot_Common.PreAfterMarketData afterMarket = 38; //Qot_Common::PreAfterMarketData アフターマーケットデータ
optional Qot_Common.PreAfterMarketData overnight = 42; //Qot_Common::PreAfterMarketData 夜間取引データ
optional int32 secStatus = 39; //Qot_Common::SecurityStatus 株式状態
optional double closePrice5Minute = 40; //5分钟終値
}
message Snapshot
{
required SnapshotBasicData basic = 1; //スナップショット基本データ
optional EquitySnapshotExData equityExData = 2; //正株スナップショット额外データ
optional WarrantSnapshotExData warrantExData = 3; //ワラントスナップショット额外データ
optional OptionSnapshotExData optionExData = 4; //オプションスナップショット额外データ
optional IndexSnapshotExData indexExData = 5; //指数スナップショット额外データ
optional PlateSnapshotExData plateExData = 6; //セクタースナップショット额外データ
optional FutureSnapshotExData futureExData = 7; //先物タイプの追加データ
optional TrustSnapshotExData trustExData = 8; //基金タイプ额外データ
}
message S2C
{
repeated Snapshot snapshotList = 1; //株式スナップショット
}
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
- 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;
QotCommon.Security sec = QotCommon.Security.CreateBuilder()
.SetMarket((int)QotCommon.QotMarket.QotMarket_HK_Security)
.SetCode("00700")
.Build();
QotGetSecuritySnapshot.C2S c2s = QotGetSecuritySnapshot.C2S.CreateBuilder()
.AddSecurityList(sec)
.Build();
QotGetSecuritySnapshot.Request req = QotGetSecuritySnapshot.Request.CreateBuilder().SetC2S(c2s).Build();
uint seqNo = qot.GetSecuritySnapshot(req);
Console.Write("Send QotGetSecuritySnapshot: {0}\n", seqNo);
}
public void OnDisconnect(FTAPI_Conn client, long errCode) {
Console.Write("Qot onDisConnect: {0}\n", errCode);
}
public void OnReply_GetSecuritySnapshot(FTAPI_Conn client, uint nSerialNo, QotGetSecuritySnapshot.Response rsp)
{
Console.Write("Reply: QotGetSecuritySnapshot: {0} \n", nSerialNo);
Console.Write("basic price: {0}\n", rsp.S2C.SnapshotListList[0].Basic.CurPrice);
Console.Write("equityExData issuedShares: {0}\n", rsp.S2C.SnapshotListList[0].EquityExData.IssuedShares);
}
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
- Output
Qot onInitConnect: ret=0 desc= connID=6825619056039643630
Send QotGetSecuritySnapshot: 3
Reply: QotGetSecuritySnapshot: 3
basic price: 474.2
equityExData issuedShares: 9595900007
2
3
4
5
int getSecuritySnapshot(QotGetSecuritySnapshot.Request req);
void onReply_GetSecuritySnapshot(FTAPI_Conn client, int nSerialNo, QotGetSecuritySnapshot.Response rsp);
概要
スナップショットデータの取得
パラメータ
message C2S
{
repeated Qot_Common.Security securityList = 1; //株式
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 株式構造は~を参照: Security
- 戻り値
// 正株タイプの追加データ
message EquitySnapshotExData
{
required int64 issuedShares = 1; // 総株式数
required double issuedMarketVal = 2; // 時価総額 = 総株式数 × 現在価格
required double netAsset = 3; // 純資産
required double netProfit = 4; // 利益(損失)
required double earningsPershare = 5; // EPS
required int64 outstandingShares = 6; // 流通株式数
required double outstandingMarketVal = 7; // 流通時価総額 = 流通株式数 × 現在価格
required double netAssetPershare = 8; // 一株当たり純資産
required double eyRate = 9; // 益回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double peRate = 10; // PER
required double pbRate = 11; // PBR
required double peTTMRate = 12; // PER TTM
optional double dividendTTM = 13; // 配当金 TTM
optional double dividendRatioTTM = 14; // 配当利回り TTM(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double dividendLFY = 15; // 配当金 LFY(前年度配当)
optional double dividendLFYRatio = 16; // 配当利回り LFY(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
}
// ワラントタイプの追加データ
message WarrantSnapshotExData
{
required double conversionRate = 1; //換株比率
required int32 warrantType = 2; //Qot_Common.WarrantType、ワラントタイプ
required double strikePrice = 3; //行使価格
required string maturityTime = 4; //満期日文字列
required string endTradeTime = 5; //最終取引日文字列
required Qot_Common.Security owner = 6; //原資産正株
required double recoveryPrice = 7; //回収価格,CBBC のみこのフィールドに対応
required int64 streetVolumn = 8; //街貨量
required int64 issueVolumn = 9; //発行量
required double streetRate = 10; //街貨比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 11; //デルタ値,コール・プットのみこのフィールドに対応
required double impliedVolatility = 12; //IV(インプライドボラティリティ),コール・プットのみこのフィールドに対応
required double premium = 13; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double maturityTimestamp = 14; //満期日タイムスタンプ
optional double endTradeTimestamp = 15; //最終取引日タイムスタンプ
optional double leverage = 16; // レバレッジ比率(倍)
optional double ipop = 17; // インザマネー/アウトオブザマネー(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double breakEvenPoint = 18; // 損益分岐点
optional double conversionPrice = 19; // 換株価格
optional double priceRecoveryRatio = 20; // 正株の回収価格までの距離(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double score = 21; // 総合スコア
optional double upperStrikePrice = 22; //上限価,インラインワラントのみこのフィールドに対応
optional double lowerStrikePrice = 23; //下限価,インラインワラントのみこのフィールドに対応
optional int32 inLinePriceStatus = 24; //Qot_Common.PriceType、界内/界外。インラインワラントのみこのフィールドに対応
optional string issuerCode = 25; //発行体コード
}
// オプションタイプの追加データ
message OptionSnapshotExData
{
required int32 type = 1; //Qot_Common.OptionType、オプションタイプ(方向別)
required Qot_Common.Security owner = 2; //原資産株
required string strikeTime = 3; //行使日文字列(フォーマット:yyyy-MM-dd)
required double strikePrice = 4; //行使価格
required int32 contractSize = 5; //1 契約あたりの株数(整型データ)
optional double contractSizeFloat = 22; //1 契約あたりの株数(浮点型データ)
required int32 openInterest = 6; //未決済建玉数
required double impliedVolatility = 7; //IV(インプライドボラティリティ)(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double premium = 8; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 9; //グリークス Delta
required double gamma = 10; //グリークス Gamma
required double vega = 11; //グリークス Vega
required double theta = 12; //グリークス Theta
required double rho = 13; //グリークス Rho
optional double strikeTimestamp = 14; //行使日タイムスタンプ
optional int32 indexOptionType = 15; //Qot_Common.IndexOptionType、指数オプションタイプ
optional int32 netOpenInterest = 16; //ネット未決済建玉数,香港株オプションのみ適用
optional int32 expiryDateDistance = 17; //距离満期日天数,負の数は満期済みを示します
optional double contractNominalValue = 18; //契約想定元本,香港株オプションのみ適用
optional double ownerLotMultiplier = 19; //相等正株手数,指数オプションにはこのフィールドはありません,香港株オプションのみ適用
optional int32 optionAreaType = 20; //Qot_Common.OptionAreaType、オプションタイプ(行使時間別)
optional double contractMultiplier = 21; //契約乗数
}
// 指数タイプの追加データ
message IndexSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
// セクタータイプの追加データ
message PlateSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
//先物タイプの追加データ
message FutureSnapshotExData
{
required double lastSettlePrice = 1; //前日決済値
required int32 position = 2; //建玉数
required int32 positionChange = 3; //日次建玉変動
required string lastTradeTime = 4; //最后取引日,主連以外の先物契約のみこのフィールドあり
optional double lastTradeTimestamp = 5; //最終取引日タイムスタンプ,主連以外の先物契約のみこのフィールドあり
required bool isMainContract = 6; //かどうか主連契約
}
//基金タイプ额外データ
message TrustSnapshotExData
{
required double dividendYield = 1; //配当利回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double aum = 2; //資産規模
required int64 outstandingUnits = 3; //総発行口数
required double netAssetValue = 4; //基準価額
required double premium = 5; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required int32 assetClass = 6; //Qot_Common.AssetClass、資産種別
}
//基本スナップショットデータ
message SnapshotBasicData
{
required Qot_Common.Security security = 1; //銘柄
optional string name = 41; //銘柄名
required int32 type = 2; //Qot_Common.SecurityType、銘柄タイプ
required bool isSuspend = 3; //かどうか売買停止
required string listTime = 4; //上場時間文字列(フォーマット:yyyy-MM-dd)
required int32 lotSize = 5; //1ロットの数量
required double priceSpread = 6; //価差
required string updateTime = 7; //更新時間文字列(フォーマット:yyyy-MM-dd HH:mm:ss)
required double highPrice = 8; //高値
required double openPrice = 9; //始値
required double lowPrice = 10; //安値
required double lastClosePrice = 11; //前日終値
required double curPrice = 12; //最新価格
required int64 volume = 13; //出来高
required double turnover = 14; //売買代金
required double turnoverRate = 15; //売買回転率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double listTimestamp = 16; //上場タイムスタンプ
optional double updateTimestamp = 17; //更新タイムスタンプ
optional double askPrice = 18;//売値
optional double bidPrice = 19;//買値
optional int64 askVol = 20;//売り数量
optional int64 bidVol = 21;//買い数量
optional bool enableMargin = 22; // 信用買い可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double mortgageRatio = 23; // 株式担保率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double longMarginInitialRatio = 24; // 信用買い初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional bool enableShortSell = 25; // 空売り可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortSellRate = 26; // 空売り参考利率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional int64 shortAvailableVolume = 27; // 残りの空売り可能数量(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortMarginInitialRatio = 28; // 空売り(信用売り)初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double amplitude = 29; // 振幅(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double avgPrice = 30; // 平均価
optional double bidAskRatio = 31; // 委託比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double volumeRatio = 32; // 出来高比率
optional double highest52WeeksPrice = 33; // 52周高値
optional double lowest52WeeksPrice = 34; // 52周安値
optional double highestHistoryPrice = 35; // 過去高値
optional double lowestHistoryPrice = 36; // 過去安値
optional Qot_Common.PreAfterMarketData preMarket = 37; //Qot_Common::PreAfterMarketData プレマーケットデータ
optional Qot_Common.PreAfterMarketData afterMarket = 38; //Qot_Common::PreAfterMarketData
optional Qot_Common.PreAfterMarketData overnight = 42; //Qot_Common::PreAfterMarketData 夜間取引データ
optional int32 secStatus = 39; //Qot_Common::SecurityStatus 株式状態
optional double closePrice5Minute = 40; //5分钟終値
}
message Snapshot
{
required SnapshotBasicData basic = 1; //スナップショット基本データ
optional EquitySnapshotExData equityExData = 2; //正株スナップショット额外データ
optional WarrantSnapshotExData warrantExData = 3; //ワラントスナップショット额外データ
optional OptionSnapshotExData optionExData = 4; //オプションスナップショット额外データ
optional IndexSnapshotExData indexExData = 5; //指数スナップショット额外データ
optional PlateSnapshotExData plateExData = 6; //セクタースナップショット额外データ
optional FutureSnapshotExData futureExData = 7; //先物タイプの追加データ
optional TrustSnapshotExData trustExData = 8; //基金タイプ额外データ
}
message S2C
{
repeated Snapshot snapshotList = 1; //株式スナップショット
}
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
- 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;
QotCommon.Security sec = QotCommon.Security.newBuilder()
.setMarket(QotCommon.QotMarket.QotMarket_HK_Security_VALUE)
.setCode("00700")
.build();
QotGetSecuritySnapshot.C2S c2s = QotGetSecuritySnapshot.C2S.newBuilder()
.addSecurityList(sec)
.build();
QotGetSecuritySnapshot.Request req = QotGetSecuritySnapshot.Request.newBuilder().setC2S(c2s).build();
int seqNo = qot.getSecuritySnapshot(req);
System.out.printf("Send QotGetSecuritySnapshot: %d\n", seqNo);
}
@Override
public void onDisconnect(FTAPI_Conn client, long errCode) {
System.out.printf("Qot onDisConnect: %d\n", errCode);
}
@Override
public void onReply_GetSecuritySnapshot(FTAPI_Conn client, int nSerialNo, QotGetSecuritySnapshot.Response rsp) {
if (rsp.getRetType() != 0) {
System.out.printf("QotGetSecuritySnapshot failed: %s\n", rsp.getRetMsg());
}
else {
try {
String json = JsonFormat.printer().print(rsp);
System.out.printf("Receive QotGetSecuritySnapshot: %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
- Output
Send QotGetSecuritySnapshot: 2
Receive QotGetSecuritySnapshot: {
"retType": 0,
"retMsg": "",
"errCode": 0,
"s2c": {
"snapshotList": [{
"basic": {
"security": {
"market": 1,
"code": "00700"
},
"type": 3,
"isSuspend": false,
"listTime": "2004-06-16",
"lotSize": 100,
"priceSpread": 0.5,
"updateTime": "2021-06-24 16:08:14",
"highPrice": 587.5,
"openPrice": 584.0,
"lowPrice": 580.0,
"lastClosePrice": 582.5,
"curPrice": 583.0,
"volume": "10947302",
"turnover": 6.387238277E9,
"turnoverRate": 0.114,
"listTimestamp": 1.0873152E9,
"updateTimestamp": 1.624522094E9,
"askPrice": 583.5,
"bidPrice": 583.0,
"askVol": "142300",
"bidVol": "52800",
"enableMargin": true,
"mortgageRatio": 0.0,
"longMarginInitialRatio": 35.0,
"enableShortSell": true,
"shortSellRate": 0.9,
"shortAvailableVolume": "2006700",
"shortMarginInitialRatio": 60.0,
"amplitude": 1.288,
"avgPrice": 583.453,
"bidAskRatio": -5.273,
"volumeRatio": 0.553,
"highest52WeeksPrice": 773.9,
"lowest52WeeksPrice": 479.4,
"highestHistoryPrice": 773.9,
"lowestHistoryPrice": -6.381,
"secStatus": 1,
"closePrice5Minute": 583.5
},
"equityExData": {
"issuedShares": "9595206625",
"issuedMarketVal": 5.594005462375E12,
"netAsset": 9.17675966408375E11,
"netProfit": 1.90378494646625E11,
"earningsPershare": 19.841,
"outstandingShares": "9595206625",
"outstandingMarketVal": 5.594005462375E12,
"netAssetPershare": 95.639,
"eyRate": 0.232,
"peRate": 29.383,
"pbRate": 6.095,
"peTTMRate": 26.249,
"dividendTTM": 1.6,
"dividendRatioTTM": 0.27,
"dividendLFY": 1.6,
"dividendLFYRatio": 0.274
}
}]
}
}
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
Futu::u32_t GetSecuritySnapshot(const Qot_GetSecuritySnapshot::Request &stReq);
virtual void OnReply_GetSecuritySnapshot(Futu::u32_t nSerialNo, const Qot_GetSecuritySnapshot::Response &stRsp) = 0;
概要
スナップショットデータの取得
パラメータ
message C2S
{
repeated Qot_Common.Security securityList = 1; //株式
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 株式構造は~を参照: Security
- 戻り値
// 正株タイプの追加データ
message EquitySnapshotExData
{
required int64 issuedShares = 1; // 総株式数
required double issuedMarketVal = 2; // 時価総額 = 総株式数 × 現在価格
required double netAsset = 3; // 純資産
required double netProfit = 4; // 利益(損失)
required double earningsPershare = 5; // EPS
required int64 outstandingShares = 6; // 流通株式数
required double outstandingMarketVal = 7; // 流通時価総額 = 流通株式数 × 現在価格
required double netAssetPershare = 8; // 一株当たり純資産
required double eyRate = 9; // 益回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double peRate = 10; // PER
required double pbRate = 11; // PBR
required double peTTMRate = 12; // PER TTM
optional double dividendTTM = 13; // 配当金 TTM
optional double dividendRatioTTM = 14; // 配当利回り TTM(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double dividendLFY = 15; // 配当金 LFY(前年度配当)
optional double dividendLFYRatio = 16; // 配当利回り LFY(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
}
// ワラントタイプの追加データ
message WarrantSnapshotExData
{
required double conversionRate = 1; //換株比率
required int32 warrantType = 2; //Qot_Common.WarrantType、ワラントタイプ
required double strikePrice = 3; //行使価格
required string maturityTime = 4; //満期日文字列
required string endTradeTime = 5; //最終取引日文字列
required Qot_Common.Security owner = 6; //原資産正株
required double recoveryPrice = 7; //回収価格,CBBC のみこのフィールドに対応
required int64 streetVolumn = 8; //街貨量
required int64 issueVolumn = 9; //発行量
required double streetRate = 10; //街貨比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 11; //デルタ値,コール・プットのみこのフィールドに対応
required double impliedVolatility = 12; //IV(インプライドボラティリティ),コール・プットのみこのフィールドに対応
required double premium = 13; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double maturityTimestamp = 14; //満期日タイムスタンプ
optional double endTradeTimestamp = 15; //最終取引日タイムスタンプ
optional double leverage = 16; // レバレッジ比率(倍)
optional double ipop = 17; // インザマネー/アウトオブザマネー(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double breakEvenPoint = 18; // 損益分岐点
optional double conversionPrice = 19; // 換株価格
optional double priceRecoveryRatio = 20; // 正株の回収価格までの距離(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double score = 21; // 総合スコア
optional double upperStrikePrice = 22; //上限価,インラインワラントのみこのフィールドに対応
optional double lowerStrikePrice = 23; //下限価,インラインワラントのみこのフィールドに対応
optional int32 inLinePriceStatus = 24; //Qot_Common.PriceType、界内/界外。インラインワラントのみこのフィールドに対応
optional string issuerCode = 25; //発行体コード
}
// オプションタイプの追加データ
message OptionSnapshotExData
{
required int32 type = 1; //Qot_Common.OptionType、オプションタイプ(方向別)
required Qot_Common.Security owner = 2; //原資産株
required string strikeTime = 3; //行使日文字列(フォーマット:yyyy-MM-dd)
required double strikePrice = 4; //行使価格
required int32 contractSize = 5; //1 契約あたりの株数(整型データ)
optional double contractSizeFloat = 22; //1 契約あたりの株数(浮点型データ)
required int32 openInterest = 6; //未決済建玉数
required double impliedVolatility = 7; //IV(インプライドボラティリティ)(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double premium = 8; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 9; //グリークス Delta
required double gamma = 10; //グリークス Gamma
required double vega = 11; //グリークス Vega
required double theta = 12; //グリークス Theta
required double rho = 13; //グリークス Rho
optional double strikeTimestamp = 14; //行使日タイムスタンプ
optional int32 indexOptionType = 15; //Qot_Common.IndexOptionType、指数オプションタイプ
optional int32 netOpenInterest = 16; //ネット未決済建玉数,香港株オプションのみ適用
optional int32 expiryDateDistance = 17; //距离満期日天数,負の数は満期済みを示します
optional double contractNominalValue = 18; //契約想定元本,香港株オプションのみ適用
optional double ownerLotMultiplier = 19; //相等正株手数,指数オプションにはこのフィールドはありません,香港株オプションのみ適用
optional int32 optionAreaType = 20; //Qot_Common.OptionAreaType、オプションタイプ(行使時間別)
optional double contractMultiplier = 21; //契約乗数
}
// 指数タイプの追加データ
message IndexSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
// セクタータイプの追加データ
message PlateSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
//先物タイプの追加データ
message FutureSnapshotExData
{
required double lastSettlePrice = 1; //前日決済値
required int32 position = 2; //建玉数
required int32 positionChange = 3; //日次建玉変動
required string lastTradeTime = 4; //最后取引日,主連以外の先物契約のみこのフィールドあり
optional double lastTradeTimestamp = 5; //最終取引日タイムスタンプ,主連以外の先物契約のみこのフィールドあり
required bool isMainContract = 6; //かどうか主連契約
}
//基金タイプ额外データ
message TrustSnapshotExData
{
required double dividendYield = 1; //配当利回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double aum = 2; //資産規模
required int64 outstandingUnits = 3; //総発行口数
required double netAssetValue = 4; //基準価額
required double premium = 5; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required int32 assetClass = 6; //Qot_Common.AssetClass、資産種別
}
//基本スナップショットデータ
message SnapshotBasicData
{
required Qot_Common.Security security = 1; //銘柄
optional string name = 41; //銘柄名
required int32 type = 2; //Qot_Common.SecurityType、銘柄タイプ
required bool isSuspend = 3; //かどうか売買停止
required string listTime = 4; //上場時間文字列(フォーマット:yyyy-MM-dd)
required int32 lotSize = 5; //1ロットの数量
required double priceSpread = 6; //価差
required string updateTime = 7; //更新時間文字列(フォーマット:yyyy-MM-dd HH:mm:ss)
required double highPrice = 8; //高値
required double openPrice = 9; //始値
required double lowPrice = 10; //安値
required double lastClosePrice = 11; //前日終値
required double curPrice = 12; //最新価格
required int64 volume = 13; //出来高
required double turnover = 14; //売買代金
required double turnoverRate = 15; //売買回転率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double listTimestamp = 16; //上場タイムスタンプ
optional double updateTimestamp = 17; //更新タイムスタンプ
optional double askPrice = 18;//売値
optional double bidPrice = 19;//買値
optional int64 askVol = 20;//売り数量
optional int64 bidVol = 21;//買い数量
optional bool enableMargin = 22; // 信用買い可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double mortgageRatio = 23; // 株式担保率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double longMarginInitialRatio = 24; // 信用買い初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional bool enableShortSell = 25; // 空売り可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortSellRate = 26; // 空売り参考利率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional int64 shortAvailableVolume = 27; // 残りの空売り可能数量(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortMarginInitialRatio = 28; // 空売り(信用売り)初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double amplitude = 29; // 振幅(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double avgPrice = 30; // 平均価
optional double bidAskRatio = 31; // 委託比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double volumeRatio = 32; // 出来高比率
optional double highest52WeeksPrice = 33; // 52周高値
optional double lowest52WeeksPrice = 34; // 52周安値
optional double highestHistoryPrice = 35; // 過去高値
optional double lowestHistoryPrice = 36; // 過去安値
optional Qot_Common.PreAfterMarketData preMarket = 37; //Qot_Common::PreAfterMarketData プレマーケットデータ
optional Qot_Common.PreAfterMarketData afterMarket = 38; //Qot_Common::PreAfterMarketData
optional Qot_Common.PreAfterMarketData overnight = 42; //Qot_Common::PreAfterMarketData 夜間取引データ
optional int32 secStatus = 39; //Qot_Common::SecurityStatus 株式状態
optional double closePrice5Minute = 40; //5分钟終値
}
message Snapshot
{
required SnapshotBasicData basic = 1; //スナップショット基本データ
optional EquitySnapshotExData equityExData = 2; //正株スナップショット额外データ
optional WarrantSnapshotExData warrantExData = 3; //ワラントスナップショット额外データ
optional OptionSnapshotExData optionExData = 4; //オプションスナップショット额外データ
optional IndexSnapshotExData indexExData = 5; //指数スナップショット额外データ
optional PlateSnapshotExData plateExData = 6; //セクタースナップショット额外データ
optional FutureSnapshotExData futureExData = 7; //先物タイプの追加データ
optional TrustSnapshotExData trustExData = 8; //基金タイプ额外データ
}
message S2C
{
repeated Snapshot snapshotList = 1; //株式スナップショット
}
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
- 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_GetSecuritySnapshot::Request req;
Qot_GetSecuritySnapshot::C2S *c2s = req.mutable_c2s();
auto secList = c2s->mutable_securitylist();
Qot_Common::Security *sec = secList->Add();
sec->set_code("00700");
sec->set_market(Qot_Common::QotMarket::QotMarket_HK_Security);
m_GetSecuritySnapshotSerialNo = m_pQotApi->GetSecuritySnapshot(req);
cout << "Request GetSecuritySnapshot SerialNo: " << m_GetSecuritySnapshotSerialNo << endl;
}
virtual void OnReply_GetSecuritySnapshot(Futu::u32_t nSerialNo, const Qot_GetSecuritySnapshot::Response &stRsp){
if(nSerialNo == m_GetSecuritySnapshotSerialNo)
{
cout << "OnReply_GetSecuritySnapshot 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_GetSecuritySnapshotSerialNo;
};
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
72
- Output
connect
Request GetSecuritySnapshot SerialNo: 4
OnReply_GetSecuritySnapshot SerialNo: 4
{
"retType": 0,
"retMsg": "",
"errCode": 0,
"s2c": {
"snapshotList": [
{
"basic": {
"security": {
"market": 1,
"code": "00700"
},
"type": 3,
"isSuspend": false,
"listTime": "2004-06-16",
"lotSize": 100,
"priceSpread": 0.5,
"updateTime": "2021-06-09 11:01:40",
"highPrice": 605.5,
"openPrice": 600,
"lowPrice": 597.5,
"lastClosePrice": 601,
"curPrice": 604,
"volume": "2771395",
"turnover": 1668044020,
"turnoverRate": 0.029,
"listTimestamp": 1087315200,
"updateTimestamp": 1623207700,
"askPrice": 604.5,
"bidPrice": 604,
"askVol": "21500",
"bidVol": "9500",
"enableMargin": true,
"mortgageRatio": 0,
"longMarginInitialRatio": 35,
"enableShortSell": true,
"shortSellRate": 0.9,
"shortAvailableVolume": "1849300",
"shortMarginInitialRatio": 60,
"amplitude": 1.331,
"avgPrice": 601.878,
"bidAskRatio": -9.111,
"volumeRatio": 0.643,
"highest52WeeksPrice": 773.9,
"lowest52WeeksPrice": 430.6,
"highestHistoryPrice": 773.9,
"lowestHistoryPrice": -6.381,
"secStatus": 1,
"closePrice5Minute": 603.5
},
"equityExData": {
"issuedShares": "9595206625",
"issuedMarketVal": 5795504801500,
"netAsset": 917675966408.375,
"netProfit": 190378494646.625,
"earningsPershare": 19.841,
"outstandingShares": "9595206625",
"outstandingMarketVal": 5795504801500,
"netAssetPershare": 95.639,
"eyRate": 0.232,
"peRate": 30.442,
"pbRate": 6.315,
"peTTMRate": 27.194,
"dividendTTM": 1.6,
"dividendRatioTTM": 0.26,
"dividendLFY": 1.6,
"dividendLFYRatio": 0.264
}
}
]
}
}
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
76
GetSecuritySnapshot(req);
概要
スナップショットデータの取得
パラメータ
message C2S
{
repeated Qot_Common.Security securityList = 1; //株式
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 株式構造は~を参照: Security
- 戻り値
// 正株タイプの追加データ
message EquitySnapshotExData
{
required int64 issuedShares = 1; // 総株式数
required double issuedMarketVal = 2; // 時価総額 = 総株式数 × 現在価格
required double netAsset = 3; // 純資産
required double netProfit = 4; // 利益(損失)
required double earningsPershare = 5; // EPS
required int64 outstandingShares = 6; // 流通株式数
required double outstandingMarketVal = 7; // 流通時価総額 = 流通株式数 × 現在価格
required double netAssetPershare = 8; // 一株当たり純資産
required double eyRate = 9; // 益回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double peRate = 10; // PER
required double pbRate = 11; // PBR
required double peTTMRate = 12; // PER TTM
optional double dividendTTM = 13; // 配当金 TTM
optional double dividendRatioTTM = 14; // 配当利回り TTM(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double dividendLFY = 15; // 配当金 LFY(前年度配当)
optional double dividendLFYRatio = 16; // 配当利回り LFY(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
}
// ワラントタイプの追加データ
message WarrantSnapshotExData
{
required double conversionRate = 1; //換株比率
required int32 warrantType = 2; //Qot_Common.WarrantType、ワラントタイプ
required double strikePrice = 3; //行使価格
required string maturityTime = 4; //満期日文字列
required string endTradeTime = 5; //最終取引日文字列
required Qot_Common.Security owner = 6; //原資産正株
required double recoveryPrice = 7; //回収価格,CBBC のみこのフィールドに対応
required int64 streetVolumn = 8; //街貨量
required int64 issueVolumn = 9; //発行量
required double streetRate = 10; //街貨比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 11; //デルタ値,コール・プットのみこのフィールドに対応
required double impliedVolatility = 12; //IV(インプライドボラティリティ),コール・プットのみこのフィールドに対応
required double premium = 13; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double maturityTimestamp = 14; //満期日タイムスタンプ
optional double endTradeTimestamp = 15; //最終取引日タイムスタンプ
optional double leverage = 16; // レバレッジ比率(倍)
optional double ipop = 17; // インザマネー/アウトオブザマネー(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double breakEvenPoint = 18; // 損益分岐点
optional double conversionPrice = 19; // 換株価格
optional double priceRecoveryRatio = 20; // 正株の回収価格までの距離(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double score = 21; // 総合スコア
optional double upperStrikePrice = 22; //上限価,インラインワラントのみこのフィールドに対応
optional double lowerStrikePrice = 23; //下限価,インラインワラントのみこのフィールドに対応
optional int32 inLinePriceStatus = 24; //Qot_Common.PriceType、界内/界外。インラインワラントのみこのフィールドに対応
optional string issuerCode = 25; //発行体コード
}
// オプションタイプの追加データ
message OptionSnapshotExData
{
required int32 type = 1; //Qot_Common.OptionType、オプションタイプ(方向別)
required Qot_Common.Security owner = 2; //原資産株
required string strikeTime = 3; //行使日文字列(フォーマット:yyyy-MM-dd)
required double strikePrice = 4; //行使価格
required int32 contractSize = 5; //1 契約あたりの株数(整型データ)
optional double contractSizeFloat = 22; //1 契約あたりの株数(浮点型データ)
required int32 openInterest = 6; //未決済建玉数
required double impliedVolatility = 7; //IV(インプライドボラティリティ)(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double premium = 8; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 9; //グリークス Delta
required double gamma = 10; //グリークス Gamma
required double vega = 11; //グリークス Vega
required double theta = 12; //グリークス Theta
required double rho = 13; //グリークス Rho
optional double strikeTimestamp = 14; //行使日タイムスタンプ
optional int32 indexOptionType = 15; //Qot_Common.IndexOptionType、指数オプションタイプ
optional int32 netOpenInterest = 16; //ネット未決済建玉数,香港株オプションのみ適用
optional int32 expiryDateDistance = 17; //距离満期日天数,負の数は満期済みを示します
optional double contractNominalValue = 18; //契約想定元本,香港株オプションのみ適用
optional double ownerLotMultiplier = 19; //相等正株手数,指数オプションにはこのフィールドはありません,香港株オプションのみ適用
optional int32 optionAreaType = 20; //Qot_Common.OptionAreaType、オプションタイプ(行使時間別)
optional double contractMultiplier = 21; //契約乗数
}
// 指数タイプの追加データ
message IndexSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
// セクタータイプの追加データ
message PlateSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
//先物タイプの追加データ
message FutureSnapshotExData
{
required double lastSettlePrice = 1; //前日決済値
required int32 position = 2; //建玉数
required int32 positionChange = 3; //日次建玉変動
required string lastTradeTime = 4; //最后取引日,主連以外の先物契約のみこのフィールドあり
optional double lastTradeTimestamp = 5; //最終取引日タイムスタンプ,主連以外の先物契約のみこのフィールドあり
required bool isMainContract = 6; //かどうか主連契約
}
//基金タイプ额外データ
message TrustSnapshotExData
{
required double dividendYield = 1; //配当利回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double aum = 2; //資産規模
required int64 outstandingUnits = 3; //総発行口数
required double netAssetValue = 4; //基準価額
required double premium = 5; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required int32 assetClass = 6; //Qot_Common.AssetClass、資産種別
}
//基本スナップショットデータ
message SnapshotBasicData
{
required Qot_Common.Security security = 1; //銘柄
optional string name = 41; //銘柄名
required int32 type = 2; //Qot_Common.SecurityType、銘柄タイプ
required bool isSuspend = 3; //かどうか売買停止
required string listTime = 4; //上場時間文字列(フォーマット:yyyy-MM-dd)
required int32 lotSize = 5; //1ロットの数量
required double priceSpread = 6; //価差
required string updateTime = 7; //更新時間文字列(フォーマット:yyyy-MM-dd HH:mm:ss)
required double highPrice = 8; //高値
required double openPrice = 9; //始値
required double lowPrice = 10; //安値
required double lastClosePrice = 11; //前日終値
required double curPrice = 12; //最新価格
required int64 volume = 13; //出来高
required double turnover = 14; //売買代金
required double turnoverRate = 15; //売買回転率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double listTimestamp = 16; //上場タイムスタンプ
optional double updateTimestamp = 17; //更新タイムスタンプ
optional double askPrice = 18;//売値
optional double bidPrice = 19;//買値
optional int64 askVol = 20;//売り数量
optional int64 bidVol = 21;//買い数量
optional bool enableMargin = 22; // 信用買い可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double mortgageRatio = 23; // 株式担保率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double longMarginInitialRatio = 24; // 信用買い初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional bool enableShortSell = 25; // 空売り可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortSellRate = 26; // 空売り参考利率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional int64 shortAvailableVolume = 27; // 残りの空売り可能数量(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortMarginInitialRatio = 28; // 空売り(信用売り)初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double amplitude = 29; // 振幅(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double avgPrice = 30; // 平均価
optional double bidAskRatio = 31; // 委託比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double volumeRatio = 32; // 出来高比率
optional double highest52WeeksPrice = 33; // 52周高値
optional double lowest52WeeksPrice = 34; // 52周安値
optional double highestHistoryPrice = 35; // 過去高値
optional double lowestHistoryPrice = 36; // 過去安値
optional Qot_Common.PreAfterMarketData preMarket = 37; //Qot_Common::PreAfterMarketData プレマーケットデータ
optional Qot_Common.PreAfterMarketData afterMarket = 38; //Qot_Common::PreAfterMarketData
optional Qot_Common.PreAfterMarketData overnight = 42; //Qot_Common::PreAfterMarketData 夜間取引データ
optional int32 secStatus = 39; //Qot_Common::SecurityStatus 株式状態
optional double closePrice5Minute = 40; //5分钟終値
}
message Snapshot
{
required SnapshotBasicData basic = 1; //スナップショット基本データ
optional EquitySnapshotExData equityExData = 2; //正株スナップショット额外データ
optional WarrantSnapshotExData warrantExData = 3; //ワラントスナップショット额外データ
optional OptionSnapshotExData optionExData = 4; //オプションスナップショット额外データ
optional IndexSnapshotExData indexExData = 5; //指数スナップショット额外データ
optional PlateSnapshotExData plateExData = 6; //セクタースナップショット额外データ
optional FutureSnapshotExData futureExData = 7; //先物タイプの追加データ
optional TrustSnapshotExData trustExData = 8; //基金タイプ额外データ
}
message S2C
{
repeated Snapshot snapshotList = 1; //株式スナップショット
}
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
- 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 QotGetSecuritySnapshot(){
const { RetType } = Common
const { SubType, 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: {
securityList: [
{
market: QotMarket.QotMarket_HK_Security,
code: "00700",
},
],
},
};
websocket.GetSecuritySnapshot(req)
.then((res) => {
let { errCode, retMsg, retType,s2c } = res
console.log("Snapshot: errCode %d, retMsg %s, retType %d", errCode, retMsg, retType);
if(retType == RetType.RetType_Succeed){
let snapshot = beautify(JSON.stringify(s2c), {
indent_size: 2,
space_in_empty_paren: true,
});
console.log(snapshot);
}
})
.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
53
54
- Output
Snapshot: errCode 0, retMsg , retType 0
{
"snapshotList": [{
"basic": {
"security": {
"market": 1,
"code": "00700"
},
"type": 3,
"isSuspend": false,
"listTime": "2004-06-16",
"lotSize": 100,
"priceSpread": 0.2,
"updateTime": "2021-09-09 16:08:17",
"highPrice": 511.5,
"openPrice": 509,
"lowPrice": 479,
"lastClosePrice": 524.5,
"curPrice": 480,
"volume": "54090872",
"turnover": 26716845932,
"turnoverRate": 0.563,
"listTimestamp": 1087315200,
"updateTimestamp": 1631174897,
"askPrice": 480.4,
"bidPrice": 480,
"askVol": "700",
"bidVol": "55300",
"enableMargin": true,
"mortgageRatio": 0,
"longMarginInitialRatio": 35,
"enableShortSell": true,
"shortSellRate": 0.92,
"shortAvailableVolume": "3059000",
"shortMarginInitialRatio": 50,
"amplitude": 6.196,
"avgPrice": 493.925,
"bidAskRatio": 22.703,
"volumeRatio": 1.775,
"highest52WeeksPrice": 773.9,
"lowest52WeeksPrice": 412.2,
"highestHistoryPrice": 773.9,
"lowestHistoryPrice": -6.381,
"secStatus": 1,
"closePrice5Minute": 483.4
},
"equityExData": {
"issuedShares": "9599810645",
"issuedMarketVal": 4607909109600,
"netAsset": 1016063158288.09,
"netProfit": 190383444711.64,
"earningsPershare": 19.832,
"outstandingShares": "9599810645",
"outstandingMarketVal": 4607909109600,
"netAssetPershare": 105.842,
"eyRate": 0.22,
"peRate": 24.203,
"pbRate": 4.535,
"peTTMRate": 20.532,
"dividendTTM": 1.599,
"dividendRatioTTM": 0.33,
"dividendLFY": 1.599,
"dividendLFYRatio": 0.333
}
}]
}
stop
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
APIレート制限
- 30 秒以内に最大 60 次スナップショット。
- 1回のリクエストにつき、APIパラメータ 銘柄コードリスト で指定できる原資産数の上限は 400 個です。
- 香港株 BMP 権限では、1回のリクエストにおける香港証券(ワラント、CBBC、インラインワラントを含む)のスナップショット数の上限は 20 個です。
- 香港株オプション先物 BMP 権限では、1回のリクエストにおける香港先物およびオプションのスナップショット数の上限は 20 個です。
- Python
- Proto
- C#
- Java
- C++
- JavaScript
get_market_snapshot(code_list)
概要
スナップショットデータの取得
パラメータ
パラメータ 型 説明 code_list list 銘柄コードリスト 1 回のリクエストで最大 400 銘柄まで
list 内の要素の型は str
戻り値
パラメータ 型 説明 ret RET_CODE API呼び出し結果 data pd.DataFrame ret == RET_OK の場合、株式スナップショットデータ str ret != RET_OK の場合、エラーの説明を返す - 株式スナップショットデータフォーマットは以下の通りです:
フィールド タイプ 説明 code str 銘柄コード name str 銘柄名 update_time str 現在値更新時間 フォーマット:yyyy-MM-dd HH:mm:ss
香港株と A 株市場のデフォルトは北京時間、米国株市場のデフォルトは米国東部時間last_price float 最新価格 open_price float 今日始値 high_price float 高値 low_price float 安値 prev_close_price float 昨終値格 volume int 出来高 turnover float 売買代金 turnover_rate float 売買回転率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますsuspension bool かどうか売買停止 True:売買停止中listing_date str 上場日 フォーマット:yyyy-MM-ddequity_valid bool 正株かどうか このフィールドが True の場合、以下の正株関連フィールドに有効な値が入りますissued_shares int 総株式数 total_market_val float 時価総額 単位:元net_asset int 純資産 net_profit int 純利益 earning_per_share float EPS outstanding_shares int 流通株式数 net_asset_per_share float 一株当たり純資産 circular_market_val float 流通時価総額 単位:元ey_ratio float 益回り このフィールドは比率フィールドで、デフォルトでは % を表示しませんpe_ratio float PER このフィールドは比率フィールドで、デフォルトでは % を表示しませんpb_ratio float PBR このフィールドは比率フィールドで、デフォルトでは % を表示しませんpe_ttm_ratio float PER TTM このフィールドは比率フィールドで、デフォルトでは % を表示しませんdividend_ttm float 配当金 TTM,配当 dividend_ratio_ttm float 配当利回り TTM このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますdividend_lfy float 配当金 LFY,上一年度配当 dividend_lfy_ratio float 配当利回り LFY このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますstock_owner str ワラントが属する正株のコード、またはオプションの原資産株コード wrt_valid bool ワラントかどうか このフィールドが True の場合、以下のワラント関連フィールドに有効な値が入りますwrt_conversion_ratio float 換株比率 wrt_type WrtType ワラントタイプ wrt_strike_price float 行使価格 wrt_maturity_date str フォーマット化ワラント到期時間 wrt_end_trade str フォーマット化ワラント最后取引時間 wrt_leverage float レバレッジ比率 単位:倍wrt_ipop float インザマネー/アウトオブザマネー このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますwrt_break_even_point float 損益分岐点 wrt_conversion_price float 換株価格 wrt_price_recovery_ratio float 正株の回収価格までの距離 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますwrt_score float ワラント総合スコア wrt_code str ワラントに対応する正株(このフィールドは廃止済みです。変更先: stock_owner) wrt_recovery_price float ワラント回収価格 wrt_street_vol float ワラント街貨量 wrt_issue_vol float ワラント発行量 wrt_street_ratio float ワラント街貨比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますwrt_delta float ワラントデルタ値 wrt_implied_volatility float ワラントIV(インプライドボラティリティ) wrt_premium float ワラントプレミアム このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますwrt_upper_strike_price float 上限価 インラインワラントのみこのフィールドに対応wrt_lower_strike_price float 下限価 インラインワラントのみこのフィールドに対応wrt_inline_price_status PriceType 界内/界外 インラインワラントのみこのフィールドに対応wrt_issuer_code str 発行体コード option_valid bool オプションかどうか このフィールドが True の場合、以下のオプション関連フィールドに有効な値が入りますoption_type OptionType オプションタイプ strike_time str オプション行使日 フォーマット:yyyy-MM-dd
香港株と A 株市場のデフォルトは北京時間、米国株市場のデフォルトは米国東部時間option_strike_price float 行使価格 option_contract_size float 1 契約あたりの株数 option_open_interest int 未決済建玉数 option_implied_volatility float IV(インプライドボラティリティ) option_premium float プレミアム option_delta float グリークス Delta option_gamma float グリークス Gamma option_vega float グリークス Vega option_theta float グリークス Theta option_rho float グリークス Rho index_option_type IndexOptionType 指数オプションタイプ option_net_open_interest int ネット未決済建玉数 香港株オプションのみ適用option_expiry_date_distance int 距离満期日天数 負の数は満期済みを示しますoption_contract_nominal_value float 契約想定元本 香港株オプションのみ適用option_owner_lot_multiplier float 相等正株手数 指数オプションにはこのフィールドはありません,香港株オプションのみ適用option_area_type OptionAreaType オプションタイプ(按行權時間) option_contract_multiplier float 契約乗数 plate_valid bool セクタータイプかどうか このフィールドが True の場合、以下のセクター関連フィールドに有効な値が入りますplate_raise_count int セクタータイプ上涨支数 plate_fall_count int セクタータイプ下跌支数 plate_equal_count int セクタータイプ平盤支数 index_valid bool 指数タイプかどうか このフィールドが True の場合、以下の指数関連フィールドに有効な値が入りますindex_raise_count int 指数タイプ上涨支数 index_fall_count int 指数タイプ下跌支数 index_equal_count int 指数タイプ平盤支数 lot_size int 1手あたりの株数。株式オプションの場合は1枚あたりの株数 、先物の場合は契約乗数指数オプションにはこのフィールドはありませんprice_spread float 現在の上方向の板情報スプレッド 板情報データの最良売り気配の隣接値幅における気配値差ask_price float 売値 bid_price float 買値 ask_vol float 売り数量 bid_vol float 買い数量 enable_margin bool 信用買い可能かどうか(廃止済み) をご利用ください 信用取引データ取得 API で取得してくださいmortgage_ratio float 株式担保率(廃止済み) long_margin_initial_ratio float 信用買い初期証拠金率(廃止済み) をご利用ください 信用取引データ取得 API で取得してくださいenable_short_sell bool 空売り可能かどうか(廃止済み) をご利用ください 信用取引データ取得 API で取得してくださいshort_sell_rate float 空売り参考利率(廃止済み) をご利用ください 信用取引データ取得 API で取得してくださいshort_available_volume int 残りの空売り可能数量(廃止済み) をご利用ください 信用取引データ取得 API で取得してくださいshort_margin_initial_ratio float 空売り(信用売り)初期証拠金率(廃止済み) をご利用ください 信用取引データ取得 API で取得してくださいsec_status SecurityStatus 株式状態 amplitude float 振幅 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますavg_price float 平均価 bid_ask_ratio float 委託比率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますvolume_ratio float 出来高比率 highest52weeks_price float 52 周高値 lowest52weeks_price float 52 周安値 highest_history_price float 過去高値 lowest_history_price float 過去安値 pre_price float プレマーケット価格 pre_high_price float プレマーケット高値 pre_low_price float プレマーケット安値 pre_volume int プレマーケット出来高 pre_turnover float プレマーケット売買代金 pre_change_val float プレマーケット騰落額 pre_change_rate float プレマーケット騰落率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますpre_amplitude float プレマーケット振幅 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますafter_price float アフターマーケット価格 after_high_price float アフターマーケット高値 after_low_price float アフターマーケット安値 after_volume int アフターマーケット出来高 科創板はこのデータに対応していますafter_turnover float アフターマーケット売買代金 科創板はこのデータに対応していますafter_change_val float アフターマーケット騰落額 after_change_rate float アフターマーケット騰落率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますafter_amplitude float アフターマーケット振幅 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますovernight_price float 夜間取引価格 overnight_high_price float 夜間取引高値 overnight_low_price float 夜間取引安値 overnight_volume int 夜間取引出来高 overnight_turnover float 夜間取引売買代金 overnight_change_val float 夜間取引騰落額 overnight_change_rate float 夜間取引騰落率 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますovernight_amplitude float 夜間取引振幅 このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますfuture_valid bool かどうか先物 future_last_settle_price float 前日決済値 future_position float 建玉数 future_position_change float 日次建玉変動 future_main_contract bool かどうか主連契約 future_last_trade_time str 最后取引時間 主連、当月、翌月等の先物にはこのフィールドはありませんtrust_valid bool かどうか基金 trust_dividend_yield float 配当利回り このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますtrust_aum float 資産規模 単位:元trust_outstanding_units int 総発行口数 trust_netAssetValue float 基準価額 trust_premium float プレミアム このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応しますtrust_assetClass AssetClass 資産種別
- 株式スナップショットデータフォーマットは以下の通りです:
Example
from moomoo import *
quote_ctx = OpenQuoteContext(host='127.0.0.1', port=11111)
ret, data = quote_ctx.get_market_snapshot(['HK.00700', 'US.AAPL'])
if ret == RET_OK:
print(data)
print(data['code'][0]) # 最初のレコードの銘柄コードを取得
print(data['code'].values.tolist()) # list に変換
else:
print('error:', data)
quote_ctx.close() # 使用後は接続をクローズしてください。接続数の枯渇を防止します。
2
3
4
5
6
7
8
9
10
11
- Output
code name update_time last_price open_price high_price low_price prev_close_price volume turnover turnover_rate suspension listing_date lot_size price_spread stock_owner ask_price bid_price ask_vol bid_vol enable_margin mortgage_ratio long_margin_initial_ratio enable_short_sell short_sell_rate short_available_volume short_margin_initial_ratio amplitude avg_price bid_ask_ratio volume_ratio highest52weeks_price lowest52weeks_price highest_history_price lowest_history_price close_price_5min after_volume after_turnover sec_status equity_valid issued_shares total_market_val net_asset net_profit earning_per_share outstanding_shares circular_market_val net_asset_per_share ey_ratio pe_ratio pb_ratio pe_ttm_ratio dividend_ttm dividend_ratio_ttm dividend_lfy dividend_lfy_ratio wrt_valid wrt_conversion_ratio wrt_type wrt_strike_price wrt_maturity_date wrt_end_trade wrt_recovery_price wrt_street_vol \
0 HK.00700 腾讯控股 2025-04-07 16:09:07 435.40 441.80 462.40 431.00 497.80 123364114 5.499476e+10 1.341 False 2004-06-16 100 0.20 NaN 435.4 435.20 281300 17300 NaN NaN NaN NaN NaN NaN NaN 6.308 445.792 -68.499 5.627 547.00000 294.400000 706.100065 -13.202011 431.60 0 0.000000e+00 NORMAL True 9202391012 4.006721e+12 1.051300e+12 2.095753e+11 22.774 9202391012 4.006721e+12 114.242 0.199 19.118 3.811 19.118 3.48 0.80 3.48 0.799 False NaN N/A NaN NaN NaN NaN NaN
1 US.AAPL 苹果 2025-04-07 05:30:43.301 188.38 193.89 199.88 187.34 203.19 125910913 2.424473e+10 0.838 False 1980-12-12 1 0.01 NaN 180.8 180.48 29 400 NaN NaN NaN NaN NaN NaN NaN 6.172 192.554 86.480 2.226 259.81389 163.300566 259.813890 0.053580 188.93 3151311 5.930968e+08 NORMAL True 15022073000 2.829858e+12 6.675809e+10 9.133420e+10 6.080 15016677308 2.828842e+12 4.444 1.417 30.983 42.389 29.901 0.99 0.53 0.98 0.520 False NaN N/A NaN NaN NaN NaN NaN
wrt_issue_vol wrt_street_ratio wrt_delta wrt_implied_volatility wrt_premium wrt_leverage wrt_ipop wrt_break_even_point wrt_conversion_price wrt_price_recovery_ratio wrt_score wrt_upper_strike_price wrt_lower_strike_price wrt_inline_price_status wrt_issuer_code option_valid option_type strike_time option_strike_price option_contract_size option_open_interest option_implied_volatility option_premium option_delta option_gamma option_vega option_theta option_rho option_net_open_interest option_expiry_date_distance option_contract_nominal_value option_owner_lot_multiplier option_area_type option_contract_multiplier index_option_type index_valid index_raise_count index_fall_count index_equal_count plate_valid plate_raise_count plate_fall_count plate_equal_count future_valid future_last_settle_price future_position future_position_change future_main_contract future_last_trade_time trust_valid trust_dividend_yield trust_aum \
0 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN N/A NaN False N/A NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN N/A NaN N/A False NaN NaN NaN False NaN NaN NaN False NaN NaN NaN NaN NaN False NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN N/A NaN False N/A NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN N/A NaN N/A False NaN NaN NaN False NaN NaN NaN False NaN NaN NaN NaN NaN False NaN NaN
trust_outstanding_units trust_netAssetValue trust_premium trust_assetClass pre_price pre_high_price pre_low_price pre_volume pre_turnover pre_change_val pre_change_rate pre_amplitude after_price after_high_price after_low_price after_change_val after_change_rate after_amplitude overnight_price overnight_high_price overnight_low_price overnight_volume overnight_turnover overnight_change_val overnight_change_rate overnight_amplitude
0 NaN NaN NaN N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A N/A
1 NaN NaN NaN N/A 180.68 181.98 177.47 276016 49809244.83 -7.7 -4.087 2.394 186.6 188.639 186.44 -1.78 -0.944 1.1673 176.94 186.5 174.4 533115 94944250.56 -11.44 -6.072 6.4231
HK.00700
['HK.00700', 'US.AAPL']
2
3
4
5
6
7
8
9
10
11
12
13
# Qot_GetSecuritySnapshot.proto
概要
スナップショットデータの取得
パラメータ
message C2S
{
repeated Qot_Common.Security securityList = 1; //株式
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 株式構造は~を参照: Security
- 戻り値
// 正株タイプの追加データ
message EquitySnapshotExData
{
required int64 issuedShares = 1; // 総株式数
required double issuedMarketVal = 2; // 時価総額 = 総株式数 × 現在価格
required double netAsset = 3; // 純資産
required double netProfit = 4; // 利益(損失)
required double earningsPershare = 5; // EPS
required int64 outstandingShares = 6; // 流通株式数
required double outstandingMarketVal = 7; // 流通時価総額 = 流通株式数 × 現在価格
required double netAssetPershare = 8; // 一株当たり純資産
required double eyRate = 9; // 益回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double peRate = 10; // PER
required double pbRate = 11; // PBR
required double peTTMRate = 12; // PER TTM
optional double dividendTTM = 13; // 配当金 TTM
optional double dividendRatioTTM = 14; // 配当利回り TTM(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double dividendLFY = 15; // 配当金 LFY(前年度配当)
optional double dividendLFYRatio = 16; // 配当利回り LFY(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
}
// ワラントタイプの追加データ
message WarrantSnapshotExData
{
required double conversionRate = 1; //換株比率
required int32 warrantType = 2; //Qot_Common.WarrantType、ワラントタイプ
required double strikePrice = 3; //行使価格
required string maturityTime = 4; //満期日文字列
required string endTradeTime = 5; //最終取引日文字列
required Qot_Common.Security owner = 6; //原資産正株
required double recoveryPrice = 7; //回収価格,CBBC のみこのフィールドに対応
required int64 streetVolumn = 8; //街貨量
required int64 issueVolumn = 9; //発行量
required double streetRate = 10; //街貨比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 11; //デルタ値,コール・プットのみこのフィールドに対応
required double impliedVolatility = 12; //IV(インプライドボラティリティ),コール・プットのみこのフィールドに対応
required double premium = 13; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double maturityTimestamp = 14; //満期日タイムスタンプ
optional double endTradeTimestamp = 15; //最終取引日タイムスタンプ
optional double leverage = 16; // レバレッジ比率(倍)
optional double ipop = 17; // インザマネー/アウトオブザマネー(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double breakEvenPoint = 18; // 損益分岐点
optional double conversionPrice = 19; // 換株価格
optional double priceRecoveryRatio = 20; // 正株の回収価格までの距離(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double score = 21; // 総合スコア
optional double upperStrikePrice = 22; //上限価,インラインワラントのみこのフィールドに対応
optional double lowerStrikePrice = 23; //下限価,インラインワラントのみこのフィールドに対応
optional int32 inLinePriceStatus = 24; //Qot_Common.PriceType、界内/界外。インラインワラントのみこのフィールドに対応
optional string issuerCode = 25; //発行体コード
}
// オプションタイプの追加データ
message OptionSnapshotExData
{
required int32 type = 1; //Qot_Common.OptionType、オプションタイプ(方向別)
required Qot_Common.Security owner = 2; //原資産株
required string strikeTime = 3; //行使日文字列(フォーマット:yyyy-MM-dd)
required double strikePrice = 4; //行使価格
required int32 contractSize = 5; //1 契約あたりの株数(整型データ)
optional double contractSizeFloat = 22; //1 契約あたりの株数(浮点型データ)
required int32 openInterest = 6; //未決済建玉数
required double impliedVolatility = 7; //IV(インプライドボラティリティ)(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double premium = 8; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 9; //グリークス Delta
required double gamma = 10; //グリークス Gamma
required double vega = 11; //グリークス Vega
required double theta = 12; //グリークス Theta
required double rho = 13; //グリークス Rho
optional double strikeTimestamp = 14; //行使日タイムスタンプ
optional int32 indexOptionType = 15; //Qot_Common.IndexOptionType、指数オプションタイプ
optional int32 netOpenInterest = 16; //ネット未決済建玉数,香港株オプションのみ適用
optional int32 expiryDateDistance = 17; //距离満期日天数,負の数は満期済みを示します
optional double contractNominalValue = 18; //契約想定元本,香港株オプションのみ適用
optional double ownerLotMultiplier = 19; //相等正株手数,指数オプションにはこのフィールドはありません,香港株オプションのみ適用
optional int32 optionAreaType = 20; //Qot_Common.OptionAreaType、オプションタイプ(行使時間別)
optional double contractMultiplier = 21; //契約乗数
}
// 指数タイプの追加データ
message IndexSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
// セクタータイプの追加データ
message PlateSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
//先物タイプの追加データ
message FutureSnapshotExData
{
required double lastSettlePrice = 1; //前日決済値
required int32 position = 2; //建玉数
required int32 positionChange = 3; //日次建玉変動
required string lastTradeTime = 4; //最后取引日,主連以外の先物契約のみこのフィールドあり
optional double lastTradeTimestamp = 5; //最終取引日タイムスタンプ,主連以外の先物契約のみこのフィールドあり
required bool isMainContract = 6; //かどうか主連契約
}
//基金タイプ额外データ
message TrustSnapshotExData
{
required double dividendYield = 1; //配当利回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double aum = 2; //資産規模
required int64 outstandingUnits = 3; //総発行口数
required double netAssetValue = 4; //基準価額
required double premium = 5; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required int32 assetClass = 6; //Qot_Common.AssetClass、資産種別
}
//基本スナップショットデータ
message SnapshotBasicData
{
required Qot_Common.Security security = 1; //銘柄
optional string name = 41; //銘柄名
required int32 type = 2; //Qot_Common.SecurityType、銘柄タイプ
required bool isSuspend = 3; //かどうか売買停止
required string listTime = 4; //上場時間文字列(フォーマット:yyyy-MM-dd)
required int32 lotSize = 5; //1ロットの数量
required double priceSpread = 6; //価差
required string updateTime = 7; //更新時間文字列(フォーマット:yyyy-MM-dd HH:mm:ss)
required double highPrice = 8; //高値
required double openPrice = 9; //始値
required double lowPrice = 10; //安値
required double lastClosePrice = 11; //前日終値
required double curPrice = 12; //最新価格
required int64 volume = 13; //出来高
required double turnover = 14; //売買代金
required double turnoverRate = 15; //売買回転率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double listTimestamp = 16; //上場タイムスタンプ
optional double updateTimestamp = 17; //更新タイムスタンプ
optional double askPrice = 18;//売値
optional double bidPrice = 19;//買値
optional int64 askVol = 20;//売り数量
optional int64 bidVol = 21;//買い数量
optional bool enableMargin = 22; // 信用買い可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double mortgageRatio = 23; // 株式担保率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double longMarginInitialRatio = 24; // 信用買い初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional bool enableShortSell = 25; // 空売り可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortSellRate = 26; // 空売り参考利率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional int64 shortAvailableVolume = 27; // 残りの空売り可能数量(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortMarginInitialRatio = 28; // 空売り(信用売り)初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double amplitude = 29; // 振幅(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double avgPrice = 30; // 平均価
optional double bidAskRatio = 31; // 委託比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double volumeRatio = 32; // 出来高比率
optional double highest52WeeksPrice = 33; // 52周高値
optional double lowest52WeeksPrice = 34; // 52周安値
optional double highestHistoryPrice = 35; // 過去高値
optional double lowestHistoryPrice = 36; // 過去安値
optional Qot_Common.PreAfterMarketData preMarket = 37; //Qot_Common::PreAfterMarketData プレマーケットデータ
optional Qot_Common.PreAfterMarketData afterMarket = 38; //Qot_Common::PreAfterMarketData アフターマーケットデータ
optional Qot_Common.PreAfterMarketData overnight = 42; //Qot_Common::PreAfterMarketData 夜間取引データ
optional int32 secStatus = 39; //Qot_Common::SecurityStatus 株式状態
optional double closePrice5Minute = 40; //5分钟終値
}
message Snapshot
{
required SnapshotBasicData basic = 1; //スナップショット基本データ
optional EquitySnapshotExData equityExData = 2; //正株スナップショット额外データ
optional WarrantSnapshotExData warrantExData = 3; //ワラントスナップショット额外データ
optional OptionSnapshotExData optionExData = 4; //オプションスナップショット额外データ
optional IndexSnapshotExData indexExData = 5; //指数スナップショット额外データ
optional PlateSnapshotExData plateExData = 6; //セクタースナップショット额外データ
optional FutureSnapshotExData futureExData = 7; //先物タイプの追加データ
optional TrustSnapshotExData trustExData = 8; //基金タイプ额外データ
}
message S2C
{
repeated Snapshot snapshotList = 1; //株式スナップショット
}
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
プロトコル ID
3203
uint GetSecuritySnapshot(QotGetSecuritySnapshot.Request req);
virtual void OnReply_GetSecuritySnapshot(MMAPI_Conn client, uint nSerialNo, QotGetSecuritySnapshot.Response rsp);
概要
スナップショットデータの取得
パラメータ
message C2S
{
repeated Qot_Common.Security securityList = 1; //株式
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 株式構造は~を参照: Security
- 戻り値
// 正株タイプの追加データ
message EquitySnapshotExData
{
required int64 issuedShares = 1; // 総株式数
required double issuedMarketVal = 2; // 時価総額 = 総株式数 × 現在価格
required double netAsset = 3; // 純資産
required double netProfit = 4; // 利益(損失)
required double earningsPershare = 5; // EPS
required int64 outstandingShares = 6; // 流通株式数
required double outstandingMarketVal = 7; // 流通時価総額 = 流通株式数 × 現在価格
required double netAssetPershare = 8; // 一株当たり純資産
required double eyRate = 9; // 益回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double peRate = 10; // PER
required double pbRate = 11; // PBR
required double peTTMRate = 12; // PER TTM
optional double dividendTTM = 13; // 配当金 TTM
optional double dividendRatioTTM = 14; // 配当利回り TTM(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double dividendLFY = 15; // 配当金 LFY(前年度配当)
optional double dividendLFYRatio = 16; // 配当利回り LFY(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
}
// ワラントタイプの追加データ
message WarrantSnapshotExData
{
required double conversionRate = 1; //換株比率
required int32 warrantType = 2; //Qot_Common.WarrantType、ワラントタイプ
required double strikePrice = 3; //行使価格
required string maturityTime = 4; //満期日文字列
required string endTradeTime = 5; //最終取引日文字列
required Qot_Common.Security owner = 6; //原資産正株
required double recoveryPrice = 7; //回収価格,CBBC のみこのフィールドに対応
required int64 streetVolumn = 8; //街貨量
required int64 issueVolumn = 9; //発行量
required double streetRate = 10; //街貨比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 11; //デルタ値,コール・プットのみこのフィールドに対応
required double impliedVolatility = 12; //IV(インプライドボラティリティ),コール・プットのみこのフィールドに対応
required double premium = 13; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double maturityTimestamp = 14; //満期日タイムスタンプ
optional double endTradeTimestamp = 15; //最終取引日タイムスタンプ
optional double leverage = 16; // レバレッジ比率(倍)
optional double ipop = 17; // インザマネー/アウトオブザマネー(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double breakEvenPoint = 18; // 損益分岐点
optional double conversionPrice = 19; // 換株価格
optional double priceRecoveryRatio = 20; // 正株の回収価格までの距離(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double score = 21; // 総合スコア
optional double upperStrikePrice = 22; //上限価,インラインワラントのみこのフィールドに対応
optional double lowerStrikePrice = 23; //下限価,インラインワラントのみこのフィールドに対応
optional int32 inLinePriceStatus = 24; //Qot_Common.PriceType、界内/界外。インラインワラントのみこのフィールドに対応
optional string issuerCode = 25; //発行体コード
}
// オプションタイプの追加データ
message OptionSnapshotExData
{
required int32 type = 1; //Qot_Common.OptionType、オプションタイプ(方向別)
required Qot_Common.Security owner = 2; //原資産株
required string strikeTime = 3; //行使日文字列(フォーマット:yyyy-MM-dd)
required double strikePrice = 4; //行使価格
required int32 contractSize = 5; //1 契約あたりの株数(整型データ)
optional double contractSizeFloat = 22; //1 契約あたりの株数(浮点型データ)
required int32 openInterest = 6; //未決済建玉数
required double impliedVolatility = 7; //IV(インプライドボラティリティ)(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double premium = 8; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 9; //グリークス Delta
required double gamma = 10; //グリークス Gamma
required double vega = 11; //グリークス Vega
required double theta = 12; //グリークス Theta
required double rho = 13; //グリークス Rho
optional double strikeTimestamp = 14; //行使日タイムスタンプ
optional int32 indexOptionType = 15; //Qot_Common.IndexOptionType、指数オプションタイプ
optional int32 netOpenInterest = 16; //ネット未決済建玉数,香港株オプションのみ適用
optional int32 expiryDateDistance = 17; //距离満期日天数,負の数は満期済みを示します
optional double contractNominalValue = 18; //契約想定元本,香港株オプションのみ適用
optional double ownerLotMultiplier = 19; //相等正株手数,指数オプションにはこのフィールドはありません,香港株オプションのみ適用
optional int32 optionAreaType = 20; //Qot_Common.OptionAreaType、オプションタイプ(行使時間別)
optional double contractMultiplier = 21; //契約乗数
}
// 指数タイプの追加データ
message IndexSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
// セクタータイプの追加データ
message PlateSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
//先物タイプの追加データ
message FutureSnapshotExData
{
required double lastSettlePrice = 1; //前日決済値
required int32 position = 2; //建玉数
required int32 positionChange = 3; //日次建玉変動
required string lastTradeTime = 4; //最后取引日,主連以外の先物契約のみこのフィールドあり
optional double lastTradeTimestamp = 5; //最終取引日タイムスタンプ,主連以外の先物契約のみこのフィールドあり
required bool isMainContract = 6; //かどうか主連契約
}
//基金タイプ额外データ
message TrustSnapshotExData
{
required double dividendYield = 1; //配当利回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double aum = 2; //資産規模
required int64 outstandingUnits = 3; //総発行口数
required double netAssetValue = 4; //基準価額
required double premium = 5; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required int32 assetClass = 6; //Qot_Common.AssetClass、資産種別
}
//基本スナップショットデータ
message SnapshotBasicData
{
required Qot_Common.Security security = 1; //銘柄
optional string name = 41; //銘柄名
required int32 type = 2; //Qot_Common.SecurityType、銘柄タイプ
required bool isSuspend = 3; //かどうか売買停止
required string listTime = 4; //上場時間文字列(フォーマット:yyyy-MM-dd)
required int32 lotSize = 5; //1ロットの数量
required double priceSpread = 6; //価差
required string updateTime = 7; //更新時間文字列(フォーマット:yyyy-MM-dd HH:mm:ss)
required double highPrice = 8; //高値
required double openPrice = 9; //始値
required double lowPrice = 10; //安値
required double lastClosePrice = 11; //前日終値
required double curPrice = 12; //最新価格
required int64 volume = 13; //出来高
required double turnover = 14; //売買代金
required double turnoverRate = 15; //売買回転率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double listTimestamp = 16; //上場タイムスタンプ
optional double updateTimestamp = 17; //更新タイムスタンプ
optional double askPrice = 18;//売値
optional double bidPrice = 19;//買値
optional int64 askVol = 20;//売り数量
optional int64 bidVol = 21;//買い数量
optional bool enableMargin = 22; // 信用買い可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double mortgageRatio = 23; // 株式担保率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double longMarginInitialRatio = 24; // 信用買い初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional bool enableShortSell = 25; // 空売り可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortSellRate = 26; // 空売り参考利率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional int64 shortAvailableVolume = 27; // 残りの空売り可能数量(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortMarginInitialRatio = 28; // 空売り(信用売り)初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double amplitude = 29; // 振幅(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double avgPrice = 30; // 平均価
optional double bidAskRatio = 31; // 委託比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double volumeRatio = 32; // 出来高比率
optional double highest52WeeksPrice = 33; // 52周高値
optional double lowest52WeeksPrice = 34; // 52周安値
optional double highestHistoryPrice = 35; // 過去高値
optional double lowestHistoryPrice = 36; // 過去安値
optional Qot_Common.PreAfterMarketData preMarket = 37; //Qot_Common::PreAfterMarketData プレマーケットデータ
optional Qot_Common.PreAfterMarketData afterMarket = 38; //Qot_Common::PreAfterMarketData
optional Qot_Common.PreAfterMarketData overnight = 42; //Qot_Common::PreAfterMarketData 夜間取引データ
optional int32 secStatus = 39; //Qot_Common::SecurityStatus 株式状態
optional double closePrice5Minute = 40; //5分钟終値
}
message Snapshot
{
required SnapshotBasicData basic = 1; //スナップショット基本データ
optional EquitySnapshotExData equityExData = 2; //正株スナップショット额外データ
optional WarrantSnapshotExData warrantExData = 3; //ワラントスナップショット额外データ
optional OptionSnapshotExData optionExData = 4; //オプションスナップショット额外データ
optional IndexSnapshotExData indexExData = 5; //指数スナップショット额外データ
optional PlateSnapshotExData plateExData = 6; //セクタースナップショット额外データ
optional FutureSnapshotExData futureExData = 7; //先物タイプの追加データ
optional TrustSnapshotExData trustExData = 8; //基金タイプ额外データ
}
message S2C
{
repeated Snapshot snapshotList = 1; //株式スナップショット
}
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
- 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;
QotCommon.Security sec = QotCommon.Security.CreateBuilder()
.SetMarket((int)QotCommon.QotMarket.QotMarket_HK_Security)
.SetCode("00700")
.Build();
QotGetSecuritySnapshot.C2S c2s = QotGetSecuritySnapshot.C2S.CreateBuilder()
.AddSecurityList(sec)
.Build();
QotGetSecuritySnapshot.Request req = QotGetSecuritySnapshot.Request.CreateBuilder().SetC2S(c2s).Build();
uint seqNo = qot.GetSecuritySnapshot(req);
Console.Write("Send QotGetSecuritySnapshot: {0}\n", seqNo);
}
public void OnDisconnect(MMAPI_Conn client, long errCode) {
Console.Write("Qot onDisConnect: {0}\n", errCode);
}
public void OnReply_GetSecuritySnapshot(MMAPI_Conn client, uint nSerialNo, QotGetSecuritySnapshot.Response rsp)
{
Console.Write("Reply: QotGetSecuritySnapshot: {0} \n", nSerialNo);
Console.Write("basic price: {0}\n", rsp.S2C.SnapshotListList[0].Basic.CurPrice);
Console.Write("equityExData issuedShares: {0}\n", rsp.S2C.SnapshotListList[0].EquityExData.IssuedShares);
}
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
- Output
Qot onInitConnect: ret=0 desc= connID=6825619056039643630
Send QotGetSecuritySnapshot: 3
Reply: QotGetSecuritySnapshot: 3
basic price: 474.2
equityExData issuedShares: 9595900007
2
3
4
5
int getSecuritySnapshot(QotGetSecuritySnapshot.Request req);
void onReply_GetSecuritySnapshot(MMAPI_Conn client, int nSerialNo, QotGetSecuritySnapshot.Response rsp);
概要
スナップショットデータの取得
パラメータ
message C2S
{
repeated Qot_Common.Security securityList = 1; //株式
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 株式構造は~を参照: Security
- 戻り値
// 正株タイプの追加データ
message EquitySnapshotExData
{
required int64 issuedShares = 1; // 総株式数
required double issuedMarketVal = 2; // 時価総額 = 総株式数 × 現在価格
required double netAsset = 3; // 純資産
required double netProfit = 4; // 利益(損失)
required double earningsPershare = 5; // EPS
required int64 outstandingShares = 6; // 流通株式数
required double outstandingMarketVal = 7; // 流通時価総額 = 流通株式数 × 現在価格
required double netAssetPershare = 8; // 一株当たり純資産
required double eyRate = 9; // 益回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double peRate = 10; // PER
required double pbRate = 11; // PBR
required double peTTMRate = 12; // PER TTM
optional double dividendTTM = 13; // 配当金 TTM
optional double dividendRatioTTM = 14; // 配当利回り TTM(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double dividendLFY = 15; // 配当金 LFY(前年度配当)
optional double dividendLFYRatio = 16; // 配当利回り LFY(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
}
// ワラントタイプの追加データ
message WarrantSnapshotExData
{
required double conversionRate = 1; //換株比率
required int32 warrantType = 2; //Qot_Common.WarrantType、ワラントタイプ
required double strikePrice = 3; //行使価格
required string maturityTime = 4; //満期日文字列
required string endTradeTime = 5; //最終取引日文字列
required Qot_Common.Security owner = 6; //原資産正株
required double recoveryPrice = 7; //回収価格,CBBC のみこのフィールドに対応
required int64 streetVolumn = 8; //街貨量
required int64 issueVolumn = 9; //発行量
required double streetRate = 10; //街貨比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 11; //デルタ値,コール・プットのみこのフィールドに対応
required double impliedVolatility = 12; //IV(インプライドボラティリティ),コール・プットのみこのフィールドに対応
required double premium = 13; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double maturityTimestamp = 14; //満期日タイムスタンプ
optional double endTradeTimestamp = 15; //最終取引日タイムスタンプ
optional double leverage = 16; // レバレッジ比率(倍)
optional double ipop = 17; // インザマネー/アウトオブザマネー(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double breakEvenPoint = 18; // 損益分岐点
optional double conversionPrice = 19; // 換株価格
optional double priceRecoveryRatio = 20; // 正株の回収価格までの距離(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double score = 21; // 総合スコア
optional double upperStrikePrice = 22; //上限価,インラインワラントのみこのフィールドに対応
optional double lowerStrikePrice = 23; //下限価,インラインワラントのみこのフィールドに対応
optional int32 inLinePriceStatus = 24; //Qot_Common.PriceType、界内/界外。インラインワラントのみこのフィールドに対応
optional string issuerCode = 25; //発行体コード
}
// オプションタイプの追加データ
message OptionSnapshotExData
{
required int32 type = 1; //Qot_Common.OptionType、オプションタイプ(方向別)
required Qot_Common.Security owner = 2; //原資産株
required string strikeTime = 3; //行使日文字列(フォーマット:yyyy-MM-dd)
required double strikePrice = 4; //行使価格
required int32 contractSize = 5; //1 契約あたりの株数(整型データ)
optional double contractSizeFloat = 22; //1 契約あたりの株数(浮点型データ)
required int32 openInterest = 6; //未決済建玉数
required double impliedVolatility = 7; //IV(インプライドボラティリティ)(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double premium = 8; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 9; //グリークス Delta
required double gamma = 10; //グリークス Gamma
required double vega = 11; //グリークス Vega
required double theta = 12; //グリークス Theta
required double rho = 13; //グリークス Rho
optional double strikeTimestamp = 14; //行使日タイムスタンプ
optional int32 indexOptionType = 15; //Qot_Common.IndexOptionType、指数オプションタイプ
optional int32 netOpenInterest = 16; //ネット未決済建玉数,香港株オプションのみ適用
optional int32 expiryDateDistance = 17; //距离満期日天数,負の数は満期済みを示します
optional double contractNominalValue = 18; //契約想定元本,香港株オプションのみ適用
optional double ownerLotMultiplier = 19; //相等正株手数,指数オプションにはこのフィールドはありません,香港株オプションのみ適用
optional int32 optionAreaType = 20; //Qot_Common.OptionAreaType、オプションタイプ(行使時間別)
optional double contractMultiplier = 21; //契約乗数
}
// 指数タイプの追加データ
message IndexSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
// セクタータイプの追加データ
message PlateSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
//先物タイプの追加データ
message FutureSnapshotExData
{
required double lastSettlePrice = 1; //前日決済値
required int32 position = 2; //建玉数
required int32 positionChange = 3; //日次建玉変動
required string lastTradeTime = 4; //最后取引日,主連以外の先物契約のみこのフィールドあり
optional double lastTradeTimestamp = 5; //最終取引日タイムスタンプ,主連以外の先物契約のみこのフィールドあり
required bool isMainContract = 6; //かどうか主連契約
}
//基金タイプ额外データ
message TrustSnapshotExData
{
required double dividendYield = 1; //配当利回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double aum = 2; //資産規模
required int64 outstandingUnits = 3; //総発行口数
required double netAssetValue = 4; //基準価額
required double premium = 5; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required int32 assetClass = 6; //Qot_Common.AssetClass、資産種別
}
//基本スナップショットデータ
message SnapshotBasicData
{
required Qot_Common.Security security = 1; //銘柄
optional string name = 41; //銘柄名
required int32 type = 2; //Qot_Common.SecurityType、銘柄タイプ
required bool isSuspend = 3; //かどうか売買停止
required string listTime = 4; //上場時間文字列(フォーマット:yyyy-MM-dd)
required int32 lotSize = 5; //1ロットの数量
required double priceSpread = 6; //価差
required string updateTime = 7; //更新時間文字列(フォーマット:yyyy-MM-dd HH:mm:ss)
required double highPrice = 8; //高値
required double openPrice = 9; //始値
required double lowPrice = 10; //安値
required double lastClosePrice = 11; //前日終値
required double curPrice = 12; //最新価格
required int64 volume = 13; //出来高
required double turnover = 14; //売買代金
required double turnoverRate = 15; //売買回転率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double listTimestamp = 16; //上場タイムスタンプ
optional double updateTimestamp = 17; //更新タイムスタンプ
optional double askPrice = 18;//売値
optional double bidPrice = 19;//買値
optional int64 askVol = 20;//売り数量
optional int64 bidVol = 21;//買い数量
optional bool enableMargin = 22; // 信用買い可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double mortgageRatio = 23; // 株式担保率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double longMarginInitialRatio = 24; // 信用買い初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional bool enableShortSell = 25; // 空売り可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortSellRate = 26; // 空売り参考利率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional int64 shortAvailableVolume = 27; // 残りの空売り可能数量(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortMarginInitialRatio = 28; // 空売り(信用売り)初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double amplitude = 29; // 振幅(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double avgPrice = 30; // 平均価
optional double bidAskRatio = 31; // 委託比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double volumeRatio = 32; // 出来高比率
optional double highest52WeeksPrice = 33; // 52周高値
optional double lowest52WeeksPrice = 34; // 52周安値
optional double highestHistoryPrice = 35; // 過去高値
optional double lowestHistoryPrice = 36; // 過去安値
optional Qot_Common.PreAfterMarketData preMarket = 37; //Qot_Common::PreAfterMarketData プレマーケットデータ
optional Qot_Common.PreAfterMarketData afterMarket = 38; //Qot_Common::PreAfterMarketData アフターマーケットデータ
optional Qot_Common.PreAfterMarketData overnight = 42; //Qot_Common::PreAfterMarketData 夜間取引データ
optional int32 secStatus = 39; //Qot_Common::SecurityStatus 株式状態
optional double closePrice5Minute = 40; //5分钟終値
}
message Snapshot
{
required SnapshotBasicData basic = 1; //スナップショット基本データ
optional EquitySnapshotExData equityExData = 2; //正株スナップショット额外データ
optional WarrantSnapshotExData warrantExData = 3; //ワラントスナップショット额外データ
optional OptionSnapshotExData optionExData = 4; //オプションスナップショット额外データ
optional IndexSnapshotExData indexExData = 5; //指数スナップショット额外データ
optional PlateSnapshotExData plateExData = 6; //セクタースナップショット额外データ
optional FutureSnapshotExData futureExData = 7; //先物タイプの追加データ
optional TrustSnapshotExData trustExData = 8; //基金タイプ额外データ
}
message S2C
{
repeated Snapshot snapshotList = 1; //株式スナップショット
}
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
- 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;
QotCommon.Security sec = QotCommon.Security.newBuilder()
.setMarket(QotCommon.QotMarket.QotMarket_HK_Security_VALUE)
.setCode("00700")
.build();
QotGetSecuritySnapshot.C2S c2s = QotGetSecuritySnapshot.C2S.newBuilder()
.addSecurityList(sec)
.build();
QotGetSecuritySnapshot.Request req = QotGetSecuritySnapshot.Request.newBuilder().setC2S(c2s).build();
int seqNo = qot.getSecuritySnapshot(req);
System.out.printf("Send QotGetSecuritySnapshot: %d\n", seqNo);
}
@Override
public void onDisconnect(MMAPI_Conn client, long errCode) {
System.out.printf("Qot onDisConnect: %d\n", errCode);
}
@Override
public void onReply_GetSecuritySnapshot(MMAPI_Conn client, int nSerialNo, QotGetSecuritySnapshot.Response rsp) {
if (rsp.getRetType() != 0) {
System.out.printf("QotGetSecuritySnapshot failed: %s\n", rsp.getRetMsg());
}
else {
try {
String json = JsonFormat.printer().print(rsp);
System.out.printf("Receive QotGetSecuritySnapshot: %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
- Output
Send QotGetSecuritySnapshot: 2
Receive QotGetSecuritySnapshot: {
"retType": 0,
"retMsg": "",
"errCode": 0,
"s2c": {
"snapshotList": [{
"basic": {
"security": {
"market": 1,
"code": "00700"
},
"type": 3,
"isSuspend": false,
"listTime": "2004-06-16",
"lotSize": 100,
"priceSpread": 0.5,
"updateTime": "2021-06-24 16:08:14",
"highPrice": 587.5,
"openPrice": 584.0,
"lowPrice": 580.0,
"lastClosePrice": 582.5,
"curPrice": 583.0,
"volume": "10947302",
"turnover": 6.387238277E9,
"turnoverRate": 0.114,
"listTimestamp": 1.0873152E9,
"updateTimestamp": 1.624522094E9,
"askPrice": 583.5,
"bidPrice": 583.0,
"askVol": "142300",
"bidVol": "52800",
"enableMargin": true,
"mortgageRatio": 0.0,
"longMarginInitialRatio": 35.0,
"enableShortSell": true,
"shortSellRate": 0.9,
"shortAvailableVolume": "2006700",
"shortMarginInitialRatio": 60.0,
"amplitude": 1.288,
"avgPrice": 583.453,
"bidAskRatio": -5.273,
"volumeRatio": 0.553,
"highest52WeeksPrice": 773.9,
"lowest52WeeksPrice": 479.4,
"highestHistoryPrice": 773.9,
"lowestHistoryPrice": -6.381,
"secStatus": 1,
"closePrice5Minute": 583.5
},
"equityExData": {
"issuedShares": "9595206625",
"issuedMarketVal": 5.594005462375E12,
"netAsset": 9.17675966408375E11,
"netProfit": 1.90378494646625E11,
"earningsPershare": 19.841,
"outstandingShares": "9595206625",
"outstandingMarketVal": 5.594005462375E12,
"netAssetPershare": 95.639,
"eyRate": 0.232,
"peRate": 29.383,
"pbRate": 6.095,
"peTTMRate": 26.249,
"dividendTTM": 1.6,
"dividendRatioTTM": 0.27,
"dividendLFY": 1.6,
"dividendLFYRatio": 0.274
}
}]
}
}
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
moomoo::u32_t GetSecuritySnapshot(const Qot_GetSecuritySnapshot::Request &stReq);
virtual void OnReply_GetSecuritySnapshot(moomoo::u32_t nSerialNo, const Qot_GetSecuritySnapshot::Response &stRsp) = 0;
概要
スナップショットデータの取得
パラメータ
message C2S
{
repeated Qot_Common.Security securityList = 1; //株式
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 株式構造は~を参照: Security
- 戻り値
// 正株タイプの追加データ
message EquitySnapshotExData
{
required int64 issuedShares = 1; // 総株式数
required double issuedMarketVal = 2; // 時価総額 = 総株式数 × 現在価格
required double netAsset = 3; // 純資産
required double netProfit = 4; // 利益(損失)
required double earningsPershare = 5; // EPS
required int64 outstandingShares = 6; // 流通株式数
required double outstandingMarketVal = 7; // 流通時価総額 = 流通株式数 × 現在価格
required double netAssetPershare = 8; // 一株当たり純資産
required double eyRate = 9; // 益回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double peRate = 10; // PER
required double pbRate = 11; // PBR
required double peTTMRate = 12; // PER TTM
optional double dividendTTM = 13; // 配当金 TTM
optional double dividendRatioTTM = 14; // 配当利回り TTM(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double dividendLFY = 15; // 配当金 LFY(前年度配当)
optional double dividendLFYRatio = 16; // 配当利回り LFY(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
}
// ワラントタイプの追加データ
message WarrantSnapshotExData
{
required double conversionRate = 1; //換株比率
required int32 warrantType = 2; //Qot_Common.WarrantType、ワラントタイプ
required double strikePrice = 3; //行使価格
required string maturityTime = 4; //満期日文字列
required string endTradeTime = 5; //最終取引日文字列
required Qot_Common.Security owner = 6; //原資産正株
required double recoveryPrice = 7; //回収価格,CBBC のみこのフィールドに対応
required int64 streetVolumn = 8; //街貨量
required int64 issueVolumn = 9; //発行量
required double streetRate = 10; //街貨比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 11; //デルタ値,コール・プットのみこのフィールドに対応
required double impliedVolatility = 12; //IV(インプライドボラティリティ),コール・プットのみこのフィールドに対応
required double premium = 13; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double maturityTimestamp = 14; //満期日タイムスタンプ
optional double endTradeTimestamp = 15; //最終取引日タイムスタンプ
optional double leverage = 16; // レバレッジ比率(倍)
optional double ipop = 17; // インザマネー/アウトオブザマネー(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double breakEvenPoint = 18; // 損益分岐点
optional double conversionPrice = 19; // 換株価格
optional double priceRecoveryRatio = 20; // 正株の回収価格までの距離(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double score = 21; // 総合スコア
optional double upperStrikePrice = 22; //上限価,インラインワラントのみこのフィールドに対応
optional double lowerStrikePrice = 23; //下限価,インラインワラントのみこのフィールドに対応
optional int32 inLinePriceStatus = 24; //Qot_Common.PriceType、界内/界外。インラインワラントのみこのフィールドに対応
optional string issuerCode = 25; //発行体コード
}
// オプションタイプの追加データ
message OptionSnapshotExData
{
required int32 type = 1; //Qot_Common.OptionType、オプションタイプ(方向別)
required Qot_Common.Security owner = 2; //原資産株
required string strikeTime = 3; //行使日文字列(フォーマット:yyyy-MM-dd)
required double strikePrice = 4; //行使価格
required int32 contractSize = 5; //1 契約あたりの株数(整型データ)
optional double contractSizeFloat = 22; //1 契約あたりの株数(浮点型データ)
required int32 openInterest = 6; //未決済建玉数
required double impliedVolatility = 7; //IV(インプライドボラティリティ)(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double premium = 8; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 9; //グリークス Delta
required double gamma = 10; //グリークス Gamma
required double vega = 11; //グリークス Vega
required double theta = 12; //グリークス Theta
required double rho = 13; //グリークス Rho
optional double strikeTimestamp = 14; //行使日タイムスタンプ
optional int32 indexOptionType = 15; //Qot_Common.IndexOptionType、指数オプションタイプ
optional int32 netOpenInterest = 16; //ネット未決済建玉数,香港株オプションのみ適用
optional int32 expiryDateDistance = 17; //距离満期日天数,負の数は満期済みを示します
optional double contractNominalValue = 18; //契約想定元本,香港株オプションのみ適用
optional double ownerLotMultiplier = 19; //相等正株手数,指数オプションにはこのフィールドはありません,香港株オプションのみ適用
optional int32 optionAreaType = 20; //Qot_Common.OptionAreaType、オプションタイプ(行使時間別)
optional double contractMultiplier = 21; //契約乗数
}
// 指数タイプの追加データ
message IndexSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
// セクタータイプの追加データ
message PlateSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
//先物タイプの追加データ
message FutureSnapshotExData
{
required double lastSettlePrice = 1; //前日決済値
required int32 position = 2; //建玉数
required int32 positionChange = 3; //日次建玉変動
required string lastTradeTime = 4; //最后取引日,主連以外の先物契約のみこのフィールドあり
optional double lastTradeTimestamp = 5; //最終取引日タイムスタンプ,主連以外の先物契約のみこのフィールドあり
required bool isMainContract = 6; //かどうか主連契約
}
//基金タイプ额外データ
message TrustSnapshotExData
{
required double dividendYield = 1; //配当利回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double aum = 2; //資産規模
required int64 outstandingUnits = 3; //総発行口数
required double netAssetValue = 4; //基準価額
required double premium = 5; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required int32 assetClass = 6; //Qot_Common.AssetClass、資産種別
}
//基本スナップショットデータ
message SnapshotBasicData
{
required Qot_Common.Security security = 1; //銘柄
optional string name = 41; //銘柄名
required int32 type = 2; //Qot_Common.SecurityType、銘柄タイプ
required bool isSuspend = 3; //かどうか売買停止
required string listTime = 4; //上場時間文字列(フォーマット:yyyy-MM-dd)
required int32 lotSize = 5; //1ロットの数量
required double priceSpread = 6; //価差
required string updateTime = 7; //更新時間文字列(フォーマット:yyyy-MM-dd HH:mm:ss)
required double highPrice = 8; //高値
required double openPrice = 9; //始値
required double lowPrice = 10; //安値
required double lastClosePrice = 11; //前日終値
required double curPrice = 12; //最新価格
required int64 volume = 13; //出来高
required double turnover = 14; //売買代金
required double turnoverRate = 15; //売買回転率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double listTimestamp = 16; //上場タイムスタンプ
optional double updateTimestamp = 17; //更新タイムスタンプ
optional double askPrice = 18;//売値
optional double bidPrice = 19;//買値
optional int64 askVol = 20;//売り数量
optional int64 bidVol = 21;//買い数量
optional bool enableMargin = 22; // 信用買い可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double mortgageRatio = 23; // 株式担保率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double longMarginInitialRatio = 24; // 信用買い初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional bool enableShortSell = 25; // 空売り可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortSellRate = 26; // 空売り参考利率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional int64 shortAvailableVolume = 27; // 残りの空売り可能数量(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortMarginInitialRatio = 28; // 空売り(信用売り)初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double amplitude = 29; // 振幅(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double avgPrice = 30; // 平均価
optional double bidAskRatio = 31; // 委託比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double volumeRatio = 32; // 出来高比率
optional double highest52WeeksPrice = 33; // 52周高値
optional double lowest52WeeksPrice = 34; // 52周安値
optional double highestHistoryPrice = 35; // 過去高値
optional double lowestHistoryPrice = 36; // 過去安値
optional Qot_Common.PreAfterMarketData preMarket = 37; //Qot_Common::PreAfterMarketData プレマーケットデータ
optional Qot_Common.PreAfterMarketData afterMarket = 38; //Qot_Common::PreAfterMarketData アフターマーケットデータ
optional Qot_Common.PreAfterMarketData overnight = 42; //Qot_Common::PreAfterMarketData 夜間取引データ
optional int32 secStatus = 39; //Qot_Common::SecurityStatus 株式状態
optional double closePrice5Minute = 40; //5分钟終値
}
message Snapshot
{
required SnapshotBasicData basic = 1; //スナップショット基本データ
optional EquitySnapshotExData equityExData = 2; //正株スナップショット额外データ
optional WarrantSnapshotExData warrantExData = 3; //ワラントスナップショット额外データ
optional OptionSnapshotExData optionExData = 4; //オプションスナップショット额外データ
optional IndexSnapshotExData indexExData = 5; //指数スナップショット额外データ
optional PlateSnapshotExData plateExData = 6; //セクタースナップショット额外データ
optional FutureSnapshotExData futureExData = 7; //先物タイプの追加データ
optional TrustSnapshotExData trustExData = 8; //基金タイプ额外データ
}
message S2C
{
repeated Snapshot snapshotList = 1; //株式スナップショット
}
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
- 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_GetSecuritySnapshot::Request req;
Qot_GetSecuritySnapshot::C2S *c2s = req.mutable_c2s();
auto secList = c2s->mutable_securitylist();
Qot_Common::Security *sec = secList->Add();
sec->set_code("00700");
sec->set_market(Qot_Common::QotMarket::QotMarket_HK_Security);
m_GetSecuritySnapshotSerialNo = m_pQotApi->GetSecuritySnapshot(req);
cout << "Request GetSecuritySnapshot SerialNo: " << m_GetSecuritySnapshotSerialNo << endl;
}
virtual void OnReply_GetSecuritySnapshot(moomoo::u32_t nSerialNo, const Qot_GetSecuritySnapshot::Response &stRsp){
if(nSerialNo == m_GetSecuritySnapshotSerialNo)
{
cout << "OnReply_GetSecuritySnapshot 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_GetSecuritySnapshotSerialNo;
};
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
72
- Output
connect
Request GetSecuritySnapshot SerialNo: 4
OnReply_GetSecuritySnapshot SerialNo: 4
{
"retType": 0,
"retMsg": "",
"errCode": 0,
"s2c": {
"snapshotList": [
{
"basic": {
"security": {
"market": 1,
"code": "00700"
},
"type": 3,
"isSuspend": false,
"listTime": "2004-06-16",
"lotSize": 100,
"priceSpread": 0.5,
"updateTime": "2021-06-09 11:01:40",
"highPrice": 605.5,
"openPrice": 600,
"lowPrice": 597.5,
"lastClosePrice": 601,
"curPrice": 604,
"volume": "2771395",
"turnover": 1668044020,
"turnoverRate": 0.029,
"listTimestamp": 1087315200,
"updateTimestamp": 1623207700,
"askPrice": 604.5,
"bidPrice": 604,
"askVol": "21500",
"bidVol": "9500",
"enableMargin": true,
"mortgageRatio": 0,
"longMarginInitialRatio": 35,
"enableShortSell": true,
"shortSellRate": 0.9,
"shortAvailableVolume": "1849300",
"shortMarginInitialRatio": 60,
"amplitude": 1.331,
"avgPrice": 601.878,
"bidAskRatio": -9.111,
"volumeRatio": 0.643,
"highest52WeeksPrice": 773.9,
"lowest52WeeksPrice": 430.6,
"highestHistoryPrice": 773.9,
"lowestHistoryPrice": -6.381,
"secStatus": 1,
"closePrice5Minute": 603.5
},
"equityExData": {
"issuedShares": "9595206625",
"issuedMarketVal": 5795504801500,
"netAsset": 917675966408.375,
"netProfit": 190378494646.625,
"earningsPershare": 19.841,
"outstandingShares": "9595206625",
"outstandingMarketVal": 5795504801500,
"netAssetPershare": 95.639,
"eyRate": 0.232,
"peRate": 30.442,
"pbRate": 6.315,
"peTTMRate": 27.194,
"dividendTTM": 1.6,
"dividendRatioTTM": 0.26,
"dividendLFY": 1.6,
"dividendLFYRatio": 0.264
}
}
]
}
}
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
76
GetSecuritySnapshot(req);
概要
スナップショットデータの取得
パラメータ
message C2S
{
repeated Qot_Common.Security securityList = 1; //株式
}
message Request
{
required C2S c2s = 1;
}
2
3
4
5
6
7
8
9
- 株式構造は~を参照: Security
- 戻り値
// 正株タイプの追加データ
message EquitySnapshotExData
{
required int64 issuedShares = 1; // 総株式数
required double issuedMarketVal = 2; // 時価総額 = 総株式数 × 現在価格
required double netAsset = 3; // 純資産
required double netProfit = 4; // 利益(損失)
required double earningsPershare = 5; // EPS
required int64 outstandingShares = 6; // 流通株式数
required double outstandingMarketVal = 7; // 流通時価総額 = 流通株式数 × 現在価格
required double netAssetPershare = 8; // 一株当たり純資産
required double eyRate = 9; // 益回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double peRate = 10; // PER
required double pbRate = 11; // PBR
required double peTTMRate = 12; // PER TTM
optional double dividendTTM = 13; // 配当金 TTM
optional double dividendRatioTTM = 14; // 配当利回り TTM(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double dividendLFY = 15; // 配当金 LFY(前年度配当)
optional double dividendLFYRatio = 16; // 配当利回り LFY(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
}
// ワラントタイプの追加データ
message WarrantSnapshotExData
{
required double conversionRate = 1; //換株比率
required int32 warrantType = 2; //Qot_Common.WarrantType、ワラントタイプ
required double strikePrice = 3; //行使価格
required string maturityTime = 4; //満期日文字列
required string endTradeTime = 5; //最終取引日文字列
required Qot_Common.Security owner = 6; //原資産正株
required double recoveryPrice = 7; //回収価格,CBBC のみこのフィールドに対応
required int64 streetVolumn = 8; //街貨量
required int64 issueVolumn = 9; //発行量
required double streetRate = 10; //街貨比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 11; //デルタ値,コール・プットのみこのフィールドに対応
required double impliedVolatility = 12; //IV(インプライドボラティリティ),コール・プットのみこのフィールドに対応
required double premium = 13; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double maturityTimestamp = 14; //満期日タイムスタンプ
optional double endTradeTimestamp = 15; //最終取引日タイムスタンプ
optional double leverage = 16; // レバレッジ比率(倍)
optional double ipop = 17; // インザマネー/アウトオブザマネー(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double breakEvenPoint = 18; // 損益分岐点
optional double conversionPrice = 19; // 換株価格
optional double priceRecoveryRatio = 20; // 正株の回収価格までの距離(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double score = 21; // 総合スコア
optional double upperStrikePrice = 22; //上限価,インラインワラントのみこのフィールドに対応
optional double lowerStrikePrice = 23; //下限価,インラインワラントのみこのフィールドに対応
optional int32 inLinePriceStatus = 24; //Qot_Common.PriceType、界内/界外。インラインワラントのみこのフィールドに対応
optional string issuerCode = 25; //発行体コード
}
// オプションタイプの追加データ
message OptionSnapshotExData
{
required int32 type = 1; //Qot_Common.OptionType、オプションタイプ(方向別)
required Qot_Common.Security owner = 2; //原資産株
required string strikeTime = 3; //行使日文字列(フォーマット:yyyy-MM-dd)
required double strikePrice = 4; //行使価格
required int32 contractSize = 5; //1 契約あたりの株数(整型データ)
optional double contractSizeFloat = 22; //1 契約あたりの株数(浮点型データ)
required int32 openInterest = 6; //未決済建玉数
required double impliedVolatility = 7; //IV(インプライドボラティリティ)(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double premium = 8; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double delta = 9; //グリークス Delta
required double gamma = 10; //グリークス Gamma
required double vega = 11; //グリークス Vega
required double theta = 12; //グリークス Theta
required double rho = 13; //グリークス Rho
optional double strikeTimestamp = 14; //行使日タイムスタンプ
optional int32 indexOptionType = 15; //Qot_Common.IndexOptionType、指数オプションタイプ
optional int32 netOpenInterest = 16; //ネット未決済建玉数,香港株オプションのみ適用
optional int32 expiryDateDistance = 17; //距离満期日天数,負の数は満期済みを示します
optional double contractNominalValue = 18; //契約想定元本,香港株オプションのみ適用
optional double ownerLotMultiplier = 19; //相等正株手数,指数オプションにはこのフィールドはありません,香港株オプションのみ適用
optional int32 optionAreaType = 20; //Qot_Common.OptionAreaType、オプションタイプ(行使時間別)
optional double contractMultiplier = 21; //契約乗数
}
// 指数タイプの追加データ
message IndexSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
// セクタータイプの追加データ
message PlateSnapshotExData
{
required int32 raiseCount = 1; // 値上がり銘柄数
required int32 fallCount = 2; // 値下がり銘柄数
required int32 equalCount = 3; // 変わらず銘柄数
}
//先物タイプの追加データ
message FutureSnapshotExData
{
required double lastSettlePrice = 1; //前日決済値
required int32 position = 2; //建玉数
required int32 positionChange = 3; //日次建玉変動
required string lastTradeTime = 4; //最后取引日,主連以外の先物契約のみこのフィールドあり
optional double lastTradeTimestamp = 5; //最終取引日タイムスタンプ,主連以外の先物契約のみこのフィールドあり
required bool isMainContract = 6; //かどうか主連契約
}
//基金タイプ额外データ
message TrustSnapshotExData
{
required double dividendYield = 1; //配当利回り(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required double aum = 2; //資産規模
required int64 outstandingUnits = 3; //総発行口数
required double netAssetValue = 4; //基準価額
required double premium = 5; //プレミアム(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
required int32 assetClass = 6; //Qot_Common.AssetClass、資産種別
}
//基本スナップショットデータ
message SnapshotBasicData
{
required Qot_Common.Security security = 1; //銘柄
optional string name = 41; //銘柄名
required int32 type = 2; //Qot_Common.SecurityType、銘柄タイプ
required bool isSuspend = 3; //かどうか売買停止
required string listTime = 4; //上場時間文字列(フォーマット:yyyy-MM-dd)
required int32 lotSize = 5; //1ロットの数量
required double priceSpread = 6; //価差
required string updateTime = 7; //更新時間文字列(フォーマット:yyyy-MM-dd HH:mm:ss)
required double highPrice = 8; //高値
required double openPrice = 9; //始値
required double lowPrice = 10; //安値
required double lastClosePrice = 11; //前日終値
required double curPrice = 12; //最新価格
required int64 volume = 13; //出来高
required double turnover = 14; //売買代金
required double turnoverRate = 15; //売買回転率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double listTimestamp = 16; //上場タイムスタンプ
optional double updateTimestamp = 17; //更新タイムスタンプ
optional double askPrice = 18;//売値
optional double bidPrice = 19;//買値
optional int64 askVol = 20;//売り数量
optional int64 bidVol = 21;//買い数量
optional bool enableMargin = 22; // 信用買い可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double mortgageRatio = 23; // 株式担保率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double longMarginInitialRatio = 24; // 信用買い初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional bool enableShortSell = 25; // 空売り可能かどうか(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortSellRate = 26; // 空売り参考利率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional int64 shortAvailableVolume = 27; // 残りの空売り可能数量(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double shortMarginInitialRatio = 28; // 空売り(信用売り)初期証拠金率(廃止済み,をご利用ください 信用取引データ取得 API で取得してください)
optional double amplitude = 29; // 振幅(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double avgPrice = 30; // 平均価
optional double bidAskRatio = 31; // 委託比率(このフィールドはパーセントフィールドで、デフォルトでは % を表示しません。20 は実際には 20% に対応します)
optional double volumeRatio = 32; // 出来高比率
optional double highest52WeeksPrice = 33; // 52周高値
optional double lowest52WeeksPrice = 34; // 52周安値
optional double highestHistoryPrice = 35; // 過去高値
optional double lowestHistoryPrice = 36; // 過去安値
optional Qot_Common.PreAfterMarketData preMarket = 37; //Qot_Common::PreAfterMarketData プレマーケットデータ
optional Qot_Common.PreAfterMarketData afterMarket = 38; //Qot_Common::PreAfterMarketData アフターマーケットデータ
optional Qot_Common.PreAfterMarketData overnight = 42; //Qot_Common::PreAfterMarketData 夜間取引データ
optional int32 secStatus = 39; //Qot_Common::SecurityStatus 株式状態
optional double closePrice5Minute = 40; //5分钟終値
}
message Snapshot
{
required SnapshotBasicData basic = 1; //スナップショット基本データ
optional EquitySnapshotExData equityExData = 2; //正株スナップショット额外データ
optional WarrantSnapshotExData warrantExData = 3; //ワラントスナップショット额外データ
optional OptionSnapshotExData optionExData = 4; //オプションスナップショット额外データ
optional IndexSnapshotExData indexExData = 5; //指数スナップショット额外データ
optional PlateSnapshotExData plateExData = 6; //セクタースナップショット额外データ
optional FutureSnapshotExData futureExData = 7; //先物タイプの追加データ
optional TrustSnapshotExData trustExData = 8; //基金タイプ额外データ
}
message S2C
{
repeated Snapshot snapshotList = 1; //株式スナップショット
}
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
- 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 QotGetSecuritySnapshot(){
const { RetType } = Common
const { SubType, 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: {
securityList: [
{
market: QotMarket.QotMarket_HK_Security,
code: "00700",
},
],
},
};
websocket.GetSecuritySnapshot(req)
.then((res) => {
let { errCode, retMsg, retType,s2c } = res
console.log("Snapshot: errCode %d, retMsg %s, retType %d", errCode, retMsg, retType);
if(retType == RetType.RetType_Succeed){
let snapshot = beautify(JSON.stringify(s2c), {
indent_size: 2,
space_in_empty_paren: true,
});
console.log(snapshot);
}
})
.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
53
54
- Output
Snapshot: errCode 0, retMsg , retType 0
{
"snapshotList": [{
"basic": {
"security": {
"market": 1,
"code": "00700"
},
"type": 3,
"isSuspend": false,
"listTime": "2004-06-16",
"lotSize": 100,
"priceSpread": 0.2,
"updateTime": "2021-09-09 16:08:17",
"highPrice": 511.5,
"openPrice": 509,
"lowPrice": 479,
"lastClosePrice": 524.5,
"curPrice": 480,
"volume": "54090872",
"turnover": 26716845932,
"turnoverRate": 0.563,
"listTimestamp": 1087315200,
"updateTimestamp": 1631174897,
"askPrice": 480.4,
"bidPrice": 480,
"askVol": "700",
"bidVol": "55300",
"enableMargin": true,
"mortgageRatio": 0,
"longMarginInitialRatio": 35,
"enableShortSell": true,
"shortSellRate": 0.92,
"shortAvailableVolume": "3059000",
"shortMarginInitialRatio": 50,
"amplitude": 6.196,
"avgPrice": 493.925,
"bidAskRatio": 22.703,
"volumeRatio": 1.775,
"highest52WeeksPrice": 773.9,
"lowest52WeeksPrice": 412.2,
"highestHistoryPrice": 773.9,
"lowestHistoryPrice": -6.381,
"secStatus": 1,
"closePrice5Minute": 483.4
},
"equityExData": {
"issuedShares": "9599810645",
"issuedMarketVal": 4607909109600,
"netAsset": 1016063158288.09,
"netProfit": 190383444711.64,
"earningsPershare": 19.832,
"outstandingShares": "9599810645",
"outstandingMarketVal": 4607909109600,
"netAssetPershare": 105.842,
"eyRate": 0.22,
"peRate": 24.203,
"pbRate": 4.535,
"peTTMRate": 20.532,
"dividendTTM": 1.599,
"dividendRatioTTM": 0.33,
"dividendLFY": 1.599,
"dividendLFYRatio": 0.333
}
}]
}
stop
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
APIレート制限
- 30 秒以内に最大 60 次スナップショット。
- 1回のリクエストにつき、APIパラメータ 銘柄コードリスト で指定できる原資産数の上限は 400 個です。