作者:老余捞鱼
原创不易,转载请标明出处及原作者。
写在前面的话:
本文主要介绍如何使用 Python 和 EODHD Screener API 开发自定义股票筛选器,包括基本筛选器、多重筛选器和基于信号的筛选器。而自定义筛选器的灵活性和定制性是大部分交易平台难以提供的。
股票筛选器是同时整理和筛选数千种股票的宝贵工具。许多交易员和投资者都依赖股票筛选器来根据特定的搜索标准有效地识别股票。虽然 TradingView 等平台提供了令人印象深刻的筛选器,但通过编码创建自定义筛选器提供了无与伦比的灵活性和定制性。
不过对大多人来说,从头开始编写筛选器代码是一件令人生畏的事情,因为这涉及到提取和编译各种类型的基本数据,并将其与筛选和排序功能整合在一起。这就是 EODHD 筛选器应用程序接口的价值所在。我在我的不少文章中都介绍过 EODHD Screener API ,大家可以用关键词 EODHD在我的网站、公众号和我的CSDN频道上搜索都可以找到。
在本文中,我们将探讨 EODHD 提供的筛选器 API,讨论谁可以从该 API 中受益以及它所包含的功能。然后,我将手把手带大家使用 Python 创建几个股票筛选器的实际应用。
一、EODHD 筛选器 API
从零开始构建股票筛选器通常需要从多个来源收集和综合数据,这可能会耗费大量时间。然而,EODHD 的筛选器 API 简化了这一过程,允许用户根据市值、交易所、行业、股息率等定义参数快速筛选公司。该 API 在快速提取和组织数据方面的效率使其与众不同。
现在,这个 API 到底是为谁准备的?与专门的 API(如新闻情绪 API 或宏观经济数据 API)不同, Screener API 有着广泛的应用。例如,交易员和投资者可以用它来构建符合自身需求的定制股票筛选器,研究人员可以用它来根据特定标准分析股票,其应用范围远不止这些例子。
EODHD Screener API 地址:Global Stock Market Screener API | Free plan
这个 API 到底能提供什么?从本质上讲,它提供了一个数据框架,其中包括股票列表以及每只股票的基本面数据,所有这些都基于用户定义的搜索标准。API 为设置这些标准提供了广泛的自定义选项,大大简化了筛选过程。
在对筛选器 API 的功能有了一定了解后,让我们进入文章下个部分--使用 Python 利用该 API 创建各种股票筛选器。
二、导入必要的库
构建股票筛选器的第一步是将必要的软件包导入 Python 环境,这是一项至关重要的强制性操作。
在本文中,我们只需要两个软件包:用于数据提取的 EODHD Python 库 "eodhd "和用于数据操作和处理的 Pandas。以下是将这些软件包导入 Python 脚本的方法:
import pandas as pd
from eodhd import APIClient
如果尚未安装这些软件包,请在终端中使用 pip 命令进行安装。
三、激活 API 密钥
利用股票筛选器 API 创建自定义筛选器的第二步是激活您的 API 密钥。必须在软件包中注册您的 EODHD API 密钥,才能使用其功能。
如果您还没有 EODHD API 密钥,请先访问其网站,完成注册以创建账户,或直接使用谷歌账户登录,然后导航到 "设置 "页面,找到您的秘密 API 密钥。对该密钥保密至关重要。
以下是激活 API 密钥的方法:
# API KEY ACTIVATION
api_key = '<YOUR API KEY>'
client = APIClient(api_key)
这段代码简单明了:第一行在变量 `api_key` 中存储 EODHD API 密钥,第二行使用 eodhd 软件包中的 `APIClient` 类激活 API 密钥,并在变量 `client` 中存储初始化的客户端对象。
请记住将"<YOUR API KEY>"替换为您实际的 EODHD API 密钥。为提高安全性,请考虑使用环境变量或其他安全方法存储 API 密钥。
四、创建基本股票筛选器
接下来是用一个过滤器建立简单的股票筛选器。我们将创建一个筛选器,只包含在美国上市的股票,并按市值降序排序。下面是实现这一标准的代码:
# SINGLE FILTER SCREENER
mktcap_screener_json = client.stock_market_screener(sort = 'market_capitalization.desc', filters = '[["exchange","=","us"]]', limit = 10, offset = 0)
mktcap_screener_df = pd.DataFrame(mktcap_screener_json['data']).drop(['exchange','currency_symbol','last_day_data_date'], axis = 1)
mktcap_screener_df
在上面的代码中,我们使用 eodhd 库中的 "stock_market_screener "函数,根据指定条件获取筛选器数据。
该功能包括几个关键参数:
- `sort`: - 决定结果排序的字段。
- `filters`: - 定义股票筛选器的具体标准。
- `signals`: - 本文稍后将探讨的另一个重要参数。
此外,"limit "和 "offset "参数分别用于控制显示结果的数量和数据检索的起点。
下面是上述代码的输出结果:
如前所述,筛选器提供了大量基本面数据,这对交易者和投资者选择股票非常有价值。这些数据为用户做出明智决策提供了必要的见解,从而增强了他们的投资策略。
五、使用多重过滤创建股票筛选器
让我们通过创建具有多重筛选功能的更高级股票筛选器来提升我们的方法。虽然我们之前的筛选器提供了基本的排序功能,但它缺乏更深层次的投资见解。这一次,我们将设计一个筛选器,使用更细致的标准来突出显示特别有利可图的股票。
我们将构建一个筛选器,在特定条件下,根据每股收益(EPS)确定最赚钱的股票:
1. 市值必须超过 1000 亿美元。
2. 公司必须在技术领域开展业务。
下面介绍如何设置这个股票筛选器:
# MULTIPLE FILTERS SCREENER
mf_screener_json = client.stock_market_screener(sort = 'earnings_share.desc', filters = '[["sector","=","Technology"],["market_capitalization",">",100000000000]]', limit = 10, offset = 0)
mf_screener_df = pd.DataFrame(mf_screener_json['data']).drop(['currency_symbol','last_day_data_date'], axis = 1)
mf_screener_df
该代码与我们之前的示例类似,但调整了 `sort` 和 `filters` 参数,以符合我们指定的搜索条件。
该代码的输出结果将显示按每股收益排序的 10 大最赚钱股票,它们都属于科技行业,市值至少达到 1000 亿美元。该筛选器不仅完善了选股过程,还能为高价值、高性能股票的潜在投资机会提供有价值的见解。
六、创建基于信号过滤的股票筛选器
现在让我们来探讨一下 `stock_market_screener` 函数中可用的 `signals` 参数。该参数允许根据特定的交易信号进行高级筛选。例如,如果您想识别在过去 200 天内创下新低且账面价值为负值的股票,可以使用 `signals` 参数指定这些条件。
该功能对于创建自定义筛选器特别有用,因为创建自定义筛选器需要更复杂的标准,而不是仅仅通过 "排序 "和 "筛选 "参数就能实现的。让我们创建一个股票筛选器,用于识别达到 200 天新低的美国上市股票。下面是设置方法:
newlow_screener_json = client.stock_market_screener(filters = '[["exchange","=","us"]]', signals = '200d_new_lo', limit = 10, offset = 0)
newlow_screener_df = pd.DataFrame(newlow_screener_json['data']).drop(['exchange','currency_symbol','last_day_data_date'], axis = 1)
newlow_screener_df
在这段代码中,除了常用的过滤器外,我们还加入了 "signals "参数,以根据指定的交易信号("200d_new_lo "表示新的 200 天低点)进行过滤。
输出结果将显示近期创下 200 天新低的美国上市证券列表。输出结果如下:
让我们探讨一下 ‘signals’ 参数的另一种应用。本例演示了如何创建一个股票筛选器,用于识别被华尔街认为估值过高的金融服务行业股票:
wshigh_screener_json = client.stock_market_screener(filters = '[["sector","=","Financial Services"]]', signals = 'wallstreet_hi', limit = 10, offset = 0)
wshigh_screener_df = pd.DataFrame(wshigh_screener_json['data']).drop(['currency_symbol','last_day_data_date'], axis = 1)
wshigh_screener_df
所提供的代码与前面的示例结构相同,唯一的区别是 ‘signals’ 参数略有改动。下面是根据提供的代码生成的筛选器:
除了 "200d_new_lo "和 "wallstreet_hi "信号外, ‘signals’ 参数还支持其他几个选项,以进一步完善股票筛选:
- “200d_new_hi”:筛选在过去 200 天内创出新高的股票,识别可能处于上升轨道的股票。
- “bookvalue_neg” and “bookvalue_pos”:这些信号根据股票的账面价值过滤股票。"bookvalue_neg "可识别账面价值为负值的股票,这些股票通常被认为财务不稳定或有风险。"bookvalue_pos "筛选出账面价值为正的股票,通常被视为财务健康的股票。
- “wallstreet_lo”:筛选目前价格低于华尔街分析师预测价格的股票,这可能表明价值被低估的股票对寻找便宜货的投资者具有吸引力。
‘signals’ 参数中的这些附加字段使筛选股票的标准更有针对性和具体性,从而可以根据各种财务指标和分析师的预期采取细致入微的选股方法。
七、观点回顾
在本文中,我们深入研究了 EODHD 的股票筛选器 API。我们首先了解了筛选器应用程序接口(Screener API)的内容,然后进入实际编程环节,使用 Python 制作了多个股票筛选器。
本文旨在演示筛选器 API 的一些应用。然而,其功能远远超出了本文所涵盖的范围。鼓励您多尝试使用 API 的各种参数和支持字段,以发现它所提供的无数可能性。
- EODHD Screener API 能够提供无与伦比的灵活性和定制性,使得开发自定义股票筛选器成为可能。
- 通过编码创建自定义筛选器可以简化从多个来源整合数据的过程,提高数据获取和处理的效率。
- 使用 Python 和 EODHD Python Library 可以轻松地实现股票数据的提取和筛选。
- 本文通过实际的 Python 代码示例,展示了如何根据不同的标准和信号构建多种类型的股票筛选器,相信跟着学很快您也能做到。
- 我再次强调自定义筛选器的重要性,它可以帮助交易员和投资者根据自身的需求和策略进行股票选择。
感谢您阅读到最后,希望本文能给您带来新的收获,非常感谢。如果对文中的内容有任何疑问,请给我留言,必复。
本文内容仅仅是技术探讨和学习,并不构成任何投资建议。
转发请注明原作者和出处。