核心内容摘要
轻量级AI模型Granite-4.0-H-350M实战:Ollama部署+多场景应用测试
3大场景解锁Python量化选股新姿势TradingView-Screener零门槛实战指南【免费下载链接】TradingView-ScreenerA package that lets you create TradingView screeners in Python项目地址: https://gitcode.com/gh_mirrors/tr/TradingView-ScreenerPython选股工具TradingView-Screener是一款让量化分析效率倍增的Python数据包通过编程方式即可快速筛选和分析全球股票市场数据。
无论你是量化交易爱好者还是Python初学者都能借助这个工具构建专业的股票筛选系统大幅提升投资决策效率。
零基础安装与环境配置极速安装指南通过pip命令即可完成安装无需复杂配置pip install tradingview-screener安装完成后即可使用核心模块构建筛选策略。
项目核心代码位于src/tradingview_screener/目录其中query.py提供SQL-like查询接口支持筛选、排序和分页column.py定义市场数据列及比较操作models.py数据模型定义基础架构解析TradingView-Screener采用模块化设计主要包含三大功能层数据请求层通过TradingView API获取市场数据查询构建层提供链式调用接口构建筛选条件数据处理层将原始数据转换为Pandas DataFrame进行分析核心功能与基础应用快速筛选器构建技巧使用Query类创建基础筛选器以下代码筛选市值10亿到100亿之间、成交量大于500万的股票from tradingview_screener import Query, Column basic_query ( Query() .select(name, close, volume, market_cap_basic) .where( Column(market_cap_basic).between(1_000_000_000, 10_000_000_
, Column(volume) 5_000_000 ) .order_by(volume, ascendingFalse) .limit(
) total_count, results_df basic_query.get_scanner_data() print(f找到{total_count}个符合条件的股票) print(results_df.head())多市场数据获取方法通过set_markets方法可同时筛选多个市场的股票支持全球67个国家及多种金融工具# 同时筛选美国、香港和瑞士市场 multi_market_query ( Query() .select(ticker, name, close, market, country) .set_markets(america, hongkong, switzerland) .where(Column(close)
.limit(
)进阶技巧与性能优化复杂条件组合策略使用And/Or函数构建多条件逻辑组合实现精准筛选from tradingview_screener import And, Or advanced_query ( Query() .select(name, close, RSI, MACD.macd, MACD.signal) .where2( And( Column(RSI).between(30,
, Or( Column(MACD.macd) Column(MACD.signal), Column(close) Column(SMA
) ) ) .set_markets(america) )大数据集分页处理方案处理大量数据时使用offsetlimit实现分页加载避免内存溢出# 分页获取1000条数据每页100条 all_results [] for page in range(
: total, df ( Query() .select(ticker, close, volume) .where(Column(volume) 1_000_
.offset(page *
.limit(
.get_scanner_data() ) all_results.append(df) if (page
* 100 total: break combined_df pd.concat(all_results, ignore_indexTrue)数据缓存与持久化方案将筛选结果保存到本地避免重复请求import pandas as pd from pathlib import Path CACHE_DIR Path(screener_cache) CACHE_DIR.mkdir(exist_okTrue) CACHE_FILE CACHE_DIR / daily_top_gainers.csv # 检查缓存是否存在且最新 if not CACHE_FILE.exists() or (pd.Timestamp.now() - pd.Timestamp(CACHE_FILE.stat().st_mtime, units)).days 1: # 缓存不存在或过期重新获取数据 _, results_df ( Query() .select(ticker, name, close, change) .where(Column(change)
.order_by(change, ascendingFalse) .limit(
.get_scanner_data() ) results_df.to_csv(CACHE_FILE, indexFalse) else: # 使用缓存数据 results_df pd.read_csv(CACHE_FILE)行业解决方案与实战案例场景一加密货币市场监控系统结合加密货币市场特性构建实时监控方案crypto_scanner ( Query() .select(ticker, close, volume, change) .set_markets(crypto) .where( Column(volume) 10_000_000, Column(change) 2 ) .order_by(change, ascendingFalse) ) # 定时执行监控 import time while True: total, df crypto_scanner.get_scanner_data() print(f当前涨幅超过2%的加密货币: {total}个) print(df.head()) time.sleep(
# 每5分钟更新一次场景二多指数成分股对比分析同时分析多个指数成分股发现市场趋势index_comparison ( Query() .select(ticker, name, close, market_cap_basic, PE) .set_index(SYML:SP;SPX, SYML:TVC;UKX) # 标普500和英国富时100 .where(Column(PE)
.order_by(market_cap_basic, ascendingFalse) ) total, df index_comparison.get_scanner_data() # 按指数分组比较估值水平 df[index] df[ticker].apply(lambda x: SP 500 if x.startswith((NYSE:, NASDAQ:)) else FTSE
print(df.groupby(index)[PE].describe())最佳实践与
注意事项数据请求优化建议合理设置请求频率避免短时间内大量请求建议间隔至少30秒精简返回字段只选择需要的列减少数据传输量使用缓存机制对非实时数据进行本地缓存降低API负载错误处理与稳定性保障def safe_get_scanner_data(query, max_retries
: retries 0 while retries max_retries: try: return query.get_scanner_data() except Exception as e: retries 1 if retries max_retries: print(f获取数据失败: {e}) return (0, pd.DataFrame()) print(f重试第{retries}次...) time.sleep(2 ** retries) # 指数退避策略通过以上方法你可以充分利用TradingView-Screener构建专业的量化分析系统无论是个人投资决策还是机构级策略研发都能显著提升工作效率和数据准确性。
【免费下载链接】TradingView-ScreenerA package that lets you create TradingView screeners in Python项目地址: https://gitcode.com/gh_mirrors/tr/TradingView-Screener创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考