You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求协助将PineScript v2版本ADX脚本转换为v4版本

PineScript v2 转 v4:ADX 脚本转换完成版

转换后的完整v4代码

//@version=4
study("ADX", overlay=false)
len = input(title="Length", type=input.integer, defval=3)
len1 = input(title="Length1", type=input.integer, defval=1)
th = input(title="threshold", type=input.integer, defval=20)

TrueRange = ta.max(ta.max(high-low, math.abs(high-nz(close[1]))), math.abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? ta.max(high-nz(high[1]), 0) : 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? ta.max(nz(low[1])-low, 0) : 0

var float SmoothedTrueRange = na
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
var float SmoothedDirectionalMovementPlus = na
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
var float SmoothedDirectionalMovementMinus = na
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus

DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = math.abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = ta.sma(DX, len)

crosscall = DIPlus > DIMinus
crossput = DIMinus > DIPlus
DIPcross = ta.sma(crosscall ? 1.0 : 0.0, len1)
DIPput = ta.sma(crossput ? 1.0 : 0.0, len1)
DIPOVB = DIPlus > 60
DIMOVS = DIMinus > 60

bgcolor(DIMOVS ? color.lime : na, transp=40)
bgcolor(DIPOVB ? color.orange : na, transp=20)
plot(DIPlus, color=color.green, linewidth=3, title="DI+")
plot(DIMinus, color=color.red, linewidth=3, title="DI-")
plot(ADX, color=color.white, linewidth=1, title="ADX")
hline(th, color=color.white, linewidth=1, linestyle=hline.style_dashed)
bgcolor(DIPcross > 0 ? color.new(color.green, 60) : na)
bgcolor(DIPput > 0 ? color.new(color.red, 60) : na)

核心转换要点

  • 版本与基础声明:更新版本标识为//@version=4,显式声明overlay=false明确指标独立显示
  • 输入参数规范:将v2的type=integer替换为v4标准的input.integer类型
  • 函数命名空间:v4对内置函数做了分类,max→ta.max、abs→math.abs、sma→ta.sma,需加上对应命名空间前缀
  • 循环变量初始化:对于自引用的平滑变量(如SmoothedTrueRange),必须用var关键字声明,确保仅初始化一次
  • 布尔值处理:v4的sma不支持直接计算布尔值,需将crosscall/crossput转换为1.0(真)/0.0(假)的数值后再计算均线
  • 颜色系统更新:v4颜色需使用color.前缀,如lime→color.lime,背景色透明度可通过color.new()或transp参数设置

内容的提问来源于stack exchange,提问作者LJ2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 13:35:22