mcpField
O
openclaw-stock-skill

openclaw-stock-skill

github.com/1018466411データ・データベース11650 回インストール6 週間前に更新
リポジトリ

openclaw-stock-skill について

openclaw-stock-skillは、OpenClawのエージェントが自前の株式データサービスをAPI経由で利用するためのスキルです。`STOCK_API_KEY`で認証し、リアルタイム・過去の相場データ、テクニカル指標、複数の金融商品データを扱います。

主な機能

  1. 01リアルタイム株価と分足データの取得
  2. 02日足・分足の過去データ取得
  3. 03財務諸表と指標の照会
  4. 04株式・ETF・債券のテクニカル指標取得
  5. 05指数・セクター・先物データの照会

活用シーン

  1. 01株価と板情報の確認
  2. 02指定期間の過去チャート分析
  3. 03バリュエーションと財務指標の照会
  4. 04指数構成銘柄とウェイトの比較

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/1018466411/openclaw-stock-data-skill --skill openclaw-stock-skill

インストール後、Claude Code で/openclaw-stock-skillを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

GITHUB.md
clawhub.json
config.json.template
.gitignore
stock_api.py
requirements.txt
skill.json
example.py
README.md
tests/
test_future_realtime_history.py

詳細

🔥 主な機能

本スキルは、強力な株式データの照会・分析機能を提供します。主な内容は次のとおりです。

  1. リアルタイムデータ:リアルタイムの株式スナップショットと分足相場を提供します。
  2. 過去データ:株式、転換社債、ETF、指数などの過去データ(日足、分足、財務指標など)の照会に対応しています。
  3. カスタム通知(開発中):ストップ高、ストップ高からの反落、出来高を伴う大幅上昇、ストップ高での大口取引などの異常シグナルに対するカスタム通知に対応しています。

📥 インストール方法

npx skills add https://github.com/1018466411/openclaw-stock-data-skill

インストール時は、次の項目を選択してください。

  1. openclaw を選択します
  2. すべてのエージェントに適用する global を選択します
  3. Copy to all agents:yes

本スキルでは、独自に構築した株式データサービス(アカウント登録先:https://data.diemeng.chat)を、API Key で認証して利用し、株式の日足、分足、財務指標などのデータを照会する方法をエージェントに教えます。

⚙️ API Key の設定に関する取り決め

  • OpenClaw は skills.entries.<key> の設定に従って、API Key とカスタム設定をプロセスの環境変数に注入します。
  • 本スキルでは、主キーとして環境変数 STOCK_API_KEY を使用し、metadata.openclaw.primaryEnv で宣言します。これにより、skills.entries.openclaw-stock-skill.apiKey から一元的に設定できます。
  • OpenClaw の推奨設定例(~/.openclaw/openclaw.json):
{
  skills: {
    entries: {
      "openclaw-stock-skill": {
        enabled: true,
        // OpenClaw UI の Skill パラメータパネルで apiKey を入力することを推奨します
        // Gateway が自動的に STOCK_API_KEY 環境変数に書き込みます
        apiKey: { source: "env", provider: "default", id: "STOCK_API_KEY" },
        env: {
          // ここに直接指定するか、システム環境変数で上書きできます
          STOCK_API_KEY: "YOUR_REAL_STOCK_API_KEY"
        },
        config: {
          // 任意:デフォルトのドメインを上書きします
          baseUrl: "https://data.diemeng.chat"
        }
      }
    }
  }
}

参考ドキュメント:Skills Config、Skills

⚠️ 重要な注意事項

1. 権限の有効化と 403 エラー

API が 403 エラーを返す場合、アカウントに該当インターフェイスの権限がないことを示しています。 必ず公式サイト https://data.diemeng.chat/(海外からは https://mg.diemeng.chat/ にアクセスしてください)にアクセスし、個人センターで必要な権限(株式相場、リアルタイムスナップショット、転換社債など)を有効にしてください。

2. インターフェイスの種類
  • リアルタイムインターフェイス:
    • get_stock_snapshot_daily(日付を指定しないか、今日の日付を指定):最新のリアルタイムスナップショット(価格、出来高、5段階の板情報など)を取得します。
    • get_stock_snapshot_push_history:リアルタイムでプッシュされた過去の記録を取得します。
    • get_call_auction:寄り付き前のオークションデータを取得します。
    • get_future_realtime_history:先物のリアルタイム1分足を取得します。デフォルトでは上海時間の当日分となり、直近7暦日のデータに対応しています。
  • 過去データ用インターフェイス:
    • get_daily_data:過去の日足 K 線を取得します。
    • get_kline_data:過去の期間別 K 線(週足、月足)を取得します。
    • get_kline_adj_data:調整済みの過去の期間別 K 線(週足、月足)を取得します。
    • get_history_data:過去の分足を取得します。
    • get_finance_data:過去の財務指標を取得します。
    • get_financial_indicator:財務指標のレポートデータ(stock_financial_indicator)を取得します。
    • get_income_statement:損益計算書のデータ(stock_income)を取得します。
    • get_balancesheet:貸借対照表のデータ(stock_balancesheet)を取得します。
    • get_cashflow_statement:キャッシュフロー計算書のデータ(stock_cashflow)を取得します。
    • get_main_fund_flow:大口・小口注文の資金フローを取得します。
    • get_main_fund_flow_overview:主力資金のフロー概要を取得します。
    • get_cyq_chips:出来高分布を取得します。
    • get_holder_number:株主数のデータを取得します。
    • get_pledge_stat:株式担保の統計データを取得します。
    • get_margin_detail:信用取引の明細データを取得します。
    • get_stock_snapshot_daily(過去の日付を指定):過去のスナップショットを取得します。
  • 指数・セクター用インターフェイス:
    • get_index_history:指数の分足単位の過去データを取得します。
    • get_index_realtime_history:当日の指数のリアルタイム1分足データを取得します。
    • get_index_weight:指数の月次構成銘柄・ウェイトデータを取得します(index_code は必須です。stock_code と trade_date で絞り込めます)。
    • get_ths_sector_categories:同花順のセクター分類データを取得します。
    • get_ths_constituent_stocks:同花順の構成銘柄データを取得します。
    • get_dc_blocks:東方財富のセクター一覧を取得します。
    • get_dc_daily:東方財富のセクター日足 K 線を取得します(取引日またはセクターコードで指定)。
    • get_dc_block_stocks:東方財富のセクター構成銘柄を取得します(セクター、日付、株式による絞り込みに対応し、パラメータが空の場合は最新日付がデフォルトになります)。
    • get_tdx_block_stocks:通達信のセクター構成銘柄を取得します。ページネーション形式の data.total/page/page_size/list が返され、list の各項目には block_code、block_name、block_type、stock_code が含まれます。

全般的な説明

  • 正しい API Key の取得と確認:
    • インターフェイスを呼び出すには、正しい apiKey を必ず取得してください。
    • 取得方法:まず環境変数 STOCK_API_KEY を確認してください。または、現在のディレクトリにある config.json から取得してください。Skill パネルで設定した場合も、環境変数に注入されます。
  • ベースドメイン:インターフェイスのデフォルトのドメインは data.diemeng.chat です。海外の IP アドレスからは mg.diemeng.chat にアクセスしてください。
  • 認証方式:権限が必要なすべてのインターフェイスには API Key を付与し、必ず HTTP Header に含めてください:
    • apiKey: <STOCK_API_KEY>(必須)
    • Content-Type: application/json
  • レスポンス形式:
    • ほとんどのインターフェイスは、{ "code": 200, "msg": "成功", "data": { ... } } を返します。
    • 一部の一覧インターフェイスは配列または簡易形式を直接返します。実際のレスポンスは JSON を確認してください。
  • レート制限とブラックリスト:
    • API Key と IP アドレスには、厳格なレート制限とブラックリストの仕組みが適用されます。
      • 無効な API Key を繰り返し試すと、アクセスが禁止されます(バックエンドの DataAccessVerifier の実装を参照してください)。
      • 同じ API Key を優先的にキャッシュして再利用し、ループ内で頻繁に切り替えないでください。
  • ⚠️ データ件数の制限:特に記載がない限り、ほとんどの一覧インターフェイスで、1回のリクエストにつき返されるデータは最大10000件です。さらに多くのデータを取得する場合は、ページネーションパラメータを使用してください。

能力概览(建议的工具意图)

代理应将本技能视作一组 HTTP 能力,而不是单一接口:

  • get_stock_daily_bars:查询指定股票在某一时间区间内的日线 K 线数据。
  • get_stock_intraday_bars:查询分钟级(1/5/15/30/60 分钟)历史数据。
  • get_stock_finance_factors:查询日度财务因子(PE、PB、换手率等)。
  • get_stock_main_fund_flow:查询主力资金流向明细(按时间范围/股票代码,支持仅传其一)。
  • get_stock_main_fund_flow_overview:查询主力资金流向总览(净流入率与分档统计)。
  • get_stock_limit_up:查询涨停明细数据(封单、连板、涨停原因等)。
  • get_stock_list:查询股票基础信息列表,用于代码/名称搜索。
  • get_stock_calendar_and_snapshot:查询交易日历和当日快照。
  • get_stock_search:使用自然语言条件搜索符合条件的股票(如"PE<20 且换手率>3%")。
  • get_stock_call_auction:查询集合竞价数据。
  • get_stock_closing_snapshot:查询收盘快照数据。
  • get_stock_snapshot_daily:查询实时或历史股票快照(含 Redis 缓存加速)。
  • get_stock_suspension:查询股票停牌信息。
  • get_stock_adj_factor:查询复权因子。
  • get_stock_indicator:查询股票 MACD、MAVOL、KDJ、RSI、BOLL、MA 技术指标,支持日线/分钟线和前复权。
  • get_etf_indicator:查询 ETF MACD、MAVOL、KDJ、RSI、BOLL、MA 技术指标。
  • get_bond_technical_indicator:查询可转债 MACD、MAVOL、KDJ、RSI、BOLL、MA 技术指标。
  • get_bond_daily:查询可转债日线数据。
  • get_bond_indicator_daily:查询可转债日指标数据。
  • get_bond_list:查询可转债列表信息。
  • get_index_realtime_history:查询指数当天实时 1 分钟级别分时数据。
  • get_index_weight:查询指数月度成分和权重数据(可选按成分股过滤)。
  • get_future_realtime_history:查询期货实时 1 分钟分时,可按合约、合约类型、自然日或精确分钟筛选。

代理在规划调用时,应根据用户自然语言意图,选择以上能力并组合使用。

接口详情与调用规范

1. 日线数据:POST /api/stock/daily
  • URL:{baseUrl}/api/stock/daily
  • 方法:POST
  • Headers:
    • Content-Type: application/json
    • apiKey: <STOCK_API_KEY>
  • 请求体 JSON(后端 DailyDataRequest):
{
  "stock_code": "000001.SZ",
  "start_time": "2024-01-01",
  "end_time": "2024-01-31",
  "volType": "share",
  "page": 0,
  "page_size": 1000
}
  • 说明:
    • stock_code 可以是单个字符串,也可以是字符串数组。
    • start_time、end_time 格式为 YYYY-MM-DD。
    • volType 可选:share(默认,按股返回)或 lot(按手返回,1手=100股)。
    • 支持分页,page 从 0 开始。
  • 响应字段:
    • data.total:总记录数
    • data.list:每条记录包含 stock_code, stock_name, trade_date, open, high, low, close, vol, amount 等字段,价格与成交量已在后端统一保留 2 位小数,vol 单位由 volType 决定。
  • 响应主体(简化):
    • data.total:总记录数
    • data.list:每条记录包含 stock_code, trade_date, open, high, low, close, vol, amount 等字段,价格与成交量已在后端统一保留 2 位小数。
1.1 复权日线:POST /api/stock/daily_adj
  • 请求参数与 POST /api/stock/daily 基本一致,额外支持 algo(recursive/factor)。
  • 新增 volType 可选参数:share(默认,按股)或 lot(按手)。
  • 为兼容历史调用,未传 volType 时保持旧行为(按股返回)。

代理在需要“某股某段时间的日 K 线”时,应优先选择该接口。

2. 分钟级历史数据:POST /api/stock/history
  • URL:{baseUrl}/api/stock/history
  • 方法:POST
  • Headers:同上
  • 请求体 JSON(后端 HistoryDataRequest):
{
  "stock_code": "000001.SZ",
  "level": "5min",
  "start_time": "2024-01-01 09:30:00",
  "end_time": "2024-01-01 15:00:00",
  "page": 0,
  "page_size": 1000
}
  • 字段说明:
    • stock_code:仅支持单个股票代码字符串(不支持数组)
    • level:"1min" | "5min" | "15min" | "30min" | "60min"
    • start_time / end_time:
      • 允许仅日期(自动补全 00:00:00 和 23:59:59)
      • 或完整时间戳 YYYY-MM-DD HH:MM:SS
  • 响应主体(简化)单位手:
    • data.list 中每条包含:stock_code, trade_time, open, high, low, close, vol, amount。

用于用户询问“某天/某段时间内的分钟级行情、分时数据”等场景。

2.1 技术指标:股票、ETF、可转债、指数
  • 股票路径:POST /api/stock/macd|mavol|kdj|rsi|boll|ma
  • ETF路径:POST /api/etf/macd|mavol|kdj|rsi|boll|ma
  • 可转债路径:POST /api/bond/macd|mavol|kdj|rsi|boll|ma
  • 指数路径:POST /api/index/macd|kdj|rsi|boll|ma,指数不提供 MAVOL
  • Skill工具:get_stock_indicator、get_etf_indicator、get_bond_technical_indicator、get_index_indicator
  • Python便捷函数:股票、ETF、可转债提供 get_<market>_macd|mavol|kdj|rsi|boll|ma;指数提供 get_index_macd|kdj|rsi|boll|ma。

通用请求示例:

{
  "indicator": "mavol",
  "stock_code": "600000.SH",
  "level": "daily",
  "start_time": "2026-01-01",
  "end_time": "2026-07-15",
  "mavol_periods": [5, 10],
  "vol_type": "share",
  "page": 0,
  "page_size": 10000
}
  • level 支持 daily/1min/5min/15min/30min/60min,一次只支持一个代码。
  • 股票支持 adjust=none/qfq;ETF、可转债和指数当前按不复权行情计算。
  • 指数请求使用 index_code,例如 000001.SH;分钟行情源不含成交量,因此分钟级指标响应不返回 vol。
  • 所有标记为可选且带默认值的参数均可省略,未传时由服务端使用默认值。
  • volType 可省略,默认 share(股);page 可省略,默认 0;page_size 可省略,默认 10000,最大 10000。
  • MACD 的 fast_period、slow_period、signal_period 均可省略,默认分别为 12、26、9,且 slow_period 必须大于 fast_period。
  • MAVOL 默认 mavol_periods=[5,10],返回 mavol5、mavol10 等字段。
  • MA 默认 ma_periods=[5,10,20,30,60],返回 ma5、ma10 等字段。
  • MAVOL、MA、KDJ、RSI、BOLL 的周期参数也都可省略,分别使用文档所示默认值。
  • MACD 返回 dif/dea/macd;KDJ 返回 k/d/j;RSI 返回 rsi;BOLL 返回 boll_mid/boll_upper/boll_lower。
  • 指标接口会读取请求区间之前的预热K线,保证区间首条指标尽量连续;分页仍按请求区间的总记录数返回。
3. 实时分时数据(支持最近7天内):POST /api/realtime/history 及 /api/index/realtime/history
  • URL:{baseUrl}/api/realtime/history 或 {baseUrl}/api/index/realtime/history
  • 方法:POST
  • Headers:同上
  • 请求体 JSON:
{
  "stock_code": "000001.SZ",
  "trade_time": "2026-03-15 09:31:00",
  "date": "2026-03-15"
}

(对于指数接口,参数名为 index_code)

  • 说明:
    • 获取实时 1 分钟级别分时数据,支持最近7天内,支持全市场或指定股票/指数。
    • stock_code/index_code 或 trade_time 至少提供一个。
    • 返回数据会根据代码 + trade_time 进行去重。

调用建议(定时任务拉取全市场数据):

  • 建议使用时间 (trade_time) 来获取实时分时,一次可以获取某一分钟的全市场数据。
  • 使用定时任务来获取数据,每分钟获取上一分钟的数据。
  • 建议在每分钟的 2 到 5 秒后开始获取。
  • 如果获取不到,建议暂停 1 秒后继续获取,最多重试不要超过 60 次,避免陷入死循环。
  • 建议在每分钟 15 秒之后再调用接口更新一次数据,确保数据的准确性。
3.1 指数成分与权重:POST /api/index/weight
  • URL:{baseUrl}/api/index/weight
  • 方法:POST
  • Headers:同上
  • 请求体 JSON:
{
  "index_code": "000300.SH",
  "stock_code": "600519.SH",
  "trade_date": "2026-03-31",
  "page": 0,
  "page_size": 2000
}
  • 字段说明:
    • index_code(必填):指数代码
    • stock_code(可选):成分股代码,支持字符串或数组(后端按 con_code 过滤)
    • trade_date(可选):支持 YYYY-MM 或 YYYY-MM-DD,查询时仅按年和月过滤
    • trade_date 不传时默认返回该指数最新月份数据
  • 返回字段:
    • index_code, stock_code, trade_date, weight
4. 财务与因子(行情因子):POST /api/stock/finance
  • URL:{baseUrl}/api/stock/finance
  • 方法:POST
  • 请求体 JSON(后端 FinanceDataRequest):
{
  "stock_code": "000001.SZ",
  "start_time": "2024-01-01",
  "end_time": "2024-03-31",
  "page": 0,
  "page_size": 1000
}
  • 主要返回字段(列表中每条):
    • stock_code, stock_name, trade_date, close, turnover_rate, turnover_rate_f, volume_ratio, pe, pe_ttm, pb, ps, ps_ttm, dv_ratio, dv_ttm, total_share, float_share, free_share, total_mv, circ_mv 等。

适合估值分析、换手率、成交金额、市值等相关问题。

4.0 财务指标报表数据:POST /api/stock/financial_indicator
  • URL:{baseUrl}/api/stock/financial_indicator
  • 方法:POST
  • 请求体 JSON:
{
  "stock_code": "600000.SH",
  "end_date": "2025-12-31",
  "ann_date": "2026-03-28",
  "page": 0,
  "page_size": 1000
}
  • 字段说明:
    • stock_code:股票代码,支持字符串或数组
    • end_date:报告期最后日期,格式 YYYY-MM-DD
    • ann_date:公告日期,格式 YYYY-MM-DD
    • stock_code / end_date / ann_date 三选一至少提供一个
    • page 从 0 开始,page_size 最大 10000
  • 主要返回字段(实际会返回 stock_financial_indicator 全字段):
    • 基础标识:stock_code, ann_date, end_date, update_flag, create_time
    • 盈利能力:eps, dt_eps, profit_dedt, op_income, ebit, ebitda, gross_margin, grossprofit_margin, netprofit_margin
    • 资产收益:roe, roe_dt, roe_yearly, roa, roa_yearly, roic, roic_yearly
    • 现金与每股:bps, ocfps, cfps
    • 偿债能力:current_ratio, quick_ratio, debt_to_assets
    • 增长能力:basic_eps_yoy, netprofit_yoy, dt_netprofit_yoy, tr_yoy, or_yoy, q_sales_yoy, q_netprofit_yoy
    • 研发投入:rd_exp
  • 完整返回字段:返回 stock_financial_indicator 全字段(除 update_flag、create_time)。
4.0.1 利润表数据:POST /api/stock/income
  • URL:{baseUrl}/api/stock/income
  • 方法:POST
  • 请求体 JSON:
{
  "stock_code": "600000.SH",
  "end_date": "2025-12-31",
  "ann_date": "2026-03-28",
  "page": 0,
  "page_size": 1000
}
  • 字段说明:
    • stock_code:股票代码,支持字符串或数组
    • end_date:报告期最后日期,格式 YYYY-MM-DD
    • ann_date:公告日期,格式 YYYY-MM-DD
    • stock_code / end_date / ann_date 三选一至少提供一个
    • page 从 0 开始,page_size 最大 10000
  • 完整返回字段:返回 stock_income 全字段(除 update_flag、create_time)。
4.0.2 资产负债表数据:POST /api/stock/balancesheet
  • URL:{baseUrl}/api/stock/balancesheet
  • 方法:POST
  • 请求参数与 /api/stock/income 完全一致(stock_code / end_date / ann_date 三选一至少传一个)。
  • 完整返回字段:返回 stock_balancesheet 全字段(除 update_flag、create_time)。
4.0.3 现金流量表数据:POST /api/stock/cashflow
  • URL:{baseUrl}/api/stock/cashflow
  • 方法:POST
  • 请求参数与 /api/stock/income 完全一致(stock_code / end_date / ann_date 三选一至少传一个)。
  • 完整返回字段:返回 stock_cashflow 全字段(除 update_flag、create_time)。
4.1 主力资金流向明细:POST /api/stock/main_fund_flow
  • URL:{baseUrl}/api/stock/main_fund_flow
  • 方法:POST
  • 请求体 JSON:
{
  "start_time": "2026-04-03",
  "end_time": "2026-04-03",
  "stock_code": ["600000.SH", "000001.SZ"],
  "page": 0,
  "page_size": 1000
}
  • 字段说明:
    • start_time / end_time:交易日期范围,格式 YYYY-MM-DD,闭区间;当 start_time = end_time 时可查询当天数据
    • stock_code:股票代码,支持字符串或数组
    • stock_code 和 (start_time + end_time) 至少提供其一
    • page 从 0 开始,page_size 最大 10000
  • 分档口径:
    • 小单:成交额 < 5万
    • 中单:成交额 5万 ~ 20万
    • 大单:成交额 20万 ~ 100万
    • 特大单:成交额 >= 100万
  • 主要返回字段:
    • trade_date, stock_code
    • buy_sm_vol, buy_sm_amount, sell_sm_vol, sell_sm_amount
    • buy_md_vol, buy_md_amount, sell_md_vol, sell_md_amount
    • buy_lg_vol, buy_lg_amount, sell_lg_vol, sell_lg_amount
    • buy_elg_vol, buy_elg_amount, sell_elg_vol, sell_elg_amount
    • net_mf_vol, net_mf_amount
4.2 主力资金流向总览:POST /api/stock/main_fund_flow_overview
  • URL:{baseUrl}/api/stock/main_fund_flow_overview
  • 方法:POST
  • 请求体 JSON:
{
  "start_time": "2026-04-03",
  "end_time": "2026-04-03",
  "stock_code": "600000.SH",
  "page": 0,
  "page_size": 1000
}
  • 字段说明:
    • start_time / end_time:交易日期范围,格式 YYYY-MM-DD,闭区间;当 start_time = end_time 时可查询当天数据
    • stock_code:股票代码,支持字符串或数组
    • stock_code 和 (start_time + end_time) 至少提供其一
    • page 从 0 开始,page_size 最大 10000
  • 分档口径:
    • 小单:成交额 < 5万
    • 中单:成交额 5万 ~ 20万
    • 大单:成交额 20万 ~ 100万
    • 特大单:成交额 >= 100万
  • 主要返回字段:
    • trade_date, stock_code, name, close, pct_change
    • net_amount, net_amount_rate
    • buy_elg_amount, buy_elg_amount_rate
    • buy_lg_amount, buy_lg_amount_rate
    • buy_md_amount, buy_md_amount_rate
    • buy_sm_amount, buy_sm_amount_rate
4.3 筹码峰分布:POST /api/stock/cyq_chips
  • URL:{baseUrl}/api/stock/cyq_chips
  • 方法:POST
  • 请求体 JSON:
{
  "start_time": "2026-04-03",
  "end_time": "2026-04-03",
  "stock_code": "600000.SH",
  "page": 0,
  "page_size": 1000
}
  • 字段说明:
    • start_time / end_time:交易日期范围,格式 YYYY-MM-DD,闭区间;当 start_time = end_time 时可查询当天数据
    • stock_code:股票代码,支持字符串或数组
    • stock_code 和 (start_time + end_time) 至少提供其一
    • page 从 0 开始,page_size 最大 10000
  • 主要返回字段:
    • trade_date, stock_code, price, percent
4.4 股票基础信息列表:GET /api/stock/list
  • URL:{baseUrl}/api/stock/list
  • 方法:GET
  • Query 参数:
    • stock_code(可选):精确股票代码筛选
    • page:默认 0
    • page_size:默认 20000
  • 响应(封装在统一 success 结构中):
    • data.total
    • data.list:包含 stock_code, name, area, industry, list_date, symbol, list_status, delist_date, is_hs 等。

当用户只给出股票名称、地区、行业等描述时,可先通过该接口获取匹配列表,再提示用户选择具体代码。

5. 交易日历:GET/POST /api/basic/calendar
  • URL:{baseUrl}/api/basic/calendar
  • 方法:GET / POST
  • 请求参数:
    • start_time: YYYY-MM-DD
    • end_time: YYYY-MM-DD
  • 响应:
    • data 为数组,每条含 date, is_open(1 为交易日,0 为休市)。

当用户问“某段时间哪些是交易日”“下一个交易日是什么时候”等,可使用此接口。

6. 株式条件検索:POST /api/stock/search
  • URL:{baseUrl}/api/stock/search
  • 方法:POST
  • Headers:
    • Content-Type: application/json
    • apiKey: <STOCK_API_KEY>
  • リクエストボディ JSON:
{
  "query": "pe_ttm < 20 且 turnover_rate > 3%",
  "stock_code": "000001.SZ",
  "date": "2024-01-01",
  "page": 0,
  "page_size": 100,
  "sort_by": "pe_ttm",
  "sort_order": "asc"
}
  • フィールドの説明:
    • query(必須):検索条件。自然言語または式に対応しています
      • 対応形式:pe_ttm < 20、turnover_rate > 3%、pe_ttm < 20 且 turnover_rate > 3%
      • 中国語に対応:市盈率小于20、换手率大于3%
      • 単位に対応:circ_mv > 100亿、volume > 1000万
    • stock_code(任意):株式コードによる完全一致フィルター
    • date(任意):日付。形式は YYYY-MM-DD または MM-DD(年の指定がない場合は当年)
      • 日付を指定しない場合:stock_snapshot_daily を検索します(最新のリアルタイムデータ)
      • 日付を指定した場合:stock_finance_daily を検索します(過去の財務データ)
    • page:ページ番号。0 から始まります
    • page_size:1 ページあたりの件数。最大 1000
    • sort_by(任意):pe_ttm、turnover_rate などの並べ替えフィールド
    • sort_order(任意):並べ替え順序 asc または desc(デフォルトは desc)
  • 対応フィールド:
    • price / close:株価/終値
    • pct_chg:騰落率
    • turnover_rate:売買回転率
    • pe / pe_ttm:株価収益率
    • pb:株価純資産倍率
    • total_mv / circ_mv:総時価総額/流通時価総額
    • total_share / float_share:総株式数/流通株式数
    • volume / turnover:出来高/売買代金
    • dividend_ratio:配当利回り
  • レスポンス本文:
    • data.total:総レコード数
    • data.list:条件に一致した株式のリスト

重要なお知らせ:この API が 1 回のリクエストで返すデータは最大 1000 件です。さらに多くの結果を取得するには、ページネーション機能を使用してください。

適用シナリオ:財務指標に基づいて株式を絞り込みたい場合。たとえば、「PE<20 の株式を探して」「売買回転率が 5% を超える株式はどれですか」など。

7. 先物データ
  • 契約の基本情報を取得(get_future_basic):倍率、受渡方法、上場日など、先物契約の基本情報を取得します。
  • 限月連続契約のマッピングを取得(get_future_mapping):先物の限月連続契約または連続契約と実際の限月契約とのマッピング関係を取得します。
  • リアルタイム分足データを取得(get_future_realtime_history):POST /api/future/realtime/history を呼び出して、リアルタイムの 1 分足データを取得します。contract_code(文字列または配列)、contract_type(main/contract)、trade_time、date、page、page_size に対応しています。デフォルトは page=0、page_size=2000 で、1 ページあたりの最大件数は 10000 です。日付を指定しない場合は上海時間の当日を検索し、直近 7 暦日のみをサポートします。夜間取引が日付をまたぐ場合は、2 つの暦日をそれぞれ検索してください。data.date、data.total、data.list が返されます。リストのフィールドには contract_code、contract_type、trade_time、OHLC、vol、amount、oi が含まれます。このツールは先物分足 K 線の権限を再利用します。
  • 分足 K 線データを取得(get_future_minute):先物契約の過去の分足 K 線データを取得します。
8. 寄り付き前の板寄せデータ:POST /api/stock/call_auction
  • URL:{baseUrl}/api/stock/call_auction
  • 方法:POST
  • Headers:apiKey: <STOCK_API_KEY>
  • リクエストボディ JSON:
{
  "stock_code": "000001.SZ",
  "start_time": "2024-01-01 09:15:00",
  "end_time": "2024-01-01 09:25:00",
  "page": 0,
  "page_size": 100
}
  • フィールドの説明:
    • start_time / end_time:時間範囲。日付のみを指定した場合、時刻は自動的に補完されます
    • page_size:最大 10000
  • 戻り値のフィールド:stock_code, name, trade_time, close, open, high, low, pre_close, vol, amount, turnover_rate, pe, pb, pe_ttm, dv_ttm など

重要なお知らせ:1 回のリクエストで返されるデータは最大 10000 件です。

9. 大引けスナップショットデータ:POST /api/stock/closing_snapshot
  • URL:{baseUrl}/api/stock/closing_snapshot
  • 方法:POST
  • Headers:apiKey: <STOCK_API_KEY>
  • リクエストボディ JSON:
{
  "stock_code": "000001.SZ",
  "start_time": "2024-01-01 15:00:00",
  "end_time": "2024-01-01 15:05:00",
  "page": 0,
  "page_size": 100
}
  • 戻り値のフィールド:価格、出来高、買い気配・売り気配、騰落率などを含む完全なスナップショットデータ

重要なお知らせ:1 回のリクエストで返されるデータは最大 10000 件です。

10. 株式スナップショットデータ(リアルタイム/過去):POST /api/stock/snapshot_daily
  • URL:{baseUrl}/api/stock/snapshot_daily
  • 方法:POST
  • Headers:apiKey: <STOCK_API_KEY>
  • リクエストボディ JSON:
{
  "stock_code": "000001.SZ",
  "date": "2024-01-01",
  "page": 0,
  "page_size": 10000
}
  • 特徴:
    • リアルタイムスナップショット:date を指定しない場合、または今日の日付を指定した場合、システムは最新のリアルタイムスナップショットデータを優先的に Redis キャッシュから読み取ります。
    • 過去のスナップショット:過去の日付を指定すると、その日の過去のスナップショットデータが返されます。
    • 戻り値のフィールドには、価格、出来高、時価総額、PE、PB、買い気配・売り気配など、40 項目以上の指標が含まれます。
    • page_size:最大 10000。

重要なお知らせ:リアルタイム相場のスナップショットを取得するための主要な API です。

11. プッシュ履歴データ:POST /api/stock/snapshot_push_history
  • URL:{baseUrl}/api/stock/snapshot_push_history
  • 方法:POST
  • Headers:apiKey: <STOCK_API_KEY>
  • 説明:WebSocket のプッシュ履歴を検索し、スナップショット配列を返します
12. 取引停止情報:GET /api/stock/suspension
  • URL:{baseUrl}/api/stock/suspension
  • 方法:GET
  • Headers:apiKey: <STOCK_API_KEY>
  • クエリパラメーター:
    • stock_code(任意)
    • trade_date(任意)
    • page, page_size
13. 調整係数:POST /api/stock/adj_factor
  • URL:{baseUrl}/api/stock/adj_factor
  • 方法:POST
  • Headers:apiKey: <STOCK_API_KEY>
  • リクエストボディ JSON:
{
  "stock_code": "000001.SZ",
  "start_time": "2024-01-01",
  "end_time": "2024-01-31",
  "page": 0,
  "page_size": 10000
}
  • 戻り値のフィールド:stock_code, stock_name, trade_date, factor_a, factor_b(カスタム調整係数)

重要なお知らせ:1 回のリクエストで返されるデータは最大 10000 件です。

14. データダウンロード(1 日分の相場):POST /api/stock/daily_dump
  • URL:{baseUrl}/api/stock/daily_dump
  • 方法:POST
  • Headers:apiKey: <STOCK_API_KEY>
  • リクエストボディ JSON:
{
  "date": "2024-01-01",
  "level": "daily"
}
  • level パラメーター:daily | 1min | 5min | 15min | 30min | 60min
  • 戻り値:gzip 圧縮された JSON ファイル(Nginx による高速ダウンロード)
  • 制限:
    • 直近 90 日間のデータのみダウンロードできます
    • データ量が大きいため、各ユーザーは同じ日付のデータを 1 日あたり最大 10 回ダウンロードできます。上限を超えると、その日付のデータは 3 日間ダウンロードできなくなります。解除についてはカスタマーサポートにお問い合わせください
    • 当日のデータは、大引け後(15:05 以降)にのみダウンロードできます
15. 可转债日线数据:POST /api/bond/daily
  • URL:{baseUrl}/api/bond/daily
  • 方法:POST
  • Headers:apiKey: <STOCK_API_KEY>
  • 请求体 JSON:
{
  "stock_code": "128136.SZ",
  "start_time": "2024-01-01",
  "end_time": "2024-01-31",
  "page": 0,
  "page_size": 10000
}
  • 字段说明:
    • stock_code(可选):可转债代码,如 128136.SZ,支持数组
    • start_time、end_time:格式为 YYYY-MM-DD
  • 返回字段:stock_code, stock_name, trade_date, open, high, low, close, prev_close, change, pct_chg, factor, vol, amount

单次请求最多返回 10000 条数据。

16. 可转债日指标数据:POST /api/bond/indicator_daily
  • URL:{baseUrl}/api/bond/indicator_daily
  • 方法:POST
  • Headers:apiKey: <STOCK_API_KEY>
  • 请求体 JSON:
{
  "stock_code": "128136.SZ",
  "start_date": "2024-01-01",
  "end_date": "2024-01-31",
  "page": 0,
  "page_size": 10000
}
  • 字段说明:
    • stock_code(可选):可转债代码,支持数组
    • start_date、end_date(可选):日期范围,至少提供一个
  • 返回字段:stock_code, stock_name, trade_date, name, pre_close, open, high, low, close, change, pct_chg, vol, amount, remain_size, pure_bond, pure_premium, conv_value, conv_premium 等

单次请求最多返回 10000 条数据。

17. 可转债列表:POST /api/bond/list
  • URL:{baseUrl}/api/bond/list
  • 方法:POST
  • Headers:apiKey: <STOCK_API_KEY>
  • 请求体 JSON:
{
  "bond_code": "128136.SZ",
  "stock_code": "000001.SZ",
  "exchange": "SZSE",
  "page": 0,
  "page_size": 10000
}
  • 字段说明:
    • bond_code(可选):可转债代码筛选
    • stock_code(可选):正股代码筛选
    • exchange(可选):交易所筛选(SZSE/SSE)
  • 返回字段:包含 bond_code, bond_name, bond_short_name, conv_code, stock_code, stock_name 等完整可转债信息
18. 涨停明细数据:POST /api/stock/limit_up
  • URL:{baseUrl}/api/stock/limit_up
  • 方法:POST
  • Headers:apiKey: <STOCK_API_KEY>
  • 请求体 JSON:
{
  "stock_code": ["603716.SH", "000001.SZ"],
  "start_time": "2026-04-10",
  "end_time": "2026-04-10",
  "page": 0,
  "page_size": 10000
}
  • 字段说明:
    • stock_code(可选):股票代码,支持字符串或数组
    • start_time、end_time(必填):日期范围,格式 YYYY-MM-DD
    • page:页码,从 0 开始
    • page_size:每页数量,最大 10000
  • 返回字段:
    • 基础信息:trade_date, stock_code, stock_name, price, change_percent
    • 封单信息:sealed_volume, sealed_amount, sealed_turnover_ratio, sealed_flow_ratio
    • 涨停过程:first_limit_time, final_limit_time, open_count, consecutive_days, boards
    • 业务标签:limit_type, is_limit_up, reason_text
19. 同花顺热度榜:GET /api/ths/hot / POST /api/ths/hot
  • URL:{baseUrl}/api/ths/hot
  • 方法:GET / POST
  • Headers:apiKey: <STOCK_API_KEY>
  • 参数:
    • market(可选):热榜类型 (默认:热股)。可选值:热股, ETF, 可转债, 行业板块, 概念板块, 期货
    • trade_date(可选):指定交易日期,支持 YYYY-MM-DD 或 YYYYMMDD;不传默认返回最新交易日
    • GET 使用 Query 参数,POST 使用 JSON Body
  • 返回字段:
    • trade_date: 交易日期
    • update_time: 排行榜更新时间
    • list: 热榜数据列表,包含 name (名称), code (代码), rank (排名), pct_change (涨跌幅%), hot (热度值)
20. 涨跌停推送 WS 订阅:GET {{WS_BASE_URL}}/ws/stream
  • URL:{{WS_BASE_URL}}/ws/stream?token=<STOCK_API_KEY>&types=...

  • 协议:WebSocket

  • 鉴权:Query 参数 token(使用 API Key)

  • 订阅参数:types(逗号分隔,支持多选)

  • 六类推送与订阅值:

    • 涨停推送:limit_up
    • 涨停炸板:limit_up_broken
    • 涨停股数据推送(聚合):stock_limit_up(包含 limit_up + limit_up_broken)
    • 跌停推送:limit_down
    • 跌停炸板:limit_down_broken
    • 跌停股数据推送(聚合):stock_limit_down(包含 limit_down + limit_down_broken)
  • 连接示例:

    • {{WS_BASE_URL}}/ws/stream?token=<STOCK_API_KEY>&types=stock_limit_up,stock_limit_down
  • 动态订阅示例:

{"action":"subscribe","types":["stock_limit_up","stock_limit_down"]}
  • 推送消息示例:
{
  "type": "stock_limit_event",
  "data": {
    "type": "limit_up",
    "stock_code": "600000.SH",
    "stock_name": "浦发银行",
    "change_rate": 10.0,
    "source": "fast",
    "timestamp": "2026-04-17 11:23:45"
  }
}
  • 字段说明:
    • 外层 type 固定为 stock_limit_event
    • data.type 可能值:limit_up / limit_up_broken / limit_down / limit_down_broken
    • 常见字段:stock_code, stock_name, change_rate, source, timestamp

调用策略与最佳实践

  1. API Key 获取与使用
    • 优先从环境变量 STOCK_API_KEY 读取(由 OpenClaw 按 skills.entries.openclaw-stock-skill.apiKey 注入)。
    • 若环境变量缺失,可根据用户在 Skill 配置面板中输入的值(通常同样会映射到该环境变量)进行调用。
    • 不要在 URL Query 中传递 apiKey 或 api_key,后端会视为安全风险。
  2. 错误处理
    • code = 401:API Key 无效或缺失,应提示用户检查在 OpenClaw Skill 配置中的 API Key。
    • code = 403:权限不足或下载次数/访问次数限制,应向用户说明权限/限流约束。
    • code = 429:请求过于频繁,需减少调用频率或提示用户稍后再试。
  3. 分页与大数据量
    • 若 data.total 很大,代理应分批分页请求,并在回答中做汇总,而不是一次性获取全部数据。
    • 对于分钟级或 tick 级大数据量,应在对话中与用户确认时间范围和精度,避免无谓的海量下载。
  4. 单位与精度
    • 价格、成交量等字段在后端已经统一保留 2 位小数;如需展示给用户,可直接使用或再格式化。
    • 分红相关字段在估值接口中已做 10 年平均等处理,解释时注意说明口径(年化、近 10 年等)。

使用示例(给代理的思路)

  • 当用户说:“帮我查一下 000001.SZ 在 2024 年 1 月份的日 K 线”
    1. 调用 POST /api/stock/daily,stock_code = "000001.SZ",时间区间为 2024-01-01 至 2024-01-31。
    2. 对返回的 data.list 进行整理,总结涨跌幅、最大回撤、平均成交额等。
  • 当用户说:“这周哪些天是交易日?”
    1. 根据当前日期计算一周范围,调用 GET/POST /api/basic/calendar。
    2. 将 is_open = 1 的日期列出,说明哪些是交易日。

本技能不包含额外可执行脚本,完全通过指导代理调用现有 HTTP 接口工作。所有请求都应优先使用 STOCK_API_KEY 环境变量,并遵守上述限流与安全约定。

コメント