TradingView-Screener全流程指南:用Python构建专业股票筛选系统
【免费下载链接】TradingView-ScreenerA package that lets you create TradingView screeners in Python项目地址: https://gitcode.com/gh_mirrors/tr/TradingView-Screener
在量化投资领域,快速精准地筛选股票数据是制定有效策略的核心前提。TradingView-Screener作为一款专注于股票数据筛选的Python工具,通过程序化接口让开发者能够轻松访问全球金融市场数据,实现从基础条件筛选到复杂策略构建的全流程量化分析。本文将带你从零开始掌握这款工具的使用方法,解锁高效股票数据筛选的实战技能。
零基础入门:环境搭建与核心概念
5分钟环境部署指南
TradingView-Screener支持两种主流安装方式,满足不同开发场景需求:
# 使用pip快速安装 pip install tradingview-screener # 或通过源码安装 git clone https://gitcode.com/gh_mirrors/tr/TradingView-Screener cd TradingView-Screener poetry install安装完成后,通过简单导入即可开始使用:
from tradingview_screener import Query # 创建基础查询对象 query = Query() # 获取市场数据 total_count, data = query.get_scanner_data() print(f"获取到 {total_count} 条市场数据")核心模块快速认知
该工具的核心功能分布在四个关键模块中:
- 查询构建引擎
src/tradingview_screener/query.py:提供查询创建、条件组合和数据获取的核心功能 - 筛选条件定义
src/tradingview_screener/column.py:定义股票数据列和比较运算逻辑 - 数据模型管理
src/tradingview_screener/models.py:规范数据结构和交互格式 - 辅助功能集
src/tradingview_screener/util.py:提供数据格式化等实用工具函数
核心功能解析:从基础筛选到高级查询
快速筛选:3行代码实现股票初筛 🔍
使用TradingView-Screener进行基础筛选只需简单三步:创建查询对象、设置筛选条件、获取结果数据:
from tradingview_screener import Query from tradingview_screener.column import Column as col # 创建筛选条件:价格>50,成交量>100万 query = Query().select('name', 'close', 'volume').where( col('close') > 50, col('volume') > 1_000_000 ) # 获取并查看结果 _, df = query.get_scanner_data() print(df.head())多条件逻辑组合:构建复杂筛选策略 📊
通过And()和Or()函数可以构建任意复杂度的逻辑条件,实现精准股票筛选:
from tradingview_screener.query import And, Or # 创建多条件组合查询 query = Query().select('name', 'close', 'EMA5', 'EMA20').where2( And( Or( col('type') == 'stock', col('type') == 'fund' ), col('close') > col('EMA20') # 收盘价高于20日均线 ) )市场定位:聚焦目标投资区域
工具支持全球67个国家和地区的市场数据筛选,通过set_markets()方法轻松切换目标市场:
# 筛选亚洲市场科技股 query = ( Query() .select('name', 'close', 'market', 'sector') .set_markets('asia') .where(col('sector') == 'Technology') )实战案例:构建实用量化筛选工具
指数成分股筛选器
创建一个纳斯达克100指数成分股筛选工具,按市值排序并导出结果:
# 筛选纳斯达克100成分股并按市值排序 nasdaq_query = ( Query() .select('name', 'close', 'market_cap_basic', 'sector') .set_index('SYML:NASDAQ;NDX') # 纳斯达克100指数 .order_by('market_cap_basic', ascending=False) ) _, df = nasdaq_query.get_scanner_data() # 保存结果到CSV df.to_csv('nasdaq_100_components.csv', index=False)均值回归策略信号生成
基于价格与均线的偏离度生成交易信号,辅助投资决策:
def generate_mean_reversion_signals(data): """生成均值回归策略信号""" data['MA20'] = data['close'].rolling(20).mean() data['deviation'] = (data['close'] - data['MA20']) / data['MA20'] * 100 # 低于均线2%买入,高于均线2%卖出 data['signal'] = 0 data.loc[data['deviation'] < -2, 'signal'] = 1 data.loc[data['deviation'] > 2, 'signal'] = -1 return data # 获取股票数据并生成信号 _, df = Query().select('close').set_tickers('NASDAQ:AAPL').get_scanner_data() signals = generate_mean_reversion_signals(df) print(signals[['close', 'MA20', 'signal']].tail(10))效率提升技巧:高级应用与性能优化
分页查询:处理大规模数据集
当筛选结果较大时,使用分页查询可以显著提升性能并避免请求限制:
def fetch_all_data(query, page_size=100): """分页获取所有数据""" all_data = [] offset = 0 while True: _, df = query.offset(offset).limit(page_size).get_scanner_data() if len(df) == 0: break all_data.append(df) offset += page_size return pd.concat(all_data, ignore_index=True)多线程并行查询:加速多市场数据获取
利用多线程并行获取不同市场数据,大幅减少总体等待时间:
import concurrent.futures def fetch_market(market): """获取单个市场数据""" return Query().select('name', 'close').set_markets(market).limit(50).get_scanner_data()[1] # 并行获取全球主要市场数据 markets = ['america', 'europe', 'asia', 'japan'] with concurrent.futures.ThreadPoolExecutor() as executor: results = list(executor.map(fetch_market, markets))场景拓展:从数据筛选到策略实现
TradingView-Screener不仅是数据筛选工具,更是量化策略开发的基础平台。通过与其他量化工具集成,可以构建完整的投资决策系统:
- 技术指标扩展:结合TA-Lib库计算更多专业技术指标
- 机器学习集成:将筛选数据输入ML模型进行股价预测
- 实时监控系统:定期执行筛选并发送异常信号通知
- 回测框架构建:基于历史数据验证策略有效性
通过本文介绍的方法,你已经掌握了使用TradingView-Screener进行股票数据筛选的核心技能。无论是简单的条件筛选还是复杂的策略构建,这款工具都能为你提供高效可靠的数据支持,帮助你在量化投资的道路上稳步前行。
【免费下载链接】TradingView-ScreenerA package that lets you create TradingView screeners in Python项目地址: https://gitcode.com/gh_mirrors/tr/TradingView-Screener
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考