同花順股票介面

👤 bensema 📦 v1.0.4 ⭐ 4.6 ⬇️ 20.2K 下載
💼 行業專業 免費

📖 技能介紹


name: ths-advanced-analysis description: 基於 thsdk 進行高階股票分析:分鐘K線(1m/5m/15m/30m/60m/120m)、板塊/指數行情(主要指數/申萬行業/概念板塊成分股)、多股票批次對比(表格+歸一化走勢圖+相關性熱力圖)、盤口深度、大單流向、集合競價異動、日內分時、歷史分時。當用戶提到"分鐘K線"、"日內走勢"、"盤口"、"大單"、"競價異動"、"板塊行情"、"行業排名"、"概念板塊"、"成分股"、"對比多隻股票"、"批次分析"、"漲幅對比"、"相關性"、"港股"、"美股"、"外匯"、"期貨"、"資訊"、"快訊",或者需要同時檢視2只以上股票、關注短線交易、量化研究時,必須使用此skill。


THS Advanced Analysis Skill

對話引導規範

澄清意圖(意圖模糊時必問)

使用者說 可能的意圖 必問
"幫我看看XX股票" 即時行情?K線?大單?
"分析一下XX" 技術面?資金面?和誰對比?
"XX板塊怎麼樣" 整體漲跌?成分股?領漲股?
"選一些好股票" 短線?價值?哪個行業?條件?
"XX的5分鐘K線" 意圖明確 ❌ 直接執行
"今日漲停股" 意圖明確 ❌ 直接執行

話術示例:

使用者:"幫我分析一下寧德時代"
Claude:"好的,請問你主要想看哪個方向?
  1. 今日即時行情 + 資金流向
  2. 分鐘K線(盤中走勢)
  3. 近期日K線趨勢
  4. 和比亞迪、億緯鋰能等對比
  5. 用問財篩選相關概念股"

呼叫後的後續提示(有延伸價值時才提)

場景 提示
展示行業排名 "需要查某個行業的成分股行情嗎?"
展示分鐘K線 "需要同時看大單流向或盤口深度嗎?"
展示多股對比表格 "需要展示歸一化走勢圖或相關性嗎?"
問財選出候選股 "需要對這些股票做K線技術驗證嗎?"
展示競價異動 "需要對某隻異動股拉盤前分時看細節嗎?"

完整呼叫案例

檔案 場景
examples/01_minute_kline.py 分鐘K線 + 均線 + 成交量異動標註
examples/02_sector_industry.py 行業排名 + 概念板塊成分股 + 指數行情
examples/03_multi_stock_compare.py 多股批次對比:表格 + 歸一化走勢 + 相關性
examples/04_bigorder_auction.py 大單流向 + 競價異動掃描 + 分時/盤口 + 資訊
examples/05_wencai_nlp.py 問財NLP:選股/行情/財務/技術/複雜組合

場景速查

使用者需求 方法
今日漲停/連板/競價強勢股 wencai_nlp("今日漲停,非ST")
財務選股(ROE/PE/PB) wencai_nlp("連續3年ROE大於15%,非ST")
技術形態選股 wencai_nlp("均線多頭排列,MACD金叉")
分鐘K線 klines(code, interval="5m", count=78)
今日分時 intraday_data(code)
歷史某日分時 min_snapshot(code, date="20250101")
五檔盤口 depth(code)
買方/賣方深度詳情 order_book_bid(code) / order_book_ask(code)
大單流向 big_order_flow(code)
競價異動掃描 call_auction_anomaly("USHA")
申萬行業列表 ths_industry()
概念板塊列表 ths_concept()
板塊行情(漲幅/市值) market_data_block(link_code)
板塊成分股 block_constituents(link_code)
指數行情 market_data_index(ths_code)
多股票對比 批次 market_data_cn + klines
港股行情 market_data_hk(code)
美股行情 market_data_us(code)
外匯匯率 market_data_forex(code)
期貨行情 market_data_future(code)
即時資訊/快訊 news()
權息資料 corporate_action(code)
今日IPO / 待申購 ipo_today() / ipo_wait()

安裝

pip install --upgrade thsdk

包來源:PyPI 系統要求:Python 3.9+,支援 Linux(x86_64/arm64)、macOS(Intel/Apple Silicon)、Windows


連線

from thsdk import THS

with THS() as ths:   # 遊客模式,無需賬戶配置
    ...

第一步:程式碼解析

所有中文名/縮寫/短程式碼先用 search_symbols 獲得完整 THSCODE:

with THS() as ths:
    resp = ths.search_symbols("同花順")
    # data → [
    #   {'THSCODE': 'USZA300033', 'Name': '同花順',
    #    'MarketStr': 'USZA', 'Code': '300033', 'MarketDisplay': '深A'},
    #   {'THSCODE': 'URFI883404', 'Name': '同花順情緒指數', 'MarketDisplay': '同指'},
    # ]

選碼規則:

情況 處理
0條 告知未找到
1條 直接使用
多條,只有1只A股(MarketDisplay含"滬A"或"深A") 自動選A股
多條,多隻A股 展示列表,等使用者選擇

市場字首說明:

字首 含義
USHA 上海A股
USZA 深圳A股
USHI 上海指數
USZI 深圳指數
USTM 北交所
UHKG 港股
URFI 行業/概念板塊
UFXB 外匯(基本匯率)

常用指數 THSCODE(直接使用,無需 search_symbols):

指數 THSCODE
上證指數 USHI000001
深證成指 USZI399001
創業板指 USZI399006
科創50 USHI000688
滬深300 USHI000300
中證500 USHI000905
上證50 USHI000016

⚠️ 指數字首是 USHI/USZI,需呼叫 market_data_index,不能用 market_data_cn


K線資料

interval 引數: "1m" / "5m" / "15m" / "30m" / "60m" / "120m" / "day" / "week" / "month" / "quarter" / "year"

⚠️ 必須寫 "5m",不能寫 "5min"

count 與 start/end 二選一,不可混用:

from datetime import datetime
from zoneinfo import ZoneInfo
tz = ZoneInfo('Asia/Shanghai')

with THS() as ths:
    # 按條數
    resp = ths.klines("USZA300033", interval="5m", count=78)

    # 按時間範圍
    resp = ths.klines("USZA300033", interval="day",
                      start_time=datetime(2025, 1, 1, tzinfo=tz),
                      end_time=datetime(2025, 3, 1, tzinfo=tz))

    # 前復權(量化回測用)
    resp = ths.klines("USHA600519", interval="day", count=250, adjust="forward")

    df = resp.df
    # 返回欄位:時間, 收盤價, 成交量, 總金額, 開盤價, 最高價, 最低價
    # 分鐘K線"時間"自動轉為 datetime;日K"時間"為 datetime(YYYYMMDD)

分時與盤口資料

日內分時(當日)

with THS() as ths:
    resp = ths.intraday_data("USZA300033")
    df = resp.df
    # 欄位:時間(datetime+tz), 價格, 成交量, 總金額, 領先指標

歷史分時(近一年)

with THS() as ths:
    resp = ths.min_snapshot("USZA300033", date="20240315")
    df = resp.df
    # 欄位:時間(timestamp), 價格, 成交量, 外盤成交量, 內盤成交量, 總金額

五檔盤口

with THS() as ths:
    resp = ths.depth("USZA300033")              # 單隻
    resp = ths.depth(["USZA300033", "USHA600519"])  # 多隻
    df = resp.df
    # 欄位:買1~5價/量, 賣1~5價/量, 程式碼, 昨收價

買賣深度詳情

小蔥技能7w4.net持續更新中。

with THS() as ths:
    resp = ths.order_book_bid("USZA300033")   # 買方深度
    resp = ths.order_book_ask("USZA300033")   # 賣方深度
    df = resp.df

3秒 Tick

with THS() as ths:
    resp = ths.tick_level1("USZA300033")
    df = resp.df
    # 欄位:時間(timestamp), 價格, 成交方向, 交易筆數, 當前量

超級盤口(含委託檔位)

with THS() as ths:
    resp = ths.tick_super_level1("USZA300033")                   # 即時
    resp = ths.tick_super_level1("USZA300033", date="20240315")  # 歷史
    df = resp.df
    # ⚠️ 部分欄位值為 4294967295 表示無效資料,需過濾

大單與競價

大單流向

with THS() as ths:
    resp = ths.big_order_flow("USZA300033")
    df = resp.df
    # 欄位:時間, 成交方向, 成交量, 總金額, 委託買入價, 委託賣出價

集合競價異動(9:15~9:25)

with THS() as ths:
    resp_sh = ths.call_auction_anomaly("USHA")   # 滬市
    resp_sz = ths.call_auction_anomaly("USZA")   # 深市
    df = resp_sh.df
    # 欄位:時間, 價格, 總金額, 程式碼, 名稱, 異動型別1(已對映中文)
    # 異動型別:漲停試盤/競價搶籌/大幅高開/急速上漲/大買單試盤 等13種

早盤集合競價快照

with THS() as ths:
    resp = ths.call_auction("USZA300033")
    df = resp.df
    # 欄位:時間, 成交方向, 成交量, 總金額, 委託買入價, 委託賣出價

板塊與指數

行業/概念板塊列表

with THS() as ths:
    resp = ths.ths_industry()   # 同花順行業,約90個
    resp = ths.ths_concept()    # 概念板塊,約390個
    df = resp.df
    # ⚠️ 僅返回:程式碼(URFIXXXXXX), 名稱
    # 漲幅/行情需另調 market_data_block(link_code)
    # extra['total_count'] = 板塊總數

板塊行情(兩步走)

with THS() as ths:
    # Step 1:獲取板塊列表
    resp = ths.ths_industry()
    target = next(r for r in resp.data if '半導體' in r['名稱'])
    link_code = target['程式碼']   # 格式 URFIXXXXXX

    # Step 2:查板塊行情
    resp = ths.market_data_block(link_code, "基礎資料")
    df = resp.df
    # 欄位:價格, 漲幅, 成交量, 板塊總市值, 板塊流通市值,
    #        上漲家數, 下跌家數, 領漲股
    # query_key 也支援 "擴充套件"(含板塊漲速、主力淨流入等)

板塊成分股

with THS() as ths:
    resp = ths.block_constituents("URFI883404")
    df = resp.df
    # 欄位:程式碼(完整THSCODE), 名稱
    # extra['total_count'] = 成分股總數

指數列表 & 行情

with THS() as ths:
    # 全部指數列表(約580個)
    resp = ths.index_list()
    df = resp.df   # 欄位:程式碼, 名稱

    # 指數行情(單隻或同市場批次)
    resp = ths.market_data_index("USHI000001")
    resp = ths.market_data_index(["USHI000001", "USHI000300", "USHI000905"])
    df = resp.df
    # 欄位:價格, 漲幅, 漲跌, 成交量, 總金額, 最高價, 最低價
    # query_key 也支援 "擴充套件"(含量比、振幅等)

A股行情(market_data_cn)

with THS() as ths:
    resp = ths.market_data_cn("USZA300033", "基礎資料")
    # 也支援列表(同市場)
    resp = ths.market_data_cn(["USZA300033", "USZA000001"], "彙總")
    df = resp.df
    # 基礎資料欄位:價格, 成交方向, 成交量, 交易筆數, 總金額,
    #               漲速, 當前量, 程式碼, 名稱, 昨收價, 開盤價, 最高價, 最低價

query_key 選項:

query_key 含義
"基礎資料" 價格、漲跌幅、成交量、金額、開高低、漲速
"基礎資料2" 精簡版基礎資料
"基礎資料3" 極簡(價格、昨收、成交量)
"擴充套件1" 漲幅、漲跌、換手率、量比、主力淨流入、委比
"擴充套件2" 漲幅、換手率、總市值、流通市值、委比
"彙總" 全量欄位,多股對比首選

⚠️ 同市場限制:USHA 和 USZA 不能在同一次呼叫中混合


多市場行情

港股

with THS() as ths:
    # 港股列表
    resp = ths.stock_hk_lists()
    # 港股行情
    resp = ths.market_data_hk("UHKG00700", "基礎資料")
    df = resp.df
    # query_key 支援:"基礎資料" / "每股淨資產" / "淨利潤" / "財務指標"

美股 / 納斯達克

with THS() as ths:
    resp = ths.stock_us_lists()      # 美股列表
    resp = ths.nasdaq_lists()        # 納斯達克列表
    resp = ths.market_data_us("UNQQAAPL", "基礎資料")
    df = resp.df
    # query_key 支援:"基礎資料" / "每股淨資產" / "每股收益" / "淨利潤" / "財務指標"

外匯

with THS() as ths:
    resp = ths.forex_list()          # 外匯列表(約25個,UFXB字首)
    resp = ths.market_data_forex("UFXBGBPUSD", "基礎資料")
    df = resp.df
    # 欄位:價格, 委託買入價, 委託賣出價, 程式碼, 名稱, 昨收價, 開盤價, 最高價, 最低價
    # query_key 也支援 "擴充套件"

期貨

with THS() as ths:
    resp = ths.futures_lists()        # 主力合約列表
    resp = ths.market_data_future("UCFSAU2506", "基礎資料")
    df = resp.df
    # query_key 支援:"基礎資料" / "日增倉" / "擴充套件"

債券 / ETF

with THS() as ths:
    resp = ths.bond_lists()           # 可轉債列表
    resp = ths.fund_etf_lists()       # ETF基金列表
    resp = ths.fund_etf_t0_lists()    # ETF T+0基金列表
    resp = ths.market_data_bond("USHD123456", "基礎資料")
    resp = ths.market_data_fund("USHA510300", "基礎資料")

多股票批次對比

import pandas as pd
from collections import defaultdict
from thsdk import THS

stock_names = ["貴州茅臺", "五糧液", "瀘州老窖"]

with THS() as ths:
    # Step 1: 批次解析程式碼
    stock_codes = []
    for name in stock_names:
        resp = ths.search_symbols(name)
        a_shares = [s for s in resp.data
                    if any(m in s.get('MarketDisplay', '') for m in ['滬A', '深A'])]
        if a_shares:
            stock_codes.append({'name': name, 'code': a_shares[0]['THSCODE']})

    # Step 2: 按市場分組
    by_market = defaultdict(list)
    for s in stock_codes:
        by_market[s['code'][:4]].append(s)

    # Step 3: 批次行情
    rows = []
    for market, stocks in by_market.items():
        codes = [s['code'] for s in stocks]
        resp = ths.market_data_cn(codes, "彙總")
        for i, row in enumerate(resp.data):
            row['股票名稱'] = stocks[i]['name']
            rows.append(row)
    quote_df = pd.DataFrame(rows)

    # Step 4: 批次K線
    klines_data = {}
    for s in stock_codes:
        resp = ths.klines(s['code'], interval="day", count=30, adjust="forward")
        klines_data[s['name']] = resp.df

# Step 5: 歸一化走勢(起點=100)
for name, df in klines_data.items():
    df['歸一化'] = df['收盤價'] / df['收盤價'].iloc[0] * 100

# Step 6: 相關性矩陣
returns = pd.DataFrame({name: df['收盤價'].pct_change() for name, df in klines_data.items()})
corr_matrix = returns.corr()

輸出規範: 1. 表格:股票 / 最新價 / 漲幅% / 成交額 / 換手率 / 量比 / 主力淨流入 / 總市值 2. 歸一化走勢折線圖(多線,顏色區分) 3. 相關性熱力圖(量化場景)


問財自然語言查詢(wencai_nlp)

對接 iwencai.com 同一介面,多條件用逗號/分號分隔。

with THS() as ths:
    resp = ths.wencai_nlp("連續3日主力淨流入,換手率大於5%,非ST")
    df = resp.df
    # ⚠️ 股票程式碼格式為 "605366.SH",需轉換

返回程式碼轉換:

def to_ths_code(code_str: str) -> str:
    # wencai 返回:'300033.SZ' / '600519.SH' / '835975.BJ'
    try:
        code, market = str(code_str).split('.')
        mapping = {'SH': 'USHA', 'SZ': 'USZA', 'BJ': 'USTM'}
        prefix = mapping.get(market.upper(), '')
        return f"{prefix}{code}" if prefix else None
    except Exception:
        return None

df['ths_code'] = df['股票程式碼'].apply(to_ths_code)

六大查詢型別:

① 行情 & 盤面

"今日漲停,非ST"
"連續2日漲停,非一字板,非ST"
"今日漲停原因類別,漲停封單額,封單量"
"競價漲幅大於3%,競價量大於昨日成交量5%,非ST"
"主力淨流入由大到小排名前20,非ST"
"近10日區間主力資金流向大於5000萬,市值大於100億"

② 板塊 & 行業

"今日申萬行業漲跌幅排名"
"今日概念板塊漲幅排名前20"
"人工智慧概念股,今日漲跌幅,成交額,主力淨流入"
"今日漲幅最大的5個概念板塊,漲幅,成分股數量"

③ 財務指標

"連續3年ROE大於15%,非ST,上市大於3年"
"市盈率小於15,股息率大於3%,市淨率小於2,非ST"
"市淨率小於1,非ST,流通市值大於20億"
"連續5年分紅,股息率大於4%,資產負債率小於60%"

④ 技術形態

"均線多頭排列,MACD金叉,換手率大於3%,非ST"
"均線粘合,平臺突破,成交量大於5日均量1.5倍"
"仙人指路,非ST,非停牌"
"250日新高,非ST,滬深A,上市超過250天"

⑤ 複雜組合

# 短線強勢
"均線多頭排列,MACD金叉,DIFF上穿中軸,換手率大於1%且小於10%,30日內有2個交易日漲幅大於4%,非ST"
# 競價打板
"昨日非一字板漲停,今日競價漲幅大於等於0%且小於等於9.9%,今日隔夜買單額小於10億,非ST,非科創板"

⑥ 資訊查詢

"漲停原因歸類前20"
"今日龍虎榜"
"今日大宗交易"
"近一週北向資金淨買入前20"
方法 用途
wencai_nlp(condition) 主要用法。完整自然語言,返回股票列表+欄位
wencai_base(condition) 簡單欄位查詢,如 "所屬行業"

即時資訊(news)

import re

with THS() as ths:
    resp = ths.news()   # 預設:上證指數相關快訊
    # 指定個股資訊:
    # resp = ths.news(text_id=0x3814, code="300033", market="USZA")

    for item in resp.data:
        props = dict(re.findall(r'(\w+)=([^\n]+)', item.get('Properties', '')))
        print(f"[{props.get('source','')}] {item['Title']}")
        print(f"  {props.get('summ','')}\n")
    # 欄位:Op, Time(timestamp), Title, ID, Code, Stock, Properties
    # Properties 含:ctime, summ(摘要), source(來源)

其他實用 API

權息資料

with THS() as ths:
    resp = ths.corporate_action("USZA300033")
    df = resp.df
    # 欄位:時間(int YYYYMMDD), 權息資料(文字)
    # 示例:20100312 → "2010-03-12(每十股 轉增10.00股 紅利3.00元)$"

IPO 資料

with THS() as ths:
    resp = ths.ipo_today()   # 今日申購/上市
    resp = ths.ipo_wait()    # 待申購
    df = resp.df
    # 欄位:stock_name, stock_code, order_date, issue_price,
    #       issue_pe_static, success_rate, order_limit_up,
    #       industry_name, exchange 等

市場列表

with THS() as ths:
    resp = ths.stock_cn_lists()    # 全部A股(約5198只)
    resp = ths.stock_hk_lists()    # 港股
    resp = ths.stock_us_lists()    # 美股
    resp = ths.stock_bj_lists()    # 北交所
    resp = ths.nasdaq_lists()      # 納斯達克
    resp = ths.stock_b_lists()     # B股
    resp = ths.bond_lists()        # 可轉債
    resp = ths.fund_etf_lists()    # ETF基金
    resp = ths.fund_etf_t0_lists() # ETF T+0基金
    resp = ths.futures_lists()     # 期貨主力合約
    resp = ths.forex_list()        # 外匯(約25個)
    df = resp.df   # 欄位:程式碼(完整THSCODE), 名稱

程式碼補全工具

with THS() as ths:
    resp = ths.complete_ths_code("USZA300033")
    # 用於驗證/補全程式碼資訊

錯誤處理

with THS() as ths:
    resp = ths.klines("USZA300033", interval="5m", count=60)
    if not resp:
        print(f"呼叫失敗: {resp.error}")
    elif resp.df.empty:
        print("資料為空,可能是非交易時間")
    else:
        df = resp.df

常見報錯:

錯誤 原因 解決
"未登入" 未 connect 確保用 with THS() as ths
"證券程式碼必須為10個字元" 格式錯誤 先過 search_symbols
"一次性查詢多支股票必須市場程式碼相同" 滬深混合 按市場分組查詢
"無效的週期型別: 5min" interval 寫法錯 改為 "5m"
"'count' 引數不能與 'start_time' 同時使用" 引數衝突 二選一

注意事項: - 遊客賬戶在部分專業資料/即時資料上可能有許可權限制 - 批次拉取時建議加 time.sleep(0.5) 避免限流 - THS 為同步阻塞,在 FastAPI/asyncio 中需放入執行緒池


與 ths-financial-data 的分工

場景 skill
單隻A股行情/資金流向/日K ths-financial-data
分鐘K線 / 盤中監控 本 skill
盤口深度 / 大單 / 競價異動 本 skill
板塊/指數行情及成分股 本 skill
多股票批次對比 本 skill
港股/美股/外匯/期貨行情 本 skill
即時資訊快訊 本 skill
問財自然語言查詢 兩者均可

🤖 AI 評測

這個 Skill 質量很好,專業度高、覆蓋全面,能滿足股票行情分析、板塊監控、選股篩選、大單追蹤等多種需求。文件清晰詳細,配有多個完整示例,容易上手。主要不足是內容量較大初次閱讀需要一定時間消化,且更適合有一定金融分析基礎的使用者,新手可能需要額外學習成本。總體推薦。

📊 多維度評分

適應性4.5
規範性4.7
有效性4.7
可靠性4.4
可信度5

📁 包含檔案 (7 個)

📄 SKILL.md 20.5 KB
📄 _meta.json 140 B
📄 examples/01_minute_kline.py 2.7 KB
📄 examples/02_sector_industry.py 4.3 KB
📄 examples/03_multi_stock_compare.py 4.8 KB
📄 examples/04_bigorder_auction.py 6 KB
📄 examples/05_wencai_nlp.py 14 KB