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

PineScript V5编写ADX+RSI多单策略遇'ta.adx'函数未找到错误求助

PineScript V5 仅做多策略报错修复及逻辑修正

问题概述

需要编写一个仅做多的PineScript V5策略,核心规则:

  • 当ADX高于46,且RSI处于超卖状态(≤20)时触发买入信号
  • 策略在日线周期表现更优,信号少但有效性高

编写的代码触发如下错误:

Error at 10:11 Could not find function or function reference 'ta.adx'

错误原因

报错根源是PineScript V5中ta.adx()的参数调用方式存在兼容性问题,且原代码的买入信号逻辑与需求不符:

  1. ta.adx(high, low, close, len)的函数签名在部分环境中可能无法识别,更可靠的方式是通过ta.dmi()获取ADX值
  2. 原代码中买入信号的RSI条件为20 ≤ RSI < 35,与需求的「RSI≤20超卖」不符

修复方案与修正后代码

步骤1:替换ADX获取方式

使用ta.dmi()函数直接获取ADX值(该函数同时返回+DI、-DI和ADX),避免参数调用错误:

_, _, adx_val = ta.dmi(adx_length)

步骤2:修正买入信号逻辑

将RSI条件改为RSI ≤ 20,匹配超卖买入的需求;同时将ADX阈值调整为需求的46。

完整修正代码

//@version=5
strategy("仅做多ADX+RSI策略", overlay=true)

// ADX参数设置
adx_length = input(14, title="ADX周期")
adx_threshold = input(46, title="ADX阈值")
_, _, adx_val = ta.dmi(adx_length)

// RSI参数设置
rsi_length = input(14, title="RSI周期")
rsi_oversold_level = input(20, title="RSI超卖阈值")
rsi_val = ta.rsi(close, rsi_length)

// 生成买入信号
buy_signal = adx_val > adx_threshold and rsi_val <= rsi_oversold_level

// 执行多单入场
if (buy_signal)
    strategy.entry("多单", strategy.long)

// 绘制买入信号标记
plotshape(buy_signal, title="买入信号", shape=shape.triangleup, location=location.belowbar, color=color.green, size=size.small)

额外说明

  • 建议在日线周期运行该策略,以获得预期的低信号、高有效性表现
  • 代码中移除了原代码中未用到的RSI卖出阈值设置,保持逻辑简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 12:25:00