用 Python 接入 TradingView Screener 做多维选股
量化里最花时间的,往往不是写策略,而是把候选标的先筛出来。TradingView-Screener 正好适合干这件事:它把 TradingView 的筛选能力包成了 Python 接口,技术指标、基础面字段、市场范围都能直接组合,适合做盘前扫描、日内监控和一些轻量级的多因子筛选。
盘前涨幅监控
早盘要盯的东西多,手工切来切去很慢。用 Query API 先把条件定住,能省不少事。
先引入核心类:
from tradingview_screener import Query, Column
然后构建一个盘前涨幅筛选器,限制涨幅、成交量和市值:
pre_market_query = (
Query()
.select('name', 'close', 'change', 'volume', 'market_cap_basic')
.where(
Column('change') > 3, # 涨幅超过 3%
Column('volume') > 500000, # 成交量大于 50 万
Column('market_cap_basic').between(1000000000, 10000000000) # 市值 10 亿 -100 亿
)
.order_by('change', ascending=False)
.limit(20)
)
执行查询并查看结果:
total_count, results = pre_market_query.get_scanner_data()
print(f"发现{total_count}个符合条件的标的")
print(results[['ticker', 'name', 'change']])
这类筛选适合盘前找热点,但盘前流动性经常不稳定,筛出来不代表能直接交易,开盘后的成交情况还是要再看一眼。
技术指标多因子筛选
如果策略更偏技术面,TradingView 内置指标能少写很多重复计算。下面这个例子把 RSI、MACD 和成交量放在一起用。
technical_query = (
Query()
.select('name', 'close', 'RSI', 'MACD.macd', , )
.where(
Column() < ,
Column().crosses_above(Column()),
Column() > Column() *
)
.set_markets(, )
.limit()
)

