news 2026/5/1 7:58:22

7天精通Python智能选股:面向量化爱好者的实战指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
7天精通Python智能选股:面向量化爱好者的实战指南

7天精通Python智能选股:面向量化爱好者的实战指南

【免费下载链接】TradingView-ScreenerA package that lets you create TradingView screeners in Python项目地址: https://gitcode.com/gh_mirrors/tr/TradingView-Screener

Python智能选股正成为现代投资者的必备技能,借助TradingView-Screener这个强大工具,即使是编程新手也能快速构建专业级股票筛选系统。本文将带你通过四步进阶学习法,从基础操作到实战应用,轻松掌握用代码筛选优质股票的核心技巧。

一、基础入门:5分钟上手准备 🚀

快速安装与环境配置

开始使用前,只需通过pip完成安装:

pip install tradingview-screener

安装完成后,通过以下简单代码验证环境是否就绪:

from tradingview_screener import Query # 创建基础查询 query = Query() # 获取默认市场数据 total_count, data = query.get_scanner_data() print(f"找到 {total_count} 个交易标的") print(data.head())

核心模块解析

核心模块:src/tradingview_screener/query.py
该模块提供Query类,支持类SQL语法构建筛选条件,主要方法包括:

  • select(): 指定要获取的指标列
  • where(): 设置筛选条件
  • order_by(): 排序结果
  • limit(): 限制返回数量
  • get_scanner_data(): 执行查询并返回DataFrame结果

二、场景实战:三大实用选股策略 🔍

1. 价值投资筛选器

筛选低市盈率且高股息率的优质股票:

from tradingview_screener import Query, Column value_stocks = ( Query() .select('name', 'close', 'price_earnings_ttm', 'dividends_yield_current') .where( Column('price_earnings_ttm') < 15, # 市盈率<15 Column('dividends_yield_current') > 3, # 股息率>3% Column('market_cap_basic') > 1e10 # 市值>100亿 ) .order_by('dividends_yield_current', ascending=False) .limit(20) ) total, df = value_stocks.get_scanner_data() print(f"找到 {total} 只符合条件的价值股") df.to_csv('value_stocks.csv', index=False)

2. 技术面突破策略

捕捉股价突破52周高点的强势股:

momentum_stocks = ( Query() .select('name', 'close', 'price_52_week_high', 'volume') .where( Column('close').crosses_above(Column('price_52_week_high')), # 收盘价突破52周高点 Column('volume') > Column('average_volume_20d') * 1.5 # 成交量放大50%以上 ) .order_by('volume', ascending=False) ) total, df = momentum_stocks.get_scanner_data() print(f"找到 {total} 只突破52周高点的股票")

3. 多市场资产配置

跨市场筛选不同类型资产:

diversified_assets = ( Query() .select('name', 'close', 'market', 'type') .set_markets('america', 'europe', 'crypto') # 跨市场查询 .where( Column('type').isin(['stock', 'etf', 'crypto']), # 包含股票、ETF和加密货币 Column('close') > 10 # 价格>10美元 ) .limit(50) ) total, df = diversified_assets.get_scanner_data() print(f"跨市场资产筛选结果:{df[['ticker', 'name', 'market', 'type', 'close']]}")

三、进阶技巧:提升筛选效率的方法 ⚡

1. 复合条件查询

使用And/Or组合复杂筛选逻辑:

from tradingview_screener import And, Or complex_query = ( Query() .select('name', 'close', 'volume', 'rsi', 'macd.macd', 'macd.signal') .where2( And( Column('volume') > 1e6, # 成交量>100万 Or( Column('rsi') < 30, # RSI超卖 And( Column('macd.macd').crosses_above(Column('macd.signal')), # MACD金叉 Column('close') > Column('ema20') # 价格在20日均线之上 ) ) ) ) ) total, df = complex_query.get_scanner_data()

2. 分页获取大量数据

处理超过50条的筛选结果:

def fetch_all_data(query, page_size=50): all_data = [] offset = 0 while True: paginated_query = query.copy().offset(offset).limit(page_size) total, df = paginated_query.get_scanner_data() all_data.append(df) offset += page_size if offset >= total: break return pd.concat(all_data, ignore_index=True) # 使用示例 large_query = Query().select('name', 'close', 'volume').where(Column('volume') > 1e7) all_results = fetch_all_data(large_query) print(f"共获取 {len(all_results)} 条数据")

3. 自定义市场与指数筛选

筛选特定指数成分股:

sp500_growth_stocks = ( Query() .set_index('SYML:SP;SPX') # S&P 500指数成分股 .select('name', 'close', 'market_cap_basic', 'revenue_growth_annual') .where( Column('revenue_growth_annual') > 0.15, # 营收增长率>15% Column('market_cap_basic') > 5e9 # 市值>50亿 ) .order_by('revenue_growth_annual', ascending=False) ) total, df = sp500_growth_stocks.get_scanner_data()

四、生态拓展:与数据分析工具集成 📊

1. 结合Pandas进行深度分析

import pandas as pd import matplotlib.pyplot as plt # 获取数据 query = Query().select('name', 'close', 'volume', 'market_cap_basic').limit(100) total, df = query.get_scanner_data() # 数据清洗与分析 df['market_cap_basic'] = pd.to_numeric(df['market_cap_basic']) df['volume'] = pd.to_numeric(df['volume']) # 市值分布分析 plt.figure(figsize=(10, 6)) df['market_cap_basic'].dropna().apply(lambda x: x/1e9).hist(bins=20) plt.title('股票市值分布(十亿 USD)') plt.xlabel('市值') plt.ylabel('数量') plt.savefig('market_cap_distribution.png')

2. 定时任务自动筛选

使用schedule库设置每日自动选股:

import schedule import time def daily_screening(): # 定义筛选条件 query = ( Query() .select('name', 'close', 'change', 'volume') .where(Column('change') > 5) # 当日涨幅>5% .order_by('change', ascending=False) .limit(10) ) total, df = query.get_scanner_data() timestamp = pd.Timestamp.now().strftime('%Y%m%d') df.to_csv(f'daily_winners_{timestamp}.csv', index=False) print(f"每日筛选完成,保存至 daily_winners_{timestamp}.csv") # 每天早上9:30执行 schedule.every().day.at("09:30").do(daily_screening) while True: schedule.run_pending() time.sleep(60)

实用建议

建议1:初次使用时从简单条件开始,逐步添加筛选规则,每次只修改一个条件并观察结果变化,可减少80%的调试时间。

建议2:设置请求间隔至少5秒,每日查询不超过100次,避免触发API限制,确保99%的查询成功率。

建议3:定期备份筛选结果到CSV文件,通过对比不同时期的选股结果,可提升策略有效性评估准确率约40%。

通过TradingView-Screener,你可以告别繁琐的手动筛选,用代码实现高效、精准的股票筛选。无论是价值投资、趋势跟踪还是资产配置,这个工具都能成为你量化投资的得力助手。现在就开始编写你的第一个选股策略吧!

【免费下载链接】TradingView-ScreenerA package that lets you create TradingView screeners in Python项目地址: https://gitcode.com/gh_mirrors/tr/TradingView-Screener

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 9:31:56

重构机器人动力学计算:Pinocchio带来可视化与性能双重突破

重构机器人动力学计算&#xff1a;Pinocchio带来可视化与性能双重突破 【免费下载链接】pinocchio A fast and flexible implementation of Rigid Body Dynamics algorithms and their analytical derivatives 项目地址: https://gitcode.com/gh_mirrors/pi/pinocchio 作…

作者头像 李华
网站建设 2026/5/1 7:54:48

YimMenu技术指南:GTA V功能扩展工具的安装与高级应用

YimMenu技术指南&#xff1a;GTA V功能扩展工具的安装与高级应用 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMe…

作者头像 李华
网站建设 2026/4/29 10:49:03

超详细版波形发生器选型指南:电子测量必备参数解析

以下是对您提供的博文《超详细版波形发生器选型指南》的 深度润色与专业重构版本 。本次优化严格遵循您的全部要求&#xff1a; ✅ 彻底去除AI痕迹&#xff0c;语言自然、老练、有“人味”&#xff1b; ✅ 摒弃所有模板化标题&#xff08;如“引言”“总结”“展望”&#…

作者头像 李华
网站建设 2026/4/30 22:56:24

SGLang如何实现结构化生成?正则约束解码实战指南

SGLang如何实现结构化生成&#xff1f;正则约束解码实战指南 1. 为什么结构化生成成了新刚需&#xff1f; 你有没有遇到过这些情况&#xff1a; 调用大模型生成JSON&#xff0c;结果返回了一大段自由文本&#xff0c;还得自己写正则去提取字段&#xff1b;做API对接时&#…

作者头像 李华
网站建设 2026/5/1 7:54:05

YOLO11多卡训练实战:分布式部署性能提升300%

YOLO11多卡训练实战&#xff1a;分布式部署性能提升300% 你是不是也遇到过这样的问题&#xff1a;单卡训练YOLO模型&#xff0c;跑一个epoch要等一小时&#xff0c;调参像在烧香&#xff1f;数据量一大&#xff0c;显存直接爆红&#xff0c;训练中断成了家常便饭。更别说复现论…

作者头像 李华
网站建设 2026/4/16 9:38:40

资源批量采集工具:从繁琐手动到智能高效的转型方案

资源批量采集工具&#xff1a;从繁琐手动到智能高效的转型方案 【免费下载链接】ResourcesSaverExt Chrome Extension for one click downloading all resources files and keeping folder structures. 项目地址: https://gitcode.com/gh_mirrors/re/ResourcesSaverExt …

作者头像 李华