通过问财python库,可以输入中文就能获取AI选股结果,而不需要写很多代码来进行股票选取,如上图就是输入中文”均线多头排列的股票”获取的结果。本文主要介绍问财python库的选股功能和使用步骤。
什么是问财python库
-
同花顺i问财是同花顺旗下的AI投顾平台,专注于使用AI技术改进财经数据的提取、处理、分析、沉淀以及展现, 用户不登陆就可以在i问财使用中文进行选股并进行可视化分析。
-
问财python库是由GraySilver开源的i问财python工具包,通过使用wencai lib库可以获取同花顺i问财的搜索结果和回测等数据。经过代码分析和测试发现,wencai python工具包除了选股功能外, 其提供的获取回测分析、获取策略、获取事件评测等功能都已无法使用。原因是wencai python包最近一次github更新是在2021年9月11日,而之后同花顺i问财则更新很多,之前的很多不需要登录就能实现的功能目前需要登录后才能使用
问财python库使用步骤
-
安装weicai python库
pip install wencai
pip会自动安装requests、beautifulsoup4、PyExecJS等python依赖包
2. 使用weicai python库进行查询
以查询query=”均线多头排列的股票”进行说明,代码如下:
import wencai as wc
wc.set_variable(cn_col=True)
from wencai.core.session import Session
Session.headers.update({'Host': 'www.iwencai.com'})
wc.search(query='均线多头排列的股票')
注意,一定要加上Session.headers.update({'Host': 'www.iwencai.com'}) 这一句。如果按照wencai lib库官方文档直接进行查询,会报错TypeError: list indices must be integers or slices, not str。 因为官方代码不包括Session.headers.update({'Host': 'www.iwencai.com'}) 这一句,具体原因是i问财服务器做了验证升级,需要设置http请求header。
均线多头排列(条件说明) 股票简称 最新价 技术形态 最新涨跌幅 买入信号inter 股票代码
0 2023年06月09日均线多头排列 中国国贸 19.44 缩量||价跌量缩||回调缩量 -1.220 周线cci买入信号||周线kdj金叉 600007.SH
1 2023年06月09日均线多头排列 皖通高速 11.08 放量||价跌量缩||阴线 -1.424 周线skdj金叉||周线rsi金叉||周线cci买入信号 600012.SH
2 2023年06月09日均线多头排列 中体产业 11.45 阳线||缩量||价跌量缩 -0.174 mtm金叉||周线skdj金叉 600158.SH
....
46 2023年06月09日均线多头排列 新澳股份 7.14 阳线||放量||价升量缩 0.140 月线boll突破上轨||周线rsi金叉||周线cci买入信号 603889.SH
47 2023年06月09日均线多头排列 建发合诚 12.80 放量||价跌量缩||阴线 -1.311 月线dma金叉||周线mtm金叉||周线cr金叉 603909.SH
48 2023年06月09日均线多头排列 金桥信息 34.88 强中选强||放量||阴线 -6.962 NaN 603918.SH
49 2023年06月09日均线多头排列 力鼎光电 17.20 放量||阴线||价跌量升 -3.749 bias买入信号 605118.SH
其他示例:
-
可以根据人气排名选股:
wc.search("人气股票排名100")
个股热度排名 股票简称 最新价 最新涨跌幅 个股热度 股票代码
0 1 拓维信息 17.63 9.981 129391.0 002261.SZ
1 2 鸿博股份 38.00 -4.857 70730.0 002229.SZ
2 3 上海物贸 14.76 9.985 60386.0 600822.SH
...
46 47 中科曙光 52.04 4.919 20711.0 603019.SH
47 48 飞龙股份 11.57 9.981 20410.5 002536.SZ
48 49 吉宏股份 23.16 10.024 20322.5 002803.SZ
49 50 中际旭创 115.20 7.946 20214.5 300308.SZ
-
可以根据形态选股:
wc.search("可转债概念 正股金叉")
所属概念 未清偿可转债代码 未清偿可转债转股价格 未清偿可转债简称 a股市值(不含限售股) 最新价 最新涨跌幅 买入信号inter 股票代码 macd金叉(条件说明) 未清偿可转债总量 股票简称 技术形态 所属概念数量
0 煤化工;影视娱乐;文化传媒;通用航空;互联网金融;芯片概念;富时罗素概念;富时罗素概念股;标... 128037 3.10 岩土转债 4.517167e+09 2.84 4.412 行情收盘价上穿5日||skdj金叉||boll突破中轨 002542.SZ 2023年06月09日macd金叉 6019009 中化岩土 价升量涨||阳线||放量 22
1 保健品;沪股通;医药电商;融资融券;转融券标的;富时罗素概念;富时罗素概念股;MSCI概念;... 113605 47.11 大参转债 3.052566e+10 26.84 3.790 mtm金叉||行情收盘价上穿5日||cr金叉 603233.SH 2023年06月09日macd金叉 14047400 大参林 价升量涨||阳线||放量 9
2 一带一路;稀缺资源;铁矿石;特斯拉;锂电原料;锂矿;锂电池;深股通;金属铜;MSCI概念;融... 128111 10.63 中矿转债 3.514415e+10 57.75 3.755 boll突破中轨||roc买入信号||cci买入信号 002738.SZ 2023年06月09日macd金叉 1099547 中矿资源 价升量涨||阳线||放量 12
...
18 北部湾自贸区;深股通;一带一路;富时罗素概念;富时罗素概念股;东盟自贸区;标普道琼斯A股;统... 127039 8.00 北港转债 1.122096e+10 7.96 -0.748 macd金叉||dmi金叉||月线roc买入信号 000582.SZ 2023年06月09日macd金叉 17630564 北部湾港 缩量||价跌量缩||回调缩量 16
19 电子商务;广告营销;文化传媒;新零售;网红经济;C2M概念;工业机器人;机器人概念;抖音概念 113589 12.29 天创转债 2.001966e+09 4.77 -2.254 macd金叉||周线boll突破中轨||周线rsi金叉 603608.SH 2023年06月09日macd金叉 5995000 天创时尚 放量||价跌量缩||阴线 9
3. 使用pandas等工具进一步操作选股信息
使用问财python库选出的股票一般数量较多,是初步的选取结果,可以根据自己的策略使用pandas和sort等工具进一步精选出符合要求的数量较少的股票
进一步优化
-
想获取100条结果,该怎么操作
从上文可以看出,问财python库默认最多获取50条结果,如果希望获取更多返回结果,那就需要修改wencai python库源代码或者新建继承类实现修改代码了。 下面是新建继承类来实现的方式,但最多只能获取100条结果,代码如下:
from wencai.core.event import *
from wencai.core.crawler import *
from wencai.core.session import Session
Session.headers.update({'Host': 'www.iwencai.com'})
Session.headers.update({'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'})
class MyWencai(Wencai):
def __init__(self, cn_col=False, proxies=None, verify=False):
self.cookies = WencaiCookie()
self.cn_col = cn_col
self.session = Session(proxies=proxies, verify=verify)
def search(self, query_string, page):
payload = {
"question": query_string,
"page": page,
"perpage": 100,
"log_info": '{"input_type": "click"}',
"source": "Ths_iwencai_Xuangu",
"version": 2.0,
"secondary_intent": "",
"query_area": "",
"block_list": "",
"add_info": '{"urp": {"scene": 1, "company": 1, "business": 1}, "contentType": "json", "searchInfo": true}'
}
r = self.session.post_result(url=WENCAI_CRAWLER_URL['search'],
data=payload, force_cookies=True)
# print(r.json()['data'])
result = r.json()['data']['answer'][0]['txt'][0]['content']['components'][0]['data']['datas']
def _re_str(x: str):
_re = re.findall('(.*):前复权', x)
if len(_re) >= 1:
x = _re[-1]
check_date = re.search(r"(\d{4}\d{1,2}\d{1,2})",x)
if check_date is not None:
return x.replace('[{}]'.format(check_date.group()), '')
else:
return x
data = pd.DataFrame().from_dict(result)
if not data.empty:
columns = {i: _re_str(i) for i in data.columns}
data = data.rename(columns=columns)
for col in ['market_code', 'code', '关键词资讯', '涨跌幅']:
if col in data.columns:
del data[col]
return data
def search(query, page=1):
return MyWencai(proxies=globals()['global_proxies'], verify=globals()['verify']).search(query_string=query, page=page)
小结&交流
完整文章查看,点击使用python进行问财AI智能选股
关注公众号:诸葛说talk,获取更多相关内容
写文章不易,觉得本文对你有帮助的话,帮忙点赞转发赞赏,让笔者有坚持写好文章的动力。
参考
-
同花顺问财