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()的参数调用方式存在兼容性问题,且原代码的买入信号逻辑与需求不符:
ta.adx(high, low, close, len)的函数签名在部分环境中可能无法识别,更可靠的方式是通过ta.dmi()获取ADX值- 原代码中买入信号的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
相关产品推荐
相关产品推荐

