米筐社区全方位数据解读

米筐社区全方位数据解读

社区链接:https://www.ricequant.com/community/topic/3969/?utm_source=优快云

近期我们的米筐首席临时工做了一件非常好玩的事情,通过自己编写爬虫爬取了Ricequant线上社区的数据并进行了一系列的分析,大家也可以通过本篇文章初步了解python爬虫的原理哦。

原文

 

最近看完了《利用 Python 进行数据分析》,苦于屠龙大技无处施展,于是瞄上了米筐社区:开放的社区数据,都好好地摆在那。从数据的爬取储存、清洗整理,到分析汇总、可视化,最终写成本文,整整搭上了三天时间(别问我为啥效率这么低,后面会讲道)。

 

爬取储存

 

作为一个爬虫弱渣,还好米筐社区没有反爬机制(但容我吐槽一句,社区网页源码可真不是那么容易能理得清的),靠着 requests 和 bs4 的文档,跌跌撞撞地爬取了所有数据,包括所有主题帖的标题、地址、发帖时间、再次编辑时间、跟帖量、浏览量、点赞量、是否带有回测分享、是否带有研究分享,以及分享的克隆次数。

 

先说一说思路。首先进入社区主页,一共 170+ 页的所有信息都在网页源码里。用 requests 请求后再用 bs4 解析(必要的时候可以暴力一点,自己目测解析),基本就能拿到大部分数据了。而发帖时间和再次编辑时间,需要进入每一个主题帖,再在其中找到所需要的数据。

r = requests.get(url + str(num)) # 解析
soup = BeautifulSoup(r.text, 'html.parser')
body = soup.body # 帖子、浏览、赞,每 3 个一组

human_readable_number = body.find_all('span', attrs={
   
   'class': 'human-readable-number'})
(Ricequant)是一个专业的量化交易平台,Python 在平台中有着广泛的应用,以下从使用和开发案例两方面进行介绍。 ### 使用方法 - **环境搭建**:在平台使用 Python,通常无需复杂的本地环境配置,可直接在提供的在线开发环境中编写和运行 Python 代码。该环境集成了常见的 Python 库,如 Pandas、Numpy 等,方便进行数据处理和分析。 - **策略编写**:使用 Python 在平台编写量化交易策略时,需要遵循一定的结构。一般要定义初始化函数`init()`用于初始化策略参数和设置,以及处理市场数据和执行交易操作的`handle_bar()`函数。例如: ```python def init(context): # 初始化函数,设定要操作的股票 context.s1 = "000001.XSHE" # 设置初始资金 context.account = context.portfolio.cash def handle_bar(context, bar_dict): # 获取当前股票的历史数据 hist = bar_dict[context.s1].history_bars(10, '1d', 'close') # 简单示例:如果当前价格高于前一日价格则买入 if bar_dict[context.s1].close > hist[-2]: order_percent(context.s1, 1) ``` - **数据获取**:平台提供了丰富的 API 用于获取金融市场数据,使用 Python 调用这些 API 可以获取股票、期货等多种金融产品的历史数据和实时数据。例如,使用`history_bars()`函数获取指定股票的历史 K 线数据: ```python data = history_bars('000001.XSHE', 10, '1d', ['open', 'high', 'low', 'close']) ``` ### 开发案例 - **简单均线策略**:通过计算股票的短期均线和长期均线,当短期均线向上穿过长期均线时买入,反之卖出。以下是一个简单的 Python 代码示例: ```python def init(context): context.s1 = "000001.XSHE" context.short_window = 5 context.long_window = 20 def handle_bar(context, bar_dict): prices = history_bars(context.s1, context.long_window, '1d', 'close') short_ma = prices[-context.short_window:].mean() long_ma = prices.mean() if short_ma > long_ma: order_percent(context.s1, 1) elif short_ma < long_ma: order_target_percent(context.s1, 0) ``` - **多因子选股策略**:结合多个因子(如市盈率、市净率、换手率等)对股票进行打分,选择得分高的股票进行投资。在平台使用 Python 可以方便地实现多因子选股策略,以下是一个简化的示例: ```python def init(context): context.factors = ['pe_ratio', 'pb_ratio', 'turnover_ratio'] context.stock_num = 10 def handle_bar(context, bar_dict): # 获取所有股票列表 all_stocks = get_all_securities('stock', context.now).index factor_data = get_factors(context.factors, all_stocks, context.now) scores = factor_data.sum(axis=1) selected_stocks = scores.nlargest(context.stock_num).index for stock in context.portfolio.positions: if stock not in selected_stocks: order_target_percent(stock, 0) for stock in selected_stocks: order_percent(stock, 1 / context.stock_num) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值