如何让TradingView代码拉取指定时间周期数据并为PineScript添加MTF功能
TradingView 技术问题实现方案
1. 从TradingView拉取指定时间周期交易数据的实现思路
分两种场景处理:
- TradingView Pine Script生态内拉取
直接调用内置request.security()函数即可实现,核心参数配置如下:- 第1位参数填标的ID,用
syminfo.tickerid默认取当前页面标的 - 第2位参数填目标周期字符串,支持的常用值:
"1"(1分钟)、"15"(15分钟)、"4H"(4小时)、"D"(日线)、"W"(周线) - 第3位参数填要拉取的字段,比如收盘价
close、自定义指标计算结果等
示例代码:
// 拉取当前标的4小时级别的收盘价 tf_4h_close = request.security(syminfo.tickerid, "4H", close) - 第1位参数填标的ID,用
- 外部系统通过API拉取
需先申请TradingView官方开放API权限,调用历史K线接口时指定resolution参数为目标周期,同时传入from、to时间戳限定拉取的时间范围即可。注意不要通过爬虫爬取页面数据,容易触发IP封禁,也不符合平台使用规则。
2. Pine Script中添加MTF多时间框架功能的实现思路
MTF功能的核心是不同周期数据的对齐调用,具体步骤如下:
- 第一步:配置可自定义的多周期参数,建议用
input.timeframe()做成交互项,方便用户自行切换参考周期,示例:mtf_ref_tf = input.timeframe("4H", title="MTF参考周期") - 第二步:拉取参考周期下的目标指标数据,调用
request.security()时必须加barmerge.lookahead_off参数,避免引入未来函数导致回测结果失真,示例是在当前周期图上加载参考周期的MA20指标:mtf_ma20 = request.security(syminfo.tickerid, mtf_ref_tf, ta.sma(close, 20), barmerge.lookahead_off) - 第三步:可视化处理,可直接将高周期指标绘制在主图上区分显示,也可在副面板单独展示高周期的指标走势或数值,示例绘制代码:
plot(mtf_ma20, color=color.new(color.blue, 0), title="4小时MA20", linewidth=2) - 注意事项:同一脚本内调用的不同周期不要超过5个,否则会降低脚本运行效率,甚至触发平台的脚本性能限制。
内容的提问来源于stack exchange,提问作者JPWeb
相关产品推荐
相关产品推荐

