name: pywencai description: 同花順問財自然語言資料查詢工具 - 使用中文自然語言查詢A股、指數、基金、港美股、可轉債等市場資料。 version: 1.2.0 homepage: https://github.com/zsrl/pywencai metadata: {"clawdbot":{"emoji":"📈","requires":{"bins":["python3","node"]}}}
通過Python使用中文自然語言從同花順問財查詢A股及其他市場資料。
⚠️ 需要Cookie:必須提供問財網站的有效Cookie。獲取方法見下文。
pip install pywencai --upgrade
iwencai.com的請求,從請求頭中複製Cookie值。cookie引數使用。import pywencai
# 查詢今日漲幅前10的股票,需要有效cookie
res = pywencai.get(query='今日漲幅前10', cookie='your_cookie_here')
print(res)
pywencai.get(**kwargs)'今日漲停股票'、'市盈率小於20的股票''退市@退市日期''asc'(升序)或 'desc'(降序)1)100)True獲取所有頁;或設為整數n獲取前n頁'stock'),可選值:stock — A股股票zhishu — 指數fund — 基金hkstock — 港股usstock — 美股threeboard — 新三板conbond — 可轉債insurance — 保險futures — 期貨lccp — 理財產品10)0)True在控制台列印日誌True使用付費版(需要對應的cookie)True始終返回DataFrame或None(不返回dict)['600519', '000010']requests的額外引數,如 {'proxies': proxies}pandas.DataFramedict(可能包含文本和DataFrame)import pywencai
# 使用自然語言查詢低市盈率股票
res = pywencai.get(query='市盈率小於20的股票', cookie='xxx')
print(res)
import pywencai
# 查詢退市股票,按退市日期升序排列
res = pywencai.get(
query='退市股票',
sort_key='退市@退市日期', # 指定排序欄位
sort_order='asc', # 升序
cookie='xxx'
)
print(res)
import pywencai
# 配置HTTP代理
proxies = {'http': 'http://proxy:8080', 'https': 'http://proxy:8080'}
# loop=True自動分頁獲取所有資料;log=True列印請求日誌
res = pywencai.get(
query='昨日漲幅',
sort_order='asc', # 升序
loop=True, # 自動獲取所有頁面
log=True, # 列印日誌資訊
cookie='xxx',
request_params={'proxies': proxies} # 傳入代理配置
)
print(res)
import pywencai
# 設定query_type='zhishu'查詢指數資料
res = pywencai.get(
query='上證指數近5日漲跌幅',
query_type='zhishu', # 設定查詢型別為指數
cookie='xxx'
)
print(res)
import pywencai
# 設定query_type='conbond'查詢可轉債資料
res = pywencai.get(
query='可轉債溢價率小於10%',
query_type='conbond', # 設定查詢型別為可轉債
cookie='xxx'
)
print(res)
pip install pywencai --upgradeloop=True且設定了find時,loop被忽略,僅返回前100條結果。pro=True並提供有效cookie。import pywencai
# 查詢今日漲停股票,獲取詳細資訊
res = pywencai.get(
query='今日漲停的股票',
cookie='xxx'
)
# 返回DataFrame:包含股票程式碼、名稱、漲停時間、封單金額等
print(res)
import pywencai
# 查詢連續漲停天數大於2天的股票
res = pywencai.get(
query='連續漲停天數大於2天的股票',
cookie='xxx'
)
print(res)
import pywencai
# 查詢ROE大於15%且營收同比增長大於20%的股票
res = pywencai.get(
query='ROE大於15%且營收同比增長率大於20%的股票',
cookie='xxx'
)
print(res)
# 查詢市盈率小於10且市淨率小於1的股票(低估值篩選)
res = pywencai.get(
query='市盈率小於10且市淨率小於1的股票',
cookie='xxx'
)
print(res)
訪問小蔥技能站7w4.net,解鎖更多實用的AI技能外掛。
import pywencai
# 查詢今日MACD金叉的股票
res = pywencai.get(
query='今日MACD金叉的股票',
cookie='xxx'
)
print(res)
# 查詢KDJ超賣訊號的股票
res = pywencai.get(
query='KDJ的J值小於0的股票',
cookie='xxx'
)
print(res)
# 查詢放量突破的股票
res = pywencai.get(
query='今日成交量是5日均量2倍以上且漲幅大於5%的股票',
cookie='xxx'
)
print(res)
import pywencai
# 查詢今日主力資金淨流入前20的股票
res = pywencai.get(
query='今日主力資金淨流入前20的股票',
cookie='xxx'
)
print(res)
# 查詢北向資金持股比例最高的股票
res = pywencai.get(
query='北向資金持股比例最高的前20只股票',
cookie='xxx'
)
print(res)
import pywencai
# 查詢近一年收益率最高的前20只基金
res = pywencai.get(
query='近一年收益率最高的前20只基金',
query_type='fund', # 設定查詢型別為基金
cookie='xxx'
)
print(res)
import pywencai
# 查詢港股市值最大的股票
res = pywencai.get(
query='港股市值最大的前20只股票',
query_type='hkstock', # 設定查詢型別為港股
cookie='xxx'
)
print(res)
import pywencai
# 複雜多條件篩選:低估值+高成長+機構持倉
res = pywencai.get(
query='市盈率小於20且營收同比增長大於30%且機構持倉比例大於10%的股票',
cookie='xxx'
)
print(res)
# 技術面+基本面綜合篩選
res = pywencai.get(
query='今日站上20日均線且市盈率小於30且ROE大於10%的股票',
cookie='xxx'
)
print(res)
import pywencai
# 查詢指定日期的資料
res = pywencai.get(
query='2024年1月2日漲幅前10的股票',
cookie='xxx'
)
print(res)
# 查詢日期範圍內的漲幅
res = pywencai.get(
query='2024年上半年漲幅最大的前20只股票',
cookie='xxx'
)
print(res)
import pywencai
import pandas as pd
import time
cookie = 'your_cookie_here'
# 定義多個篩選策略
strategies = {
"低估值高分紅": "市盈率小於15且股息率大於3%的股票",
"高成長": "營收同比增長大於30%且淨利潤同比增長大於30%的股票",
"技術突破": "今日放量突破20日均線且漲幅大於3%的股票",
"機構關注": "近一個月機構調研次數大於3次的股票",
"北向資金": "北向資金今日淨買入前20的股票",
}
results = {}
for name, query in strategies.items():
try:
res = pywencai.get(query=query, cookie=cookie, no_detail=True)
if res is not None and not res.empty:
results[name] = res
print(f"Strategy [{name}] selected {len(res)} stocks")
else:
print(f"Strategy [{name}] returned no results")
except Exception as e:
print(f"Strategy [{name}] query failed: {e}")
time.sleep(2) # 每次查詢間隔2秒,避免被封禁
# 儲存結果到Excel(每個策略一個工作表)
if results:
with pd.ExcelWriter("選股結果.xlsx") as writer:
for name, df in results.items():
df.to_excel(writer, sheet_name=name, index=False)
print("篩選結果已儲存到 選股結果.xlsx")
| 錯誤 | 原因 | 解決方法 |
|---|---|---|
Cookie expired |
Cookie過期 | 重新登入問財網站獲取新Cookie |
返回None |
查詢無結果或被限流 | 檢查查詢語句,降低呼叫頻率 |
Node.js not found |
未安裝Node.js | 安裝Node.js v16+ |
JSONDecodeError |
服務端返回異常 | 增加retry引數,稍後重試 |
| 返回dict而非DataFrame | 查詢為詳情類 | 設定no_detail=True強制返回DataFrame |
import os
import pywencai
# 方法1:從環境變數讀取Cookie(推薦)
cookie = os.environ.get('WENCAI_COOKIE', '')
# 方法2:從檔案讀取Cookie
def load_cookie(path='~/.wencai_cookie'):
path = os.path.expanduser(path)
if os.path.exists(path):
with open(path) as f:
return f.read().strip()
return ''
# 方法3:封裝查詢函式,統一管理Cookie和錯誤處理
def query(q, **kwargs):
cookie = load_cookie()
try:
return pywencai.get(
query=q, cookie=cookie,
no_detail=True, retry=3, sleep=1,
**kwargs
)
except Exception as e:
print(f"查詢失敗: {e}")
return None
# 使用
df = query('今日漲停的股票')
import pywencai
import time
import datetime
cookie = 'your_cookie_here'
# 監控條件列表
alerts = [
{'名稱': '大盤跳水', '查詢': '上證指數今日跌幅大於2%', '型別': 'zhishu'},
{'名稱': '漲停潮', '查詢': '今日漲停股票數量', '型別': 'stock'},
{'名稱': '北向大額流出', '查詢': '北向資金今日淨賣出大於50億', '型別': 'stock'},
]
def check_alerts():
now = datetime.datetime.now().strftime('%H:%M')
for alert in alerts:
try:
res = pywencai.get(
query=alert['查詢'],
query_type=alert.get('型別', 'stock'),
cookie=cookie, no_detail=True
)
if res is not None and not res.empty:
print(f"[{now}] 告警觸發 [{alert['名稱']}]: {len(res)} 條結果")
except Exception as e:
print(f"[{now}] 查詢失敗 [{alert['名稱']}]: {e}")
time.sleep(2)
# 交易時間內每5分鐘檢查一次
while True:
now = datetime.datetime.now()
if 9 <= now.hour < 15:
check_alerts()
time.sleep(300)
對於 AI Agent,在使用該量化/資料工具時應遵循以下高階策略和最佳實踐,以確保任務的高效完成:
在獲取資料或執行操作後,AI 應當主動檢查返回的結果格式是否符合預期,以及是否存在缺失值(NaN)或空資料。
* 示例策略:在通過 API 獲取資料框(DataFrame)後,使用 if df.empty: 進行校驗;捕獲 Exception 以防網路或介面錯誤導致程序崩潰。
AI 經常需要進行宏觀經濟分析或跨市場對比。應善於將當前介面與其他資料來源或工具組合使用。 * 示例策略:先獲取板塊或指數的宏觀資料,再篩選成分股,最後對具體標的進行深入的財務或技術面分析,形成完整的決策鏈條。
對於交易和策略類任務,AI 可以定期拉取資料並建立監控機制。 * 示例策略:使用迴圈或定時任務檢查特定標的的異動(如漲跌停、放量),並在發現滿足條件的訊號時輸出結構化日誌或觸發預警。
由 大佬量化 維護 — 量化交易教學與策略研發團隊。
微信客服: bossquant1 · Bilibili · 搜尋 大佬量化 — 微信公眾號 / Bilibili / 抖音
這個 Skill 質量較好,文件齊全、示例豐富,查詢功能實用(支援股票、基金、可轉債等多種市場資料),用中文自然語言就能查詢,非常方便。不過它依賴外部 Cookie 才能使用,新手初次配置稍顯麻煩,而且沒有內建測試,穩定性無法保證。建議開發者提供更詳細的新手引導文件。