功能

TradingView 数据

拉取 TradingView 股票、期货、加密货币和外汇 K 线,并搜索交易标的

如何将 TradingView 数据导入 Python?vbt.TVData 使用 TradingView 自身的标的表示法,无需账户即可拉取股票、期货、加密货币、外汇和指数 K 线,并将其作为可直接用于指标和回测的数据对象返回。

Pull daily bars for six markets in one call and compare 2024
symbols = [
    "NASDAQ:AAPL", "CME_MINI:ES1!", "BINANCE:BTCUSDT",
    "TVC:DXY", "FX:EURUSD", "TVC:GOLD",
]
data = vbt.TVData.pull(symbols, timeframe="1D")  
year = data.loc["2024"]
first = year.close.apply(lambda s: s.dropna().iloc[0])
last = year.close.apply(lambda s: s.dropna().iloc[-1])
returns = (last / first - 1).round(4)
pd.DataFrame({"bars": year.close.notna().sum(), "return": returns})
                 bars  return
symbol
NASDAQ:AAPL       252  0.3490
CME_MINI:ES1!     252  0.2399
BINANCE:BTCUSDT   366  1.1181
TVC:DXY           259  0.0614
FX:EURUSD         260 -0.0534
TVC:GOLD          252  0.2747

一次调用返回了股票、连续期货合约、加密货币交易对、美元指数、货币对和黄金。每个市场保留自己的日历:2024 年比特币交易了全部 366 天,股票交易 252 天,外汇交易 260 天,因此上方每列分别统计自己的 K 线数。

从图表数据到 Python 研究

将您已在 TradingView 关注的标的用作 Python 策略输入。拉取后,data.close 提供跨标的价格,data.run 可基于可用 OHLCV 字段计算指标。将数据及入场、退出信号传给信号回测,再在同一流程中比较交易品种和参数选择。

这适合跨市场检验图表想法、构建指数成分股研究范围,或通过多时间周期分析将日频趋势与日内入场结合。

拉取 K 线

标的使用 TradingView 的 EXCHANGE:SYMBOL 表示法。可使用分钟、小时、日、周或月 K 线,例如 "1 minute"、"1 hour" 或 "1D"。如果 TradingView 提供秒级周期,适配器也能接受。tz 将索引转换为市场本地时间。价格默认进行拆股调整,adjustment 还可考虑股息,extended_session=True 则加入盘前和盘后 K 线。对于期货,fut_contract=1 返回近月连续合约,fut_contract=2 返回下一合约。通过 data = data.update() 刷新可用 K 线,并与已存历史合并。

没有起始日期参数。TradingView 提供最多 limit 根最近 K 线,因此应先拉取,再用 data.loc 选择所需时段,如上方选择 2024 年的示例。该类仅下载 K 线,不下载 TradingView 指标或策略数值。无法解析数据的错误通常意味着该标的或周期在相应交易所不存在;大规模拉取时可用 skip_on_error=True 跳过这类标的。

匹配您正在研究的图表

将指标或回测与 TradingView 图表比较前,请匹配数据选择:

图表设置VBT 输入
交易品种与交易所完整的 EXCHANGE:SYMBOL 标识符
K 线周期timeframe
常规或延长交易时段extended_session
拆股或股息调整adjustment
显示时区tz

即使公式完全相同,不同交易时段和复权设置也会改变指标。VBT 的技术指标和自定义指标让您从这些 K 线在 Python 中计算分析指标。

如果需要图表中已经算好的数值,TradingView 可将图表数据和指标导出为 CSV。通过 vbt.CSVData 或 Pandas 加载导出文件,保留其时间戳和指标列。存储页面介绍文件输入。这提供了将图表输出与 Python 计算比较的另一条途径。

查找交易标的

vbt.TVData.list_symbols 按模式、交易所或文本搜索 TradingView 标的;其市场扫描器可按市场、行业等字段值或指数成员身份列出标的:

List the members of the Nasdaq-100
ndx = vbt.TVData.list_symbols(groups=dict(index="NASDAQ:NDX"))
len(ndx), ndx[:5]
(101, ['NASDAQ:AAPL', 'NASDAQ:ABNB', 'NASDAQ:ADBE', 'NASDAQ:ADI', 'NASDAQ:ADP'])

该列表包含的是当前成分股,因此基于它构建过去多年的回测会带来幸存者偏差,详见真实回测页面。

您也可以请求行业、币种、市值等扫描器字段,并在下载 K 线前筛选结果。设置 return_field_data=True 后,标的发现会连同标的名称返回这些字段,让您保留用于选择研究范围的信息。

历史数据与账户

TradingView 为每个标的提供的 K 线数量有限,因此历史深度取决于周期:日 K 线可追溯多年,而截至 2026 年 10 月 2 日,AAPL 的分钟 K 线约覆盖最近六周。VBT 默认最多请求 20,000 根 K 线。通过 client_config 使用您自己的 TradingView 用户名和密码或会话 token 登录,可使用账户拥有的访问权限。您可以在多次拉取间复用已认证的 TVClient,无需每次创建新客户端。TradingView 的交易所数据订阅独立于 VBT PRO,TradingView 表示其付费方案不包含交易所数据费用。

标准 TVData 拉取获取最近 K 线,不会自动操作 TradingView 的 Bar Replay,也不会向前翻页获取全部图表历史。更新会重新请求最近窗口并合并到现有对象。对于较长日内历史,市场数据源页面中的商业提供商更合适;数据存储与数据库则帮助您持续积累下载数据。

使用条款

TradingView 数据受其使用条款约束。条款要求时请使用您自己的账户,在将数据用于个人研究之外的用途前也请检查条款。

TradingView

✅ 现在提供专用于从 TradingView 拉取数据的新类。

Pull 1-minute AAPL data
data = vbt.TVData.pull(
    "NASDAQ:AAPL",
    timeframe="1 minute",
    tz="US/Eastern"
)
data.get()
                             Open    High     Low   Close   Volume
datetime
2022-12-05 09:30:00-05:00  147.75  148.31  147.50  148.28  37769.0
2022-12-05 09:31:00-05:00  148.28  148.67  148.28  148.49  10525.0
2022-12-05 09:32:00-05:00  148.50  148.73  148.30  148.30   4860.0
2022-12-05 09:33:00-05:00  148.25  148.73  148.25  148.64   5306.0
2022-12-05 09:34:00-05:00  148.62  148.97  148.52  148.97   5808.0
...                           ...     ...     ...     ...      ...
2023-01-17 15:55:00-05:00  135.80  135.91  135.80  135.86  37573.0
2023-01-17 15:56:00-05:00  135.85  135.88  135.80  135.88  18796.0
2023-01-17 15:57:00-05:00  135.88  135.93  135.85  135.91  21019.0
2023-01-17 15:58:00-05:00  135.90  135.97  135.89  135.95  20934.0
2023-01-17 15:59:00-05:00  135.94  136.00  135.84  135.94  86696.0

[11310 rows x 5 columns]

版权所有 © 2021–2026 Oleg Polakow。保留所有权利。

本站内容与文档供使用和评估 VectorBT PRO 以及教育用途。任何其他用途,包括开发或支持竞争产品或服务,均须事先取得书面同意。