如何用TradingView Pine Script在单窗口同时获取1H/2H/4H周期DI+、DI-、ADX值
实现多周期ADX/DI指标的Pine Script修改方案
核心修改逻辑
- 用Pine V5内置的
request.security()函数跨周期获取1H/2H/4H三个时间维度的指标数据 - 调整原有ADX函数的返回值,同时输出DI+、DI-、ADX三个指标结果
- 给不同周期的指标配置不同配色和命名,避免混淆,脚本独立在单独面板渲染,不会覆盖原有周期的任何指标
完整可运行代码
//@version=5 indicator("多周期ADX/DI(1H/2H/4H)", shorttitle="Multi TF ADX", precision=2, overlay=false) // 通用参数设置 adx_smooth = input.int(14, title="ADX平滑周期", minval=1) di_length = input.int(14, title="DI计算周期", minval=1) // 核心指标计算函数 calc_dirmov(len) => up = ta.change(high) down = -ta.change(low) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truerange = ta.rma(ta.tr, len) plus = ta.fixnan(100 * ta.rma(plusDM, len) / truerange) minus = ta.fixnan(100 * ta.rma(minusDM, len) / truerange) [plus, minus] calc_adx(di_len, adx_smooth_len) => [plus, minus] = calc_dirmov(di_len) sum = plus + minus adx_val = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adx_smooth_len) [plus, minus, adx_val] // 跨周期获取三个时间维度的指标数据 [di_plus_1h, di_minus_1h, adx_1h] = request.security(syminfo.tickerid, "60", calc_adx(di_length, adx_smooth)) [di_plus_2h, di_minus_2h, adx_2h] = request.security(syminfo.tickerid, "120", calc_adx(di_length, adx_smooth)) [di_plus_4h, di_minus_4h, adx_4h] = request.security(syminfo.tickerid, "240", calc_adx(di_length, adx_smooth)) // 绘制1H周期指标 plot(di_plus_1h, color=color.new(color.red, 0), title="1H DI+", linewidth=1) plot(di_minus_1h, color=color.new(color.red, 30), title="1H DI-", linewidth=1) plot(adx_1h, color=color.new(color.red, 60), title="1H ADX", linewidth=2) // 绘制2H周期指标 plot(di_plus_2h, color=color.new(color.blue, 0), title="2H DI+", linewidth=1) plot(di_minus_2h, color=color.new(color.blue, 30), title="2H DI-", linewidth=1) plot(adx_2h, color=color.new(color.blue, 60), title="2H ADX", linewidth=2) // 绘制4H周期指标 plot(di_plus_4h, color=color.new(color.green, 0), title="4H DI+", linewidth=1) plot(di_minus_4h, color=color.new(color.green, 30), title="4H DI-", linewidth=1) plot(adx_4h, color=color.new(color.green, 60), title="4H ADX", linewidth=2)
使用说明
- 脚本默认在独立的指标面板渲染,和你主图/其他面板的原生ADX指标互不影响,不会覆盖原有数据
- 同一色系的三条线对应同一个周期:红色系是1H、蓝色系是2H、绿色系是4H,同色系中最亮的是DI+、中等亮度是DI-、最暗的是ADX
- 你可以直接在参数设置里修改ADX平滑周期和DI计算周期,三个时间维度的参数会同步生效
内容的提问来源于stack exchange,提问作者magarciaro
相关产品推荐
相关产品推荐

